LoginSignup
1
0

More than 3 years have passed since last update.

heightやwidthが0の要素にpaddingを指定すると要素が現れてしまう

Last updated at Posted at 2020-10-11

はじめに

たとえばエラーメッセージの表示だったり、何か値を渡されたときには表示して、それ以外のときには非表示にしたい、という場合にpaddingつけようとして困ったよという話。

中身が空のdivにpaddingをつけると

中身があるときは下のように表示してほしいとします。


See the Pen
qBNdVem
by taka1473 (@taka1473)
on CodePen.


このとき、p要素の中身がないとどうなるか。


See the Pen
ExyjoXX
by taka1473 (@taka1473)
on CodePen.


こうなります。
要素の正味の部分(文字とかが表示される部分)というのはheightからpaddingの高さを引いた数字になるが、heightは負の値を取れないのでpaddingのぶん正味の部分が高くなる(?)、ということらしいです。

回避方法

1.div要素を親要素に追加して、そちらにpaddingをつける。

See the Pen ZEOGvvB by taka1473 (@taka1473) on CodePen.

これで要素がない時には非表示にできます。でもこれだとpaddingのところはpinkになりませんね。

2.子要素で無理やり

See the Pen GRqJyQz by taka1473 (@taka1473) on CodePen.

そもそも要素がないのでそこにpadding入れても効かないから大丈夫っていう考え方。


See the Pen
vYKOpzv
by taka1473 (@taka1473)
on CodePen.



こちらは意図した動きになってくれます。

あとがき

もっといい方法がある気がする…。
あったら教えて下さい。(むしろ誰かに教えてほしくて記事書いたところある)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0