inline-block
な要素は text-indent
の値を継承するので、text-indent
が設定されたコンテンツ内に fontawesome のアイコンとか inline-block
な要素があると意図しない表示崩れを起こすことがあります。(fontawesome のアイコンは display: inline-block
)
HTML
<ul class="icon-style-list"> <li> <i class="fas fa-check-square list-icon"></i> アイカツ!を見ると幸せになれる <a href="#"> <i class="fas fa-link"></i> LINK TEXT </a> </li> </ul>
.icon-style-list { icon-style: none; text-indent: -1.5em; padding-left: 1.5em; } .list-icon { text-align: center; width: 1.5em; }
👇 アイコンが inline-block
なので親要素の text-indent
が引き継がれて表示崩れてしまう
text-indent: 0
又は、display: inline;
を設定する
text-indent
の設定された要素の中にある inline-block
な要素には text-indent: 0
又は、text-indent
が引き継がれない display: inline
を設定すればOK
個人的には inline-block
のまま text-indent: 0
にしてしまう方が width なども効くので扱いやすいかなと思います。
HTML
<ul class="icon-style-list"> <li> <i class="fas fa-check-square list-icon"></i> アイカツ!を見ると幸せになれる <a href="#"> <i class="fas fa-link inline"></i> LINK TEXT </a> </li> </ul>
.icon-style-list { icon-style: none; text-indent: -1.5em; padding-left: 1.5em; } .list-icon { text-indent: 0; text-align: center; width: 1.5em; } .inline { display: inline; }
👇
単純なアイコンだけどうにかする設定にしておきたいなら属性セレクタで丸っと設定しておくのが楽だと思います。
.icon-style-list { icon-style: none; text-indent: -1.5em; padding-left: 1.5em; [class*="fa-"] { text-indent: 0; } }
example
See the Pen CSS inline-block inside a text-indent container by KIKIKI (@chaika-design) on CodePen.
CSSは全部 global だし、思わぬ所にバグ有りなので難解。
[参考]
prime になったから見返してるけど C 面白いよね