【CSS】画像を中央寄せできない・真ん中にならない原因
「画像を中央寄せしたいのにできない!」
「画像が真ん中にならない!真ん中からちょっとずれてる」
画像を中央寄せできない原因と解決方法を、使ったCSS別に紹介します。
目次
text-align: centerが効かないとき
画像にdisplay:blockが指定されているから
画像にdisplay:blockが指定されているとtext-align: centerは効きません。
<style>
.example img{
/*原因*/display: block;
}
.example{
text-align: center;
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example">
<img width="300" src="cat.jpg" alt="">
</div>
画像のdisplay: blockを消すか「display: inline」か「display: inline-block」を指定しましょう。
<style>
.example2 img{
/*削除display: block;*/
}
.example2{
text-align: center;
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example2">
<img width="300" src="cat.jpg" alt="">
</div>
ブロック要素・インライン要素について詳しくはこちら↓
CSS displayについて詳しくはこちら↓
画像に指定しているから
画像にtext-align: centerを指定しても中央寄せになりません。
<style>
.example3 img{
/*画像に指定している*/text-align: center;
}
.example3{
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example3">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
text-align: centerは画像の親要素に指定しましょう。
<style>
.example4{
/*親に指定している*/text-align: center;
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example4">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
親子要素について詳しくはこちら↓
CSSやhtmlの基本をしっかり理解すると、この記事の内容もより理解できるようになりますよ。
↓CSSやhtmlを楽しく学べるようにマンガを描きましたのでゼヒご覧ください↓
↑「副業してもう少し稼ぎたい!」というかたのために副業の方法も解説しています。
margin: autoが効かないとき
画像にdisplay:blockが指定されていないから
margin: autoはブロック要素でないと効きません。
<style>
.example5 img{
/*これがないdisplay: block;*/
margin: auto;
}
.example5{
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example5">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
画像に「display: block」を指定してブロック要素にしましょう。
<style>
.example6 img{
/*これを指定*/display: block;
margin: auto;
}
.example6{
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example6">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
親に指定しているから
margin: autoは親に指定しても効きません。
<style>
.example7 img{
display: block;
}
.example7{
/*親に指定*/margin: auto;
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example7">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
画像に指定しましょう。
<style>
.example8 img{
/*画像に指定*/margin: auto;
display: block;
}
.example8{
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example8">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
align="center"が効かないとき
text-align:leftが指定されているから
alignはhtmlの属性です。属性とCSSが被ったときCSSが優先されます。
<style>
.example9{
/*コレが原因*/text-align: left;
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div align="center" class="example9">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
優先されているCSS「text-align:left」を削除しましょう。
<style>
.example10{
/*コレを削除text-align: left;*/
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div align="center" class="example10">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
justify-content: centerが効かないとき
display:flexを指定していないから
justify-contentはdisplay:flexがないと効きません。
<style>
.example11{
/*コレがないdisplay: flex;*/
justify-content: center;
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example11">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
justify-contentは必ずdisplay:flexとセットで指定しましょう。
<style>
.example12{
/*コレを指定*/display: flex;
justify-content: center;
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example12">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
画像に指定しているから
justify-contentは画像に指定しても効きません。
<style>
.example13 img{
/*画像に指定*/justify-content: center;
}
.example13{
display: flex;
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example13">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
親に指定しましょう。
<style>
.example14{
/*親に指定*/justify-content: center;
display: flex;
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example14">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
兄弟要素があるから
下の画像、真ん中より少し左にずれているのがわかるでしょうか?
この原因は画像に兄弟要素があるからです。
before、afterを使っている場合もこの現象が起こることがあります。
<style>
.example15{
display: flex;
justify-content: center;
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example15">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
<div> <!--コレ--> </div>
</div>
兄弟要素を消すか縦並びにしましょう。
<style>
.example15{
display: flex;
justify-content: center;
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example15">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
真ん中にならない・ずれるとき
画像の前後に空白スペースがあるから
画像の前か後ろに空白全角スペースがないか確認しましょう。
<style>
.example16{
text-align: center;
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example16">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
空白全角スペースをすべて削除しましょう。
<style>
.example16{
text-align: center;
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example16">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
画像にmarginが指定されているから
画像の右か左にmarginが指定されているとその分ずれます。
<style>
.example17 img{
/*コレが原因*/margin-right: 100px;
}
.example17{
text-align: center;
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example17">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
画像のmarginを削除するか左右同じ値のmarginを指定しましょう。
<style>
.example18 img{
/*コレを削除margin-right: 100px;*/
}
.example18{
text-align: center;
border: 1px solid #333;
background: #e1e8f7;
padding: 5px;
}
</style>
<div class="example18">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
親にpaddingが指定されているから
親の右か左にpaddingが指定されているとその分ずれます。
<style>
.example19{
/*コレが原因*/padding-right: 100px;
text-align: center;
border: 1px solid #333;
background: #e1e8f7;
}
</style>
<div class="example19">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
親のpaddingを削除するか左右同じ値のpaddingを指定しましょう。
<style>
.example20{
/*コレを削除padding-right: 100px;*/
text-align: center;
border: 1px solid #333;
background: #e1e8f7;
}
</style>
<div class="example20">
<img width="300" src="https://csshtml.work/wp-content/uploads/cat.jpg" alt="">
</div>
「この記事の内容がよくわからなかった…」「なんかうまくいかなかった…」というかたは下記記事↓でhtmlとCSSの基本を学びましょう。
わからないまま突き進むより基本を学ぶのが結局近道です。