私は次のdivを持っています
<div id="over" style="position:absolute; width:100%; height:100%>
<img src="img.png">
</div>
divの中央と中央に配置されるように画像を配置する方法は?
私は次のdivを持っています
<div id="over" style="position:absolute; width:100%; height:100%>
<img src="img.png">
</div>
divの中央と中央に配置されるように画像を配置する方法は?
回答:
body {
margin: 0;
}
#over img {
margin-left: auto;
margin-right: auto;
display: block;
}
<div id="over" style="position:absolute; width:100%; height:100%">
<img src="http://www.garcard.com/images/garcard_symbol.png">
</div>
display: block;
私の落とし穴だった。TnX
display: block
、デフォルトのですdisplay: inline
に従ってw3schools.com/cssref/pr_class_display.asp。なぜブロックを使用する必要があるのですか?私は私のために働いたが、なぜブロックがimgを中央揃えにし、インラインが中央揃えしないのかはわからない。
<div style="display:table-cell; vertical-align:middle; text-align:center">
<img src="img.png">
</div>
これは、フレックスボックスレイアウトを使用して行うこともできます。
静的サイズ
.parent {
display: flex;
height: 300px; /* Or whatever */
background-color: #000;
}
.child {
width: 100px; /* Or whatever */
height: 100px; /* Or whatever */
margin: auto; /* Magic! */
}
<div class="parent">
<img class="child" src="https://i.vimeocdn.com/portrait/58832_300x300"/>
</div>
ダイナミックサイズ
html, body {
width: 100%;
height: 100%;
display: flex;
background-color: #999;
}
* {
margin: 0;
padding: 0;
}
.parent {
margin: auto;
background-color: #000;
display: flex;
height: 80%;
width: 80%;
}
.child {
margin: auto; /* Magic! */
max-width: 100%;
max-height: 100%;
}
<div class="parent">
<img class="child" src="https://i.vimeocdn.com/portrait/58832_300x300"/>
</div>
この記事の例を見つけました。これは、レイアウトの使用方法を説明する素晴らしい仕事をします。
また、その画像をコンテナ内で垂直方向に中央揃えにしたいと思っていたようです。(私はそれを提供する答えを見なかった)
HTML
<div id="over">
<span class="Centerer"></span>
<img class="Centered" src="http://th07.deviantart.net/fs71/200H/f/2013/236/d/b/bw_avlonas_a5_beach_isles_wallpaper_image_by_lemnosexplorer-d6jh3i7.jpg" />
</div>
CSS
*
{
padding: 0;
margin: 0;
}
#over
{
position:absolute;
width:100%;
height:100%;
text-align: center; /*handles the horizontal centering*/
}
/*handles the vertical centering*/
.Centerer
{
display: inline-block;
height: 100%;
vertical-align: middle;
}
.Centered
{
display: inline-block;
vertical-align: middle;
}
注:このソリューションは、任意の要素内の任意の要素を整列させるのに適しています。IE7の場合、.Centered
クラスをブロック要素に適用するときは、別のトリックを使用して機能させる必要がありますinline-block
。(IE6 / IE7がブロック要素のインラインブロックでうまく機能しないため)
#over { position:absolute; width:100%; height:100%;
?
これは、display:flex cssプロパティを使用して簡単に行うことができます。
#over {
height: 100%;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
}
#over {position:relative; text-align:center;
width:100%; height:100%; background:#CCC;}
#over img{
position: absolute;
margin: auto;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
ここに提示された他のソリューションにはまだ問題がいくつかありました。最後に、これは私にとって最もうまくいきました:
<div class="parent">
<img class="child" src="image.png"/>
</div>
css3:
.child {
display: block;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%); /* Safari and Chrome */
-moz-transform: translate(-50%, -50%); /* Firefox */
-ms-transform: translate(-50%, -50%); /* IE 9 */
-o-transform: translate(-50%, -50%); /* Opera */
// I suppose you may like those too:
// max-width: 80%;
// max-height: 80%;
}
このアプローチについて詳しくは、このページをご覧ください。
これはより簡単なアプローチでしょう
#over > img{
display: block;
margin:0 auto;
}
Daaawxの答えは機能しますが、インラインCSSを削除すればよりクリーンになると思います。
body {
margin: 0;
}
#over img {
margin-left: auto;
margin-right: auto;
display: block;
}
div.example {
position: absolute;
width: 100%;
height: 100%;
}
<div class="example" id="over">
<img src="http://www.garcard.com/images/garcard_symbol.png">
</div>
設定IMGをするインラインブロック:ディスプレイ優れ設定ながらDIVの中心:テキスト整列をあまりにも仕事をします
編集:display:inline-blockで遊んでいる人たちへ>>>次のような2つのdivを忘れないでください
<div>Div1 content</div>NOSPACEHERE<div>Div2 content</div>
(ここに見られるように)それらの間に本当にスペースはありません。
それらの間のこれらの(インラインブロック固有の)ギャップを回避するための基本です。これらのギャップは、私が今書いている2つの単語の間に見ることができます!:-)だから..これがあなたの一部に役立つことを願っています
シンプル。2018. FlexBox。ブラウザのサポートを確認するには-
最小限のソリューションを使用できますか
:
div#over {
display: flex;
justify-content: center;
align-items: center;
}
可能な限り幅広いブラウザーサポートを取得するには:
div#over {
display: -webkit-flex;
display: -ms-flex;
display: flex;
justify-content: center;
-ms-align-items: center;
align-items: center;
}
私は多くのアプローチを試しましたが、これはコンテナdiv内の複数のインライン要素に対してのみ機能します。divのすべてを中央に配置するコードを次に示します。
.divContainer
{
vertical-align: middle;
text-align: center; <!-- If you want horizontal center alignment -->
}
.divContainer > *
{
vertical-align: middle;
}
<div class="divContainer">
<span>Middle Text</span>
<img src="test.png"/>
</div>
サンプルコードはこちら:https : //jsfiddle.net/yogendrasinh/2vq0c68m/
さて、私たちは2016年にいます... flexboxを使用してみませんか?また、応答性にも優れています。楽しい。
#over{
display:flex;
align-items:center;
justify-content:center;
}
<div id="over">
<img src="http://www.garcard.com/images/garcard_symbol.png">
</div>
HTML:
<div id="over">
<img src="img.png">
</div>
CSS:
#over {
text-align: center;
}
#over img {
vertical-align: middle;
}
画像を中央揃えにする必要があり、親divが画像全体を覆っている場合、これは私にとってはうまくいきました。つまり、高さ:100%、幅:100%
#img{
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
}
位置決めを使用します。以下は私のために働いた...
画像の中心にズームすると(画像がdiv全体に表示されます):
div{
display:block;
overflow:hidden;
width: 70px;
height: 70px;
position: relative;
}
div img{
min-width: 70px;
min-height: 70px;
max-width: 250%;
max-height: 250%;
top: -50%;
left: -50%;
bottom: -50%;
right: -50%;
position: absolute;
}
画像の中心にズームしない場合(画像がdivを埋めません):
div{
display:block;
overflow:hidden;
width: 100px;
height: 100px;
position: relative;
}
div img{
width: 70px;
height: 70px;
top: 50%;
left: 50%;
bottom: 50%;
right: 50%;
position: absolute;
}
これに対するマークされた答えは、画像を垂直方向に揃えません。最新のブラウザに適したソリューションはflexboxです。フレックスコンテナーは、アイテムを水平方向と垂直方向の両方に配置するように構成できます。
<div id="over" style="position:absolute; width:100%; height:100%; display: flex; align-items: center; justify-content: center;">
<img src="img.png">
</div>
あなたはこのソリューションを見ることができます:
<style type="text/css">
.wraptocenter {
display: table-cell;
text-align: center;
vertical-align: middle;
width: ...;
height: ...;
}
.wraptocenter * {
vertical-align: middle;
}
.wraptocenter {
display: block;
}
.wraptocenter span {
display: inline-block;
height: 100%;
width: 1px;
}
</style>
<!--[if lt IE 8]-->
<style>
.wraptocenter span {
display: inline-block;
height: 100%;
}
</style>
<!--[endif]-->
<div class="wraptocenter"><span></span><img src="..." alt="..."></div>
簡単な方法は、divと画像の両方に個別のスタイルを作成し、それらを個別に配置することです。たとえば、画像の位置を50%に設定したい場合、次のようなコードが必要です。
#over{
position:absolute;
width:100%;
height:100%;
}
#img{
position:absolute;
left:50%;
right:50%;
}
<div id="over">
<img src="img.png" id="img">
</div>
これは動作するはずです。
テストの重要性:コードスニペットを実行するには、左ボタンの[コードスニペットを実行]をクリックし、次にページ全体を右クリックします。
#fader{
position:fixed;z-index: 10;
top:0;right:0;bottom:0;left:0;
opacity: 0.8;background: black;
width:100%;height:100%;
text-align: center;
}
.faders{display:inline-block;height:100%;vertical-align:middle;}
.faderi{display:inline-block;vertical-align:middle;}
<div id="fader">
<span class="faders"></span>
<img class="faderi" src="https://i.stack.imgur.com/qHF2K.png" />
</div>