2017-11-18 10 views
1

で同じ水平線で共通のdiv内の中心画像とラベルを揃える:は垂直、私は私のページでは、この次のHTMLコードを持っている任意のブラウザ

<div class="container"> (Can't have static height) 
    <img></img> (Has variable height) 
    <label></label> (Has variable length) 
</div> 

私は垂直方向に同じラインでそれらの両方を揃えたいです任意のブラウザに適用されます。標準的な方法で可能なら、どうすればいいですか? この問題を解決するために多くの記事を検索して読みましたが、うまく機能しませんでした。

編集:この場合の「コンテナ」divは、ページのメインコンテナdivではなく、その上に他の3つの親があり、その位置には影響しません。

+0

あなたは何を試していますか? – SaidbakR

+0

私は "margin:auto;"を設定しました。コンテナdivの場合は "vertical-align:center;"ある意味では内部コンテンツのために "text-align:center; padding:auto;"を設定していますなど。 –

答えて

1

あなたはを追加することにより、フレックス使用することができます。前:中央に常に画像/テキストを行いますflex:1後。そして、あなたは彼らがこのように同じ列に整列させるために、画像やテキストのために再びフレックス使用することができます。

は、より良い結果を見るためにページ全体を行く

* { 
 
    box-sizing: border-box; 
 
} 
 

 
body { 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 

 
.page { 
 
    display: flex; 
 
    flex-direction: column; 
 
    align-items: center; 
 
    height: 100vh; 
 
} 
 

 
.page:before, 
 
.page:after { 
 
    content: " "; 
 
    flex: 1; 
 
} 
 

 
.container { 
 
    display: flex; 
 
    align-items: center; 
 
} 
 

 
label { 
 
    padding: 5px; 
 
}
<div class="page"> 
 
    <div class="container"> 
 
    <img src="https://lorempixel.com/200/200/"> 
 
    <label>text</label> 
 
    </div> 
 
</div>

+0

ありがとうございます@ TeemAfifI。しかし、私は、この2つのコンテンツの中心を垂直線ではなく、同じ水平線で垂直に揃えたい。また、私はそれがすべてのブラウザで動作します。 –

+0

@MiladRashidiあなたはそれらを並べて欲しいという意味ですか? –

+0

@MiladRashidi ok私は1行で答えるように更新しました。これは大丈夫ですか? –

0

あなたは可能性がありtext-align,displayおよびline-heightを次のように使用してください。

<style> 
    .container{ 
     text-align: center; 
    } 
    .container label{ 
     display: block;  
     line-height: 0; /*To stick the label under the bottom edge of the image*/ 
    } 
    .container img{ 
     display: inline-block; 
    } 
    </style> 

これをチェックアウトDEMO

+0

@SaidbakRありがとうございます。私はあなたのソリューションを試しましたが、うまく機能しませんでした。また、イメージとラベルを同じ行に水平に整列させて、ラベルを画像の隅に配置しないようにする必要があります。 –

+0

幸運にも、あなたの質問から私が理解している「*同じ行の縦に*適用された*」。あなたはそれを使ってデモをテストしたブラウザを私に教えてください。 @MiladRashidi – SaidbakR

関連する問題