画像を水平方向に中央揃えし、同時にコンテナの下部に揃えるにはどうすればよいですか?
私は自分自身で画像を水平方向に中央揃えすることができました。また、コンテナの底面を自分で調整することもできました。しかし、私は両方を同時に行うことはできませんでした。
ここに私が持っているものがあります:
.image_block {
width: 175px;
height: 175px;
position: relative;
margin: 0 auto;
}
.image_block a img {
position: absolute;
bottom: 0;
}
<div class="image_block">
<a href="..."><img src="..." border="0"></a>
</div>
そのコードは、画像をdivの下部に揃えます。 div内で画像を水平に中央揃えにするために追加/変更する必要があるものは何ですか?画像サイズは事前にはわかりませんが、175x175以下です。
.image_block {
width: 175px;
height: 175px;
position: relative;
}
.image_block a {
width: 100%;
text-align: center;
position: absolute;
bottom: 0px;
}
.image_block img {
/* nothing specific */
}
説明:絶対に配置された要素は、非静的な配置を持つ最も近い親に対して相対的です。 .image_block
の表示方法に満足していると思われるので、相対的な位置はそのままにしておきます。
そのため、<a>
要素は.image_block
に対して相対的に配置され、下部の配置を提供します。次に、text-align: center
<a>
要素を使用し、.image_block
のサイズになるように100%の幅を与えます。
<img>
内の<a>
が適切に中央に配置されます。
これも機能します(これからヒントを得ました 質問 )
.image_block {
height: 175px;
width:175px;
position:relative;
}
.image_block a img{
margin:auto; /* Required */
position:absolute; /* Required */
bottom:0; /* Aligns at the bottom */
left:0;right:0; /* Aligns horizontal center */
max-height:100%; /* images bigger than 175 px */
max-width:100%; /* will be shrinked to size */
}
しません
margin-left:auto;
margin-right:auto;
.image_block
に追加されました。
IE6では動作しないことに注意してください(おそらく7不明).image_block
コンテナDivで行う必要があります
text-align:center;
position:relative;
も問題になる可能性があります。
これには注意が必要です。それが失敗する理由は、絶対に配置されている間は、マージンまたはテキスト揃えで配置できないことです。
画像がdiv内で単独の場合、次のようなものをお勧めします。
.image_block {
width: 175px;
height: 175px;
line-height: 175px;
text-align: center;
vertical-align: bottom;
}
代わりに、vertical-align
呼び出しを画像に貼り付ける必要があります。テストせずに本当に確かではありません。ただし、vertical-align
とline-height
を使用する方が、絶対位置を調整するよりもはるかに適切に処理できます。
position: relative;
行を削除します。正確な理由はわかりませんが、修正されています。
やってみました:
.image_block{
text-align: center;
vertical-align: bottom;
}
#header2
{
display: table-cell;
vertical-align: bottom;
background-color:Red;
}
<div style="text-align:center; height:300px; width:50%;" id="header2">
<div class="right" id="header-content2">
<p>this is a test</p>
</div>
</div>