displayプロパティでinline-block要素にすると、marginを0にしても、横に隙間ができてしまいます。
See the Pen inline-block by KUBO (@KUBOGEN) on CodePen.
これは改行が原因で起こるそうで、この問題を解決する方法はいくつかあります。
- HTMLの改行削除もしくはコメントアウトを記述
- 閉じタグを消す
- font-sizeプロパティを使う
- letter-spacingプロパティを使う
- table-cellを指定する
- floatプロパティを使う
HTMLの改行削除もしくはコメントアウトを記述
さっきの例では、HTMLに記述しているタグを改行していましたが、そのタグを詰めて書くと隙間もなくなります。
HTML
<ul>
<li>list1</li>
<li>list2</li>
<li>list3</li>
<li>list4</li>
<li>list5</li>
</ul>
<ul>
<li>list1</li>
<li>list2</li>
<li>list3</li>
<li>list4</li>
<li>list5</li>
</ul>
HTML
<ul>
<li>list1</li><li>list2</li><li>list3</li><li>list4</li><li>list5</li>
</ul>
<ul>
<li>list1</li><li>list2</li><li>list3</li><li>list4</li><li>list5</li>
</ul>
もしくは、タグの間にコメントアウトタグを記述しても隙間がなくなります。
HTML
<ul>
<li>list1</li><!–
–><li>list2</li><!–
–><li>list3</li><!–
–><li>list4</li><!–
–><li>list5</li>
</ul>
<ul>
<li>list1</li><!–
–><li>list2</li><!–
–><li>list3</li><!–
–><li>list4</li><!–
–><li>list5</li>
</ul>
閉じタグを消す
個人的にはあまりいい方法とは思えないんですが、閉じタグを消すという方法もあります。
HTML
<ul>
<li>list1</li
<li>list2</li
<li>list3</li
<li>list4</li
<li>list5</li
</ul>
<ul>
<li>list1</li
<li>list2</li
<li>list3</li
<li>list4</li
<li>list5</li
</ul>
font-sizeプロパティを使う
ここからは、CSSでinline-block要素の隙間をなくす方法です。
まず親要素にfont-sizeプロパティで「0」を指定して、対象の要素にfont-sizeプロパティで任意の値を指定します。
CSS
ul {
padding: 0;
font-size: 0;
}
li {
display: inline-block;
border: 1px solid #aaa;
padding: 10px;
font-size: 14px;
}
ul {
padding: 0;
font-size: 0;
}
li {
display: inline-block;
border: 1px solid #aaa;
padding: 10px;
font-size: 14px;
}
しかしこの方法だと、フォントサイズをpxなどの絶対値で指定するとうまくいくのですが、emとか%などの相対的な指定をするとうまくいきません。
letter-spacingプロパティを使う
親要素にletter-spacingプロパティで適当なマイナスの値を指定して、対象の要素にletter-spacingプロパティで「normal」を指定します。
CSS
ul {
padding: 0;
letter-spacing: -1em;
}
li {
display: inline-block;
border: 1px solid #aaa;
padding: 10px;
letter-spacing: normal;
}
ul {
padding: 0;
letter-spacing: -1em;
}
li {
display: inline-block;
border: 1px solid #aaa;
padding: 10px;
letter-spacing: normal;
}
table-cellを指定する
inline-blockの代わりにtable-cellを指定する方法もあります。
CSS
ul {
padding: 0;
}
li {
//display: inline-block;
display: table-cell;
border: 1px solid #aaa;
padding: 10px;
}
ul {
padding: 0;
}
li {
//display: inline-block;
display: table-cell;
border: 1px solid #aaa;
padding: 10px;
}
floatプロパティを使う
単純にfloatプロパティで「left」を指定する方法もありますね。
CSS
ul {
padding: 0;
}
li {
display: inline-block;
border: 1px solid #aaa;
padding: 10px;
float: left;
}
ul {
padding: 0;
}
li {
display: inline-block;
border: 1px solid #aaa;
padding: 10px;
float: left;
}
inline-block要素の隙間をなくす方法まとめ
- HTMLの改行削除もしくはコメントアウトを記述
- 閉じタグを消す
- font-sizeプロパティを使う
- letter-spacingプロパティを使う
- table-cellを指定する
- floatプロパティを使う
See the Pen inline-block隙間 by KUBO (@KUBOGEN) on CodePen.
Leave a Comment