テキスト揃えセンターを使用して画像を中央配置しますか?


回答:


1087

このtext-alignプロパティはインライン要素でimgはなくブロックコンテナーに適用され、インライン要素であるため機能しません。W3C仕様を参照してください。

代わりにこれを使用してください:

img.center {
    display: block;
    margin: 0 auto;
}
<div style="border: 1px solid black;">
<img class="center" src ="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a">

</div>


5
私はこの方法を試しましたが、うまくいきました!しかし、2つの画像を試しましたが、うまくいきませんでした。トーテムのように互いに積み重なるだけです。2つの画像を中央の同じ線上に配置する方法はありますか?
PatrickGamboa 2013

1
W3Cでサポートされていないのはなぜですか?その主張を裏付けるリンクを提供できますか?
マダラのゴースト

1
@SecondRikudo:text-align名前が示すとおり、テキストを中央揃えにします。ブロック要素の場合、margin: 0 auto;推奨されるアプローチです。
Mrchief、2015

4
@Mrchief画像はインライン要素であり、ブロックではありません。text-alignそれらでも同様に動作します。
マダラのゴースト

4
その説明はちょっと変だと思いませんか?あなたは 'text-align'はインラインではなくブロックに適用されると言っていますが、それを文字通りブロック要素に変更し、text-alignの使用は避けます。つまり、コードは機能しますが、その段落は完全に言い換える必要があります。
タコ

118

これは常に機能するとは限りません...機能しない場合は、以下を試してください。

img {
    display: block;
    margin: 0 auto;
}

87

私はこの投稿に出くわしました、そしてそれは私のために働きました:

img {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
}
<div style="border: 1px solid black; position:relative; min-height: 200px">
  <img src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a">

</div>

(縦横合わせ)


48

それを行う別の方法は、囲んでいる段落を中央揃えにすることです。

<p style="text-align:center; border:1px solid black"><img src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a"></p>


19
私はそうは思わない、これは質問に答えると思います。OPは、プロパティtext-align: centerが画像を中央に配置するための適切な方法であるかどうかを尋ね、プロパティがimgタグの一部である必要があることを指定しませんでした。この回答では、問題のプロパティを使用して、ソリューションを提供します(機能します)。
MandM 2013年

2
これは、display:blockなどが機能しないときに機能しました。
matthewsheets 2015


13

実際、コードの唯一の問題は、text-align属性がタグ内のテキスト(はい、画像はテキストとしてカウントされます)に適用されることです。次のspanように、画像をタグで囲み、スタイルをに設定ますtext-align: center

span.centerImage {
     text-align: center;
}
<span class="centerImage"><img src="http://placehold.it/60/60" /></span>

画像が中央に配置されます。質問への回答として、画像を含むspan(またはdiv)にルールを適用することを覚えている限り、画像を中央に配置するのが最も簡単で確実な方法です。


2
span要素がありdisplay: inline;、この実行ので、置くことと同じ問題に、デフォルトでtext-align: center;imgそのもの。これを機能させるには、spanをに設定するdisplay: block;か、で置き換える必要がありdivます。
Web_Designer 2017年

10

提案できる要素を中央に配置する方法は3つあります。

  1. text-alignプロパティを使用する

        .parent {
        text-align: center;
    }
        <div class="parent">
        <img src="https://placehold.it/60/60" />
    </div>

  2. marginプロパティを使用する

    img {
        display: block;
        margin: 0 auto;
    }
    <img src="https://placehold.it/60/60" />

  3. positionプロパティを使用する

    img {
        display: block;
        position: relative;
        left: -50%;
    }
    .parent {
        position: absolute;
        left: 50%;
    }
    <div class="parent">
        <img src="https://placehold.it/60/60" />
    </div>


最初と2番目の方法は、親が少なくとも画像と同じ幅である場合にのみ機能します。画像が親より広い場合、画像は中央に配置されません!!!

しかし:3番目の方法はそのための良い方法です!

次に例を示します。

img {
    display: block;
    position: relative;
    left: -50%;
}
.parent {
    position: absolute;
    left: 50%;
}
<div class="parent">
    <img src="http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/img_01.jpg" />
</div>


#3は非常に正確なので、CSSインジェクションを使用してimg、正当化さdivれた内部を中央に配置できましたWebView。ありがとうございました!
JorgeAmVF 2018年

8

Internet Explorerの古いバージョンをサポートする必要がある場合のみ。

最近のアプローチはmargin: 0 auto、CSSで行うことです。

ここに例:http : //jsfiddle.net/bKRMY/

HTML:

<p>Hello the following image is centered</p>
<p class="pic"><img src="https://twimg0-a.akamaihd.net/profile_images/440228301/StackoverflowLogo_reasonably_small.png"/></p>
<p>Did it work?</p>

CSS:

p.pic {
    width: 48px;
    margin: 0 auto;
}

ここでの唯一の問題は、段落の幅が画像の幅と同じでなければならないことです。段落に幅を入れないと、100%と見なされて画像が左揃えになるため、もちろん使用しない限り、幅は機能しませんtext-align:center

フィドルを試してみて、必要に応じて試してみてください。


6
img{
    display: block;
    margin-right: auto;
    margin-left: auto;      
 }

1
ドリームハンター。cssを使用して画像を中央に配置する別の方法を提案している場合は、質問を少し拡張する必要があります。この提案された代替案が、おそらく関連するドキュメントへのリンクを含め、質問者の目標を達成するためのより良い方法と理由を説明できます。それは彼らにとってより有用であり、同様の問題の解決策を探している他のサイト読者にとってもより有用です。
Vince Bowdren

6

画像付きのクラスを使用している場合は、次のようにします

class {
    display: block;
    margin: 0 auto;
}

中央揃えにしたいのが特定のクラスの画像だけの場合は、次のようにします。

class img {
    display: block;
    margin: 0 auto;
}

一番下のものを変更するimg.classか、img.classバージョンも追加します。このためのTHX。
チャックサベージ

6

画像を保持するコンテナでは、CSS 3 Flexboxを使用して、垂直方向と水平方向の両方で画像を完全に中央に配置できます。

イメージホルダーとして<div class = "container">があるとします。

次に、CSSとして使用する必要があります。

.container {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
}

これにより、このdiv内のすべてのコンテンツが完全に中央揃えになります。


justify-contentで<p>のset alignに使用できるものは何ですか?
Manjitha teshara 2018

これが私が欲しかったものです。ありがとうございました。
Dionne Kim

5

私が見つけた最も簡単な解決策は、これを私のimg要素に追加することでした:

style="display:block;margin:auto;"

他の人が示唆するように、「自動」の前に「0」を追加する必要がないようです。多分それは正しい方法かもしれませんが、「0」なしでも私の目的には十分機能します。少なくとも最新のFirefox、Chrome、およびEdge


唯一の平均AUTO auto auto auto auto0 auto手段0 auto 0 auto...と下部と上部の余白のデフォルト自動ではされる0ので、0を追加するかどうかを正確にあなたは番目の-重複するものの、すでに提供お答えします。この場合も同様である
Temani Afif

あなたのコメントはそれが機能する理由を説明しています。すごい。しかし、以前の回答のうち、「0」なしの単純な「自動」も機能すると述べた回答はどれですか。その事実は言及する価値がありませんか?
Panu Logic

この特定のケースでは両方が同じであるため、この場合はコメントである必要があります。私はこのケースでは、我々は書くことができ、我々はすべて同等の値のための答えを持っていなければならないとは思わない:autoauto autoauto auto autoauto auto auto auto0 auto 00 auto0 auto 0 auto、のように...あなたそれぞれが異なった答えに値すると思いますか?私はそうは思いません。
Temani Afif

CSSの2つの異なるセグメントが同じ最終結果を生成する場合、それらの2つのCSSセグメントは「同じ」であるとは言いません。それらの出力は同じですが、ソースコードは同じではありません。通常と同じように、同じ出力を生成するさまざまなプログラムをいくつでも作成できます。次に、そのような「同等の」プログラムのどれが最もシンプルで最短であると思われるかを知る(そして尋ねる人々に伝える)ことが重要です。
Panu Logic

そして、これらすべては一つの答えの中に書かれるべきです。そのため、この回答はまったく新しい回答よりもコメントとして適しています。私たちはすべての同等のものを一緒に提示し、それらが完全に異なるように聞こえる可能性のある個別の機能にしないでください[私の意見では、ところで、それに同意したり、反対を主張したりする必要はありません]。そして、私は同じ出力を生成する異なるプログラムについて話しているのではありません。ロジックが同じではない可能性があるため、それは完全に異なるものです。ここでは、(のような同じプロパティと同じ値について話しているi++と同じですi+=1
Temani Afif

4

親の配置を変更するだけです:)

親プロパティでこれを試してください:

text-align:center

3

text-align: center親で使用して、imgdisplay: inline-block→に変更できます。したがって、テキスト要素のように動作し、親に幅がある場合は中央に配置されます。

img {
    display: inline-block
}

2

divを使用して画像を中央揃えにします。のように:

<div align="center"><img src="your_image_source"/></div>

2

画像を背景として設定したい場合は、解決策があります:

.image {
    background-image: url(yourimage.jpg);
    background-position: center;
}

2

背景以外の画像を中央に配置するかどうかは、画像をインライン(デフォルトの動作)として表示するか、ブロック要素として表示するかによって異なります。

インラインの場合

画像の表示CSSプロパティのデフォルトの動作を維持する場合は、設定する必要がある別のブロック要素内に画像をラップする必要があります text-align: center;

ブロックの場合

画像をそれ自体のブロック要素と見なしたい場合、text-alignプロパティは意味をなさないので、代わりにこれを行う必要があります。

IMG.display {
    display: block;
    margin-left: auto;
    margin-right: auto;
}

あなたの質問への答え:

プロパティはtext-align:centerです。CSSを使用して画像を中央に配置する良い方法ですか?

はいといいえ。

  • はい、画像がラッパー内の唯一の要素である場合。
  • いいえ、画像の兄弟であるすべての子要素がtext-alignプロパティを継承するため、画像のラッパー内に他の要素がある場合:この副作用は気に入らない可能性があります。

参考文献

  1. インライン要素のリスト
  2. 物事を中心に

1

もう1つのスケーリング方法-表示します。

img {
  width: 60%; /* Or required size of image. */
  margin-left: 20% /* Or scale it to move image. */
  margin-right: 20% /* It doesn't matters much if using left and width */
}

1

これをimgCSSに使用します。

img {
  margin-right: auto;
  margin-left: auto;
}

0

display: blockmargin: 0私のために動作しませんでした、どちらラッピングtext-align: center要素。

これは私の解決策です:

img.center {
    position: absolute;
    transform: translateX(-50%);
    left: 50%;
}

translateX ほとんどのブラウザでサポートされています


1
もしかしてmargin: 0 auto;?キーが設定されているmargin-leftmargin-rightしますautomargin: 0 auto;そのためのショートカットです。
Web_Designer 2016

1
@Web_Designer私が試したmargin: 0 automargin: 0margin: auto、どれも働きました。Chromeのインスペクタでは、を使用するmargin: 0 autoと、感嘆符がinvalid property value(またはそれを意味するものは何でも)言ってプロパティをストライクすることに注意してください
OverCoder

あなたは「位置:絶対的」という意味だと思います。「display:absolute;」の代わりに
WebDevDaniel

タイプミスを指摘してくれた@WebDevDanielに感謝します。とにかく、relativeではなくポジショニングを使用したい場合がありますがabsolute、どちらもかなりうまく機能します。
OverCoder 2016

0

内に画像とテキストがあるdiv場合text-align:center、テキストと画像を一気に揃えるために使用できることを発見しました。

HTML:

    <div class="picture-group">
        <h2 class="picture-title">Picture #1</h2>
        <img src="http://lorempixel.com/99/100/" alt="" class="picture-img" />
        <p class="picture-caption">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Temporibus sapiente fuga, quia?</p>
    </div>

CSS:

.picture-group {
  border: 1px solid black;
  width: 25%;
  float: left;
  height: 300px;
  #overflow:scroll;
  padding: 5px;
  text-align:center;
}

CodePen: https ://codepen.io/artforlife/pen/MoBzrL?editors=1100


0

時々、ページ内のWordPress管理者にコンテンツと画像を直接追加します。コンテンツ内に画像を挿入し、その中央に揃えたい場合。コードは次のように表示されます。

 **<p><img src="https://abcxyz.com/demo/wp-content/uploads/2018/04/1.jpg" alt=""></p>**

その場合、次のようなCSSコンテンツを追加できます。

article p img{
    margin: 0 auto;
    display: block;
    text-align: center;
    float: none;
}

0

使用する:

<dev class="col-sm-8" style="text-align: center;"><img src="{{URL('image/car-trouble-with-clipping-path.jpg')}}" ></dev>

これは、Laravelフレームワークで画像を中央に配置する方法だと思います。


0
.img-container {
  display: flex;
}

img {
  margin: auto;
}

これは、画像を垂直方向と水平方向の両方で中央にします

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