div内で画像を垂直方向に配置する方法


1456

コンテナ内で画像をどのように配置できますdivか?

私の例<img>では<div>class ="frame「:

<div class="frame" style="height: 25px;">
    <img src="http://jsfiddle.net/img/logo.png" />
</div>

.frameの高さは固定されており、画像の高さは不明です。それが.frame唯一の解決策であれば、新しい要素を追加できます。Internet Explorer 7以降、WebKit、Geckoでこれを実行しようとしています。

こちらのjsfiddleを参照してください

.frame {
    height: 25px;      /* Equals maximum image height */
    line-height: 25px;
    width: 160px;
    border: 1px solid red;

    text-align: center;
    margin: 1em 0;
}
img {
    background: #3A6F9A;
    vertical-align: middle;
    max-height: 25px;
    max-width: 160px;
}
<div class=frame>
   <img src="http://jsfiddle.net/img/logo.png" height=250 />
</div>
<div class=frame>
   <img src="http://jsfiddle.net/img/logo.png" height=25 />
</div>
<div class=frame>
   <img src="http://jsfiddle.net/img/logo.png" height=23 />
</div>
<div class=frame>
   <img src="http://jsfiddle.net/img/logo.png" height=21 />
</div>
<div class=frame>
   <img src="http://jsfiddle.net/img/logo.png" height=19 />
</div>
<div class=frame>
    <img src="http://jsfiddle.net/img/logo.png" height=17 />
</div>
<div class=frame>
    <img src="http://jsfiddle.net/img/logo.png" height=15 />
 </div>
<div class=frame>
    <img src="http://jsfiddle.net/img/logo.png" height=13 />
 </div>
<div class=frame>
    <img src="http://jsfiddle.net/img/logo.png" height=11 />
 </div>
<div class=frame>
    <img src="http://jsfiddle.net/img/logo.png" height=9 />
 </div>
<div class=frame>
    <img src="http://jsfiddle.net/img/logo.png" height=7 />
 </div>
<div class=frame>
    <img src="http://jsfiddle.net/img/logo.png" height=5 />
 </div>
<div class=frame>
    <img src="http://jsfiddle.net/img/logo.png" height=3 />
 </div>


3
こんにちは、申し訳ありませんが、ここで最も評価されたソリューションであるヘルパーを使用することに同意しません。しかし、それが唯一の方法ではありません。その他はブラウザでサポートされています。情報については、stackoverflow.com / a / 43308414/7733724およびW3C.orgで解決策を提供しています。確認できます。乾杯
サム

W3Cに関するCentering
QMaster

回答:


2128

私が知っている唯一の(そして最高のクロスブラウザ)方法は、 inline-blockとヘルパーをheight: 100%し、vertical-align: middle両方の要素に。

だから解決策があります:http : //jsfiddle.net/kizu/4RPFa/4570/

または、最新のブラウザーで追加の要素を使用せず、Internet Explorerの式を使用してもかまわない場合は、疑似要素を使用し、要素ごとに1回だけ実行される便利な式を使用してInternet Explorerに追加できます。 、したがって、パフォーマンスの問題はありません:

ソリューション:beforeおよびexpression()Internet Explorerの:http://jsfiddle.net/kizu/4RPFa/4571/


使い方:

  1. 2つのinline-block要素が互いに近くにある場合、それぞれを他の側に揃えることができるので、vertical-align: middle次のようになります。

    2つの整列されたブロック

  2. 高さが固定されたブロック(pxemまたは別の絶対単位)がある場合、内部ブロックの高さを%

  3. したがって、高さを固定したブロックに1つinline-blockを追加するとheight: 100%、その中の別のinline-block要素(<img/>あなたの場合)が垂直方向に近くに整列します。

2
あなたは自分で見ることができます:jsfiddle.net/kizu/Pw9NLは -唯一のインラインボックスは、ボックスを生成しませんが、他のすべての場合は、[OK]を動作します。
kizu

3
とても良い答えです。私は間を意味し、インラインブロック要素間のスペースで苦しんでいた.frame.frame:beforeここで提案する解決策は、に追加するmargin-left: -4pxこと.frameです。お役に立てれば。
ミック

111
追加され<img src=""/><span></span>ヘルパーの内部に:がないことに注意してください。外です。私はこれに気づかないことで髪の毛すべてを引っ張ってきました。
ライアン

50
「ホワイトスペース:nowrap;」も追加する必要があるようです。フレームまたは画像とヘルパースパンの間に改行がある場合、問題が発生します。このソリューションがうまくいかない理由は、1時間かかりました。
juminoz 2014年

2
私の場合、画像のmax-heightとmax-widthは両方とも100%に設定されているため、画像はコンテナをスケーリングし、この方法は機能しませんでした。私の解決策は、これらの値を90%に変更することでした(私の場合は問題ありませんでした。別の状況では、それに応じてコンテナーをスケーリングする必要があるかもしれません)。また、画像の反対側にヘルパーを追加して、パディングがオンのままになるようにしました両方。
EricDubé2014

513

これは役に立つかもしれません:

div {
    position: relative;
    width: 200px;
    height: 200px;
}
img {
    position: absolute;
    top: 0;
    bottom: 0;
    margin: auto;
}
.image {
    min-height: 50px
}

74
画像を水平方向にも揃えたい場合は、left:0を追加します。右:0; to img
jameskind 2013

これはIE10で動作していないのですか?私はこれをいたるところで使用しています
Max Yari

また、(私にとっては)コンテナーdivで動作しますposition:fixed;
PJ Brunet

1
最も簡単でクリーンなソリューションのおかげです!
KDT

ありがとう!私のために働いた!!
アレクサンダーマリギン

486

matejkramnyのソリューションは良い出発点ですが、特大のイメージの比率は間違っています。

これが私のフォークです:

デモ:https : //jsbin.com/lidebapomi/edit?html,css,output

下見


HTML:

<div class="frame">
  <img src="foo"/>
</div>

CSS:

.frame {
    height: 160px; /* Can be anything */
    width: 160px; /* Can be anything */
    position: relative;
}
img {
    max-height: 100%;
    max-width: 100%;
    width: auto;
    height: auto;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    margin: auto;
}

特大の画像、たとえば2倍にズームできるようにこれを適応させる方法はありますか?
ジャスティン

中央揃えではなく垂直揃えの下部で機能させるには、どのコードを変更すればよいですか?
bobo 2016年

1
@boboは単に削除しtop: 0;ます。これにより、bottom: 0;垂直方向にのみ適用されます。
jomo 2016年

ベストアンサー!
user315338

278

3行のソリューション:

position: relative;
top: 50%;
transform: translateY(-50%);

これはすべてに適用されます。

ここから。


プレフィックス:-ms-または-webkit-(変換前)。w3schools.com/cssref/css3_pr_transform.asp
Jorge Orpinel 2015

3
IE9のプレフィックスが、IE8以下ではまったく機能しない:caniuse.com/#search=transformしかし、私の意見:IE8は気にしない
Reign.85

中央に配置される子がデバイス画面よりも高く、親がDOMの最初の子である場合に何が起こるか誰も気づきませんでした...?
tao

3
position: absolute;流れるような幅が必要なので使えないときはいいですね。
plong0

2
これまでの最高のソリューションは、フレックスボックスよりも優れており、ほとんどすべてのブラウザーが最新のものと古いものをサポートしています。これに賛成投票してください
albanx

141

純粋な CSSのソリューション:

.frame {
  margin: 1em 0;
  height: 35px;
  width: 160px;
  border: 1px solid red;
  position: relative;
}

img {
  max-height: 25px;
  max-width: 160px;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
  background: #3A6F9A;
}
<div class=frame>
  <img src="http://jsfiddle.net/img/logo.png" height=250 />
</div>
<div class=frame>
  <img src="http://jsfiddle.net/img/logo.png" height=25 />
</div>
<div class=frame>
  <img src="http://jsfiddle.net/img/logo.png" height=23 />
</div>
<div class=frame>
  <img src="http://jsfiddle.net/img/logo.png" height=21 />
</div>
<div class=frame>
  <img src="http://jsfiddle.net/img/logo.png" height=19 />
</div>
<div class=frame>
  <img src="http://jsfiddle.net/img/logo.png" height=17 />
</div>
<div class=frame>
  <img src="http://jsfiddle.net/img/logo.png" height=15 />
</div>
<div class=frame>
  <img src="http://jsfiddle.net/img/logo.png" height=13 />
</div>
<div class=frame>
  <img src="http://jsfiddle.net/img/logo.png" height=11 />
</div>
<div class=frame>
  <img src="http://jsfiddle.net/img/logo.png" height=9 />
</div>
<div class=frame>
  <img src="http://jsfiddle.net/img/logo.png" height=7 />
</div>
<div class=frame>
  <img src="http://jsfiddle.net/img/logo.png" height=5 />
</div>
<div class=frame>
  <img src="http://jsfiddle.net/img/logo.png" height=3 />
</div>

重要なもの

// position: relative; - in .frame holds the absolute element within the frame
// top: 0; bottom: 0; left: 0; right: 0; - this is key for centering a component
// margin: auto; - centers the image horizontally & vertically

IE5でも機能するガイドをここで紹介させてください(これまでに投稿で読んだ内容から差し引いたものです)webmasterworld.com/css/3350566.htm
Matej

このソリューションは良い出発点ですが、大きすぎる画像は間違った比率でサイズ変更されます。私の答えを見てください。
jomo 2013

@HansWürstchenええ、でも中心はポイントです。オーバーサイズになるかどうかはデザインの選択です。より多くのcssを追加する=より多くのクラッタ:)
Matej '27

1
それはしません@matejkramny 取得特大。あればイメージがある特大、それは間違っ比を有します。つまり、高さが伸びており、適切に見えません。
jomo 2013

✔うわー、これはオーバーフロー画像(ラッパーより大きい)で機能しますが、受け入れられた回答は機能しません。
セドリックライヘンバッハ2014年

120

より最新のソリューションで、レガシーブラウザをサポートする必要がない場合は、次のようにすることができます。

.frame {
    display: flex;
    /**
    Uncomment 'justify-content' below to center horizontally.
    ✪ Read below for a better way to center vertically and horizontally.
    **/

    /* justify-content: center; */
    align-items: center;
}

img {
    height: auto;

    /**
    ✪ To center this image both vertically and horizontally,
    in the .frame rule above comment the 'justify-content'
    and 'align-items' declarations,
    then  uncomment 'margin: auto;' below.
    **/

    /* margin: auto; */
}

/* Styling stuff not needed for demo */
.frame {
    max-width: 900px;
    height: 200px;
    margin: auto;
    background: #222;
}
p {
    max-width: 900px;
    margin: 20px auto 0;
}
img {
    width: 150px;
}
<div class="frame">
    <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/9988/hand-pointing.png">
</div>

これがペンです:http : //codepen.io/ricardozea/pen/aa0ee8e6021087b6e2460664a0fa3f3e


3
これは、コンテナの高さが設定されていない場合に特に便利です
Dave Barnett

またはalign-self個々のアイテムの場合
Michael

の問題align-selfは、フレックスアイテムが親コンテナの高さを伸ばすことです。
Ricardo Zea

101

このようにして、画像を垂直方向に中央揃えにすることができます(デモ):

div{
  height: 150px; // Internet Explorer 7 fix
  line-height: 150px;
}
img{
  vertical-align: middle;
  margin-bottom: 0.25em;
}

4
不思議なことに、私は自分の状況で承認された答えを得ることができませんでした(オーバーフローで画像をトリミングしていた:非表示)。これは完全に機能しました。
Luca Spiller

3
私はこれをChromeでテストしただけですが、行の高さが重要なようです。imgはアンカー(<a/>)の中にあるので、私はimgではなくdivにvertical-align属性を配置しました。
トッド価格

1
はい、受け入れられているソリューションよりもはるかに単純で、美しく機能します。私はまた、この解決策をjsfiddleで見つけました。
vdboor 14

1
どんな高さに対応すべきか知っているなら、これはかなりうまくいきます
KrekkieD

私の経験から、このソリューションはfont-size: 0forでのみ機能しdivます。非常に大きなコンテナの場合は見逃す可能性がありますdivが、100pxでimgが80pxの場合は数ピクセル低くなります。
alTus、2015

38

また、Flexboxを使用して正しい結果を得ることができます。

.parent {
  align-items: center; /* For vertical align */
  background: red;
  display: flex;
  height: 250px;
  /* justify-content: center; <- for horizontal align */
  width: 250px;
}
<div class="parent">
  <img class="child" src="https://cdn2.iconfinder.com/data/icons/social-icons-circular-black/512/stackoverflow-128.png" />
</div>


28

ある超簡単で溶液フレキシボックスは!

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

5
はい、しかしあなたはそれをすべての答えでほとんど見ることができません。他のすべての回答よりもはるかに簡単な解決策であるため、私はそれを簡単かつ明確に強調表示しようとしました。
BBlackwo 2016

これは私にとってもうまくいった最良の答えです。しかし、私の場合、フレーム内の「インラインフレックス」の方が効果的でした。その中の画像には、「vertical-align:middle」を追加しました。
ソフィークーパーマン

22

PIのCSSを次のように設定してみてください。 display: table-cell; vertical-align: middle;


私はさまざまな方法を見てきましたが、これは(2013年でも)新しい方法でした。
Mike Ebert

画像を中央に配置するためだけにテーブル内に配置するよりも優れています。
ジョナツ14

3
幅を100%にしたい場合、display:table-cellが常に正しくサイズ
調整さ

1
PI」とは
Peter Mortensen

18

以下のコードを試すことができます:

.frame{
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
}
<div class="frame" style="height: 25px;">
    <img src="http://jsfiddle.net/img/logo.png" />
</div>


14

背景画像ソリューション

画像要素を完全に削除し、クラスのdivの背景として設定しました .frame

http://jsfiddle.net/URVKa/2/

これは、少なくともInternet Explorer 8、Firefox 6、およびChrome 13で正常に動作します。

チェックしたところ、このソリューションは高さが25ピクセルを超える画像を縮小するようには機能しません。というプロパティがありますbackground-size要素のサイズを設定する Internet Explorer 7の要件と競合するのはCSS 3です。

このソリューションを使用する場合は、ブラウザーの優先順位をやり直して、使用可能な最良のブラウザー向けに設計するか、サーバー側のコードで画像のサイズを変更することをお勧めします。


非常に優れたソリューションですが、一部の画像はコンテナよりも大きいと予想されます。この場合は、それらにmax-height / max-widthを使用する予定でした。背景画像でこれを行う方法はありますか?
Arnaud Le Blanc

これは「.frame要素」ではなく、「。frameのクラスを持つdiv」です
JGallardo

画像の高さがフレームのdivの高さを超えていない場合は、これが最良かつ最も簡単なソリューションです...
efirat

13

あなたが持っていると想像してください

<div class="wrap">
    <img src="#">
</div>

そしてCSS:

.wrap {
    display: flex;
}
.wrap img {
    object-fit: contain;
}

うお!!フレックス本当にrulzzzz!ありがとうございました!
ペドロフェレイラ

子が親の全幅を占め、中央に垂直に配置されるようにする場合は、オブジェクトフィットカバーを使用します。css-tricks.com/snippets/css/a-guide-to-flexboxを参照して、フレックスボックスを使用して親内で画像を移動します
mattdlockyer

11

あなたはこれを行うことができます:

デモ

http://jsfiddle.net/DZ8vW/1

CSS

.frame {
    height: 25px;      /* Equals maximum image height */
    line-height: 25px;
    width: 160px;
    border: 1px solid red;

    text-align: center; 
    margin: 1em 0;
    position: relative; /* Changes here... */
}
img {
    background: #3A6F9A;
    max-height: 25px;
    max-width: 160px;
    top: 50%;           /* Here.. */
    left: 50%;          /* Here... */
    position: absolute; /* And here */
}    


JavaScript

$("img").each(function(){
    this.style.marginTop = $(this).height() / -2 + "px";
})

いいね。純粋なCSSソリューションの可能性はありますか?
Arnaud Le Blanc

残念ながら、テーブルを使用したり、古いバージョンのIEとの互換性を落としたりしない限り、できません。:(あなたが手の前に画像の正確なサイズを知っていたならば、それは異なることはなく、それだけではCSSでは不可能だということのないだろう。
ジョセフMarikle

@ジョセフどのようにテーブルで修正しますか?
Benjamin Udink ten Cate

@Benjamin Udink ten Cate乱雑ですが、次の方法で実行できます:jsfiddle.net/DZ8vW/2(これはお勧めしませんが、機能するはずです)
Joseph Marikle

1
まあ、それはarnaudsのニーズにぴったりです。JSはなく、CSSとHTMLのみ。
ベンジャミンウディンクテンケイト

11

http://jsfiddle.net/MBs64/

.frame {
    height: 35px;      /* Equals maximum image height */
    width: 160px;
    border: 1px solid red;
    text-align: center;
    margin: 1em 0;
    display: table-cell;
    vertical-align: middle;
}
img {
    background: #3A6F9A;
    display: block;
    max-height: 35px;
    max-width: 160px;
}

重要なプロパティはdisplay: table-cell;です.frameDiv.frameこれはインラインで表示されるため、ブロック要素でラップする必要があります。

これは、Firefox、Opera、Chrome、Safari、およびInternet Explorer 8(以降)で機能します。

更新

Internet Explorer 7の場合、CSS式を追加する必要があります。

*:first-child+html img {
    position: relative;
    top: expression((this.parentNode.clientHeight-this.clientHeight)/2+"px");
}

すごい。JavaScriptを回避するIE7のハックはありますか?
Arnaud Le Blanc、

よくわかりませんが、css式が役立つかもしれません。しかし、それらもJavaScriptです。唯一の違いは、jsではなくcssファイルに書き込むことです。
Webars、2011

はい、いい考えです。それはより管理しやすく(スクリプトは必要に応じて自動的に実行されます)、IE7のみを想定しているので問題ありません。
Arnaud Le Blanc

7

私の解決策:http : //jsfiddle.net/XNAj6/2/

<div class="container">
    <div class="frame">
        <img src="http://jsfiddle.net/img/logo.png" class="img" alt="" />
    </div>
</div>

.container {
    display: table;
    float: left;
    border: solid black 1px;
    margin: 2px;
    padding: 0;
    background-color: black;
    width: 150px;
    height: 150px;
}
.frame {
    display: table-cell;
    text-align: center;
    vertical-align: middle;
    border-width: 0;
}
.img {
    max-width: 150px;
    max-height: 150px;
    vertical-align: middle;
}

7

これは、codepenのこのデモに示されているように、最新のブラウザー(編集時は2016)で機能します。

.frame {
    height: 25px;
    line-height: 25px;
    width: 160px;
    border: 1px solid #83A7D3;          
}
.frame img {
    background: #3A6F9A;
    display:inline-block;
    vertical-align: middle;
}

画像にクラスを与えるか、継承を使用して中央に配置する必要のある画像をターゲットにすることが非常に重要です。この例では.frame img {}、のクラスを持つdivでラップされた画像のみ.frameがターゲットになるように使用しました。


ie7のみ。line-height:25pxを入力するだけです。
anglimasS

1
firefoxとchrome(jsfiddle.net/4RPFa/19)でも正しく位置合わせされていないようです
Arnaud Le Blanc

7

純粋なCSS http://jsfiddle.net/sandeep/4RPFa/72/でこのソリューションを試してください

多分それはあなたのHTMLの主な問題です。c lass&を定義するときに引用符を使用していませんimage heightHTMLで。

CSS:

.frame {
    height: 25px;      /* Equals maximum image height */
    width: 160px;
    border: 1px solid red;
    position: relative;
    margin: 1em 0;
    top: 50%;
    text-align: center;
    line-height: 24px;
    margin-bottom: 20px;
}

img {
    background: #3A6F9A;
    vertical-align: middle;
    line-height: 0;
    margin: 0 auto;
    max-height: 25px;
}

imgタグを回避すると、から3ピクセルから2ピクセルのスペースが残りtopます。今減少しますline-height、それは働いています。

CSS:

    .frame {
        height: 25px;      /* Equals maximum image height */
        width: 160px;
        border: 1px solid red;
        margin: 1em 0;
        text-align: center;
        line-height: 22px;
        *:first-child+html line-height:24px; /* For Internet Explorer 7 */
    }

    img {
        background: #3A6F9A;
        vertical-align: middle;
        line-height: 0;    
        max-height: 25px;
        max-width: 160px;
    }
@media screen and (-webkit-min-device-pixel-ratio:0) {
    .frame {
        line-height:20px; /* WebKit browsers */
    }

line-heightプロパティは、別のブラウザでは異なるレンダリングされます。したがって、異なるline-heightプロパティブラウザを定義する必要があります。

この例を確認してください:http : //jsfiddle.net/sandeep/4be8t/11/

line-heightブラウザーの違いについてこの例を確認してください:FirefoxとChromeでの入力高さの違い


2
動作しません(少なくともFirefoxでは)。欠落している引用の場合、これはHTML5で許可されています(ただし、jsfiddleでどのdoctypeが使用されているかはわかりません)
Arnaud Le Blanc

7

Internet Explorerについてはわかりませんが、FirefoxとChromeではimgdivコンテナにがある場合、次のCSSコンテンツが機能するはずです。少なくとも私にとってはうまくいきます:

div.img-container {
    display: table-cell;
    vertical-align: middle;
    height: 450px;
    width: 490px;
}

div.img-container img {
    max-height: 450px;
    max-width: 490px;
}

IE8 +、残念ながら。私にとっては問題ありませんが、他の人にとっては問題ないかもしれません。
TheCarver 2014年

display:table-cell;%を幅として受け入れないことにも注意してください
Mutmatt

7

テーブルとテーブルセルを使用したソリューション

テーブル/テーブルセルとして表示することで解決できる場合があります。たとえば、高速なタイトル画面。W3でもおすすめの方法です。W3C.orgのCentering a block or imageというこのリンクを確認することをお勧めします。

ここで使用されるヒントは次のとおりです。

  • テーブルとして表示される絶対配置コンテナ
  • テーブルセルとして表示される中央のコンテンツに垂直に配置

.container {
    position: absolute;
    display: table;
    width: 100%;
    height: 100%;
}
.content {
    display: table-cell;
    vertical-align: middle;
}
<div class="container">
  <div class="content">
    <h1 style="text-align:center">Peace in the world</h1>
 </div>
</div>

個人的には、この目的でヘルパーを使用することについて実際には同意しません。


6

私のために働く簡単な方法:

img {
    vertical-align: middle;
    display: inline-block;
    position: relative;
}

Google Chromeで非常にうまく機能します。別のブラウザで試してみてください。


6

次のようなテキストのほかに、コンテナ内の画像(ロゴの場合もあります)を中央に配置します。

ここに画像の説明を入力してください

基本的には画像をラップします

.outer-frame {
  border: 1px solid red;
  min-height: 200px;
  text-align: center; /* Only to align horizontally */
}

.wrapper{
  line-height: 200px;
  border: 2px dashed blue;
  border-radius: 20px;
  margin: 50px
}

img {
  /* height: auto; */
  vertical-align: middle;   /* Only to align vertically */
}
<div class="outer-frame">
  <div class="wrapper">
    some text
    <img src="http://via.placeholder.com/150x150">
  </div>
</div>


4

ピクセルサイズのマージンを使用できる場合は、に追加font-size: 1px;します.frame。ただし、.frame1em = 1pxになっていることを忘れないでください。つまり、余白をピクセル単位で設定する必要があります。

http://jsfiddle.net/feeela/4RPFa/96/

Operaの中心にはなりません…


3

私も同じ問題を抱えていました。これは私にとってはうまくいきます:

<style type="text/css">
    div.parent {
        position: relative;
    }

    img.child {
        bottom: 0;
        left: 0;
        margin: auto;
        position: absolute;
        right: 0;
        top: 0;
    }
</style>

<div class="parent">
    <img class="child">
</div>

実際、画像の「位置:修正済み」は私にとってはうまくいきました。私は、私の作品のどちらかではうまくいかなかったテーブルセル方式を提案している人々の多数の誤った答えに不満を感じていました。algreatによって提案された方法では、追加のコンテナも必要ありません。
Vasilios Paspalas 2014

2

あなたはこれを使うことができます:

 .loaderimage {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 60px;
    height: 60px;
    margin-top: -30px; /* 50% of the height */
    margin-left: -30px;
 }

1

特に、一部の古いブラウザーもターゲットにしているため、を使用tableしてtable-cellメソッドを実行すると、実行して結果を確認できるスニペットが作成されます。

.wrapper {
  position: relative;
  display: table;
  width: 300px;
  height: 200px;
}

.inside {
  vertical-align: middle;
  display: table-cell;
}
<div class="wrapper">
  <div class="inside">
    <p>Centre me please!!!</p>
  </div>
  <div class="inside">
    <img src="https://cdn2.iconfinder.com/data/icons/social-icons-circular-black/512/stackoverflow-128.png" />
  </div>
</div> 


0

私は中央揃えのためにパディングを使って遊んでいます。トップレベルの外部コンテナーのサイズを定義する必要がありますが、内部コンテナーのサイズを変更する必要があり、パディングをさまざまなパーセント値で設定できます。

jsfiddle

<div class='container'>
  <img src='image.jpg' />
</div>

.container {
  padding: 20%;
  background-color: blue;
}

img {
  width: 100%;
}

0

最善の解決策は

.block{
    /* Decor */
    padding:0 20px;
    background: #666;
    border: 2px solid #fff;
    text-align: center;
    /* Important */
    min-height: 220px;
    width: 260px;
    white-space: nowrap;
}
.block:after{
    content: '';
    display: inline-block;
    height: 220px; /* The same as min-height */
    width: 1px;
    overflow: hidden;
    margin: 0 0 0 -5px;
    vertical-align: middle;
}
.block span{
    vertical-align: middle;
    display: inline-block;
    white-space: normal;
}

0

これを使用してください:

position: absolute;
top: calc(50% - 0.5em);
left: calc(50% - 0.5em);
line-height: 1em;

そして、あなたは変えることができますfont-size


0

テキスト/タイトルの後にあり、両方がdiv内にある画像を揃えたいですか?

JSfiddleまたはRun Code Snippetを参照してください。

すべての要素(div、img、titleなど)にIDまたはクラスがあることを確認してください。

私にとっては、このソリューションはすべてのブラウザーで機能します(モバイルデバイスの場合は、コードを@mediaに適合させる必要があります)。

h2.h2red {
    color: red;
    font-size: 14px;
}
.mydivclass {
    margin-top: 30px;
    display: block;
}
img.mydesiredclass {
    margin-right: 10px;
    display: block;
    float: left; /* If you want to allign the text with an image on the same row */
    width: 100px;
    heght: 100px;
    margin-top: -40px /* Change this value to adapt to your page */;
}
<div class="mydivclass">
    <br />
    <img class="mydesiredclass" src="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Wikipedia-logo-v2-en.svg/2000px-Wikipedia-logo-v2-en.svg.png">
    <h2 class="h2red">Text aligned after image inside a div by negative manipulate the img position</h2>
</div>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.