このブログのolとulのCSSを調整した。
更新履歴
2022/12: 再現性を確保したコードに修正。より良い手段を記載。
環境
2022/12追記: wordpressかどうかはあまり重要ではないけど一応載せておく。2バージョンで確認。
- wordpress 5.7, 6.1
現象
今までまあいいかで済ませていたが、改めて見てみると入れ子になっているul
やol
のリストの下部分の余白がよろしくない。
インスペクタで見てみると、ul
とol
のmargin-bottom
が1.4remにセットされていた。
この状態だとどういう風になるのかというと:
<ul>
<li>Mac
<ul>
<li>Macbook Air</li>
<li>Macbook Pro</li>
<li>iMac</li>
</ul>
</li>
<li>iPad
<ul>
<li>iPad Pro</li>
<li>iPad Air</li>
<li>iPad</li>
</ul>
</li>
</ul>
というhtmlがあると、こうなってしまう:
- Mac
- Macbook Air
- Macbook Pro
- iMac
- iPad
- iPad Pro
- iPad Air
- iPad
入れ子になっているul
とol
のmargin-bottom
も空間を確保してしまう。その結果、親側のli
同士で不自然な空間ができてしまう。
上の例だと、iMac
とiPad
の間がやけに空いてしまう事態になる。
対処法
テーマのデフォルトでこのような設定になっているので、これを上書きすれば回避できる。 上書き方法は2通りある。
wordpressのダッシュボードから、外観
--> テーマエディター
に飛んで、CSSを記述するだけ。
記事内容部分に限定したほうがいいので、article
や記事内のクラスなどを使ってCSSセレクタの対象は狭めておいたほうがいいだろう。
CSSの例:
.article ul {
margin-bottom: 0;
}
.article ol {
margin-bottom: 0;
}
例えばこのようにすると:
- Mac
- Macbook Air
- Macbook Pro
- iMac
- iPad
- iPad Pro
- iPad Air
- iPad
上のようになり、不自然さは減る。各項目が長くなると、もう少し空間があってもいいかなとは思う。
もっといいCSS指定があった(2022/12追記)
考えてみたら入れ子ということは二重以上になっているということで、セレクタで二重以上のものを指定すれば、もう少し直観的な修正ができることに気づいた。上のCSSは削除して、下のように置き換える:
ol ol {
margin-bottom: 0 !important;
}
ul ul {
margin-bottom: 0 !important;
}
このようにすれば一番外側のul
やol
の下部に空間ができなくなってしまう問題に対処できる。
おわり
ちょっと修正しただけで記事を作るのもどうかと思うが、入れ子で使うときに割と困惑するので、記録しておく。
上の例では要素のstyle
属性に埋め込んでいるがそんなことはあまりしたくない。
以上です。
コメント