ネガティブマージンとは
margin の値が マイナス になっているもののことです。
今回の記事で、position などを使わずに margin をつかうことで
要素を移動させる方法をお伝えします!
コンテンツ一覧
ネガティブマージンではみださせる
基本的な仕様
上から順に、width 200px, 100%, 指定なし(または width: auto;), 100%(display:inline-block) を指定しています。
<div class="wrap">
<div class="square00">00 width:200px;</div>
</div>
<div class="wrap">
<div class="square01">01 width:100%;</div>
</div>
<div class="wrap">
<div class="square02">02 width の指定なし</div>
</div>
<div class="wrap">
<div class="square03">03 width:100%; display:inline-block;</div>
</div>
.wrap {
margin-top: 20px;
margin-bottom: 20px;
width: 500px;
height: 150px;
margin-inline: auto;
border: 1px solid #000;
}
.square00 {
width: 200px;
height: 100px;
background: orange;
/* margin-left: -100px; */
}
.square01 {
background: orange;
width: 100%;
height: 100px;
/* margin-left: -100px; */
}
.square02 {
background: orange;
height: 100px;
/* margin-left: -100px; */
}
.square03 {
display: inline-block;
background: orange;
width: 100%;
height: 100px;
/* margin-left: -100px; */
}
上記の css にコメントアウトしてある、margin-left: -100px; を通常の状態に戻すと
↓のような状態になります。
width を指定してある要素は長さがそのままに、横にはみ出ます。
対して width を指定していない(または width: auto;)要素は、ネガティブマージンの分長さが伸びます。
これは、display:block; のような、width の指定がなくても
自動的に横幅いっぱいに伸びてくれる要素しか、横には伸びません。
display:inline-block; の width の指定をなくすと↓のようになります。
inline-block および inline 要素は、テキストなどのコンテンツの長さ分しか自動的に
width をつけてくれないので、block のようにはなりません。
この ネガティブマージン をつかったテクニックを紹介してくださっている、
はにわまんさんの記事もぜひご覧ください!
使用時の注意点
ネガティブマージンには、注意点がひとつありまして、
それは、画面幅が縮んだ時に、要素が画面外にはみ出してしまうことです。
なので、media query などを使って、画面外にはみ出ないようにしておく必要があります。
まとめ
- ネガティブマージンは、値が負の数になっている margin のこと
- 負の値を指定した分だけ要素がはみ出る
- display: block などの横幅が自動的に伸びる要素に関しては、はみ出る分だけ伸びる
- 画面幅を縮めたときに要素が画面外にはみ出る可能性があるので、はみ出ないように対応すること
他にも、ネガティブマージンが通常のマージンと被った場合の挙動など、
紹介しておいた方がいいかなと思うものもあるのですが、
今回の記事はここまでにさせていただきます。
今回はここまでになります。
最後まで見てくださりありがとうございました!
この記事がお役に立てばうれしいです!