中身が空のときにスタイルを当てる:empty

どうも、くまだです。

中身が空のときにスタイルを当てることができる疑似クラス「:empty」の使い方。

:emptyは中身が空のときにスタイルを当てる疑似セレクタ

:emptyの使い方は簡単。

  <div class="elementWrap">
    <div class="element">要素の中身あり</div>

    <!-- スペースあり -->
    <div class="element"> </div>

    <!-- スペースなし -->
    <div class="element"></div>
  </div>
.element {
  width: 100%;
  height: 20px;
  border: 1px solid orange;
}

.element + .element {
  margin-top: 16px;
}

.elementWrap {
  /* 調整用 */
  max-width: 200px;
  margin-left: 40px;
  margin-top: 40px;
}

.element:empty {
  border: transparent;

}
empty

1つ目の要素は、要素の中身があるのでそのままスタイル適用。2つ目は半角スペースを含んだ要素で、こちらはemptyは適用されず。3つ目の要素は、emptyに適用したスタイルが効いて、線がなくなりました。

.element:empty {
  border: transparent;
}

上のコードの場合だと、線はなくなっても、横幅と高さを指定しているので。要素自身が消えたわけではないです。

一応、要素が空のとき兄弟要素が~みたいなスタイルも適用されます。

  <div class="elementWrap">
    <div class="element">要素の中身あり</div>

    <!-- スペースあり -->
    <div class="element"> </div>

    <!-- スペースなし -->
    <div class="element"></div>
    <div class="element">要素の中身</div>
  </div>
.element {
  width: 100%;
  height: 20px;
  border: 1px solid orange;
}

.element + .element {
  margin-top: 16px;
}

.elementWrap {
  /* 調整用 */
  max-width: 200px;
  margin-left: 40px;
  margin-top: 40px;
}

.element:empty {
  border: transparent;

}

.element:empty + .element {
  background-color: orange;
}
empty

使いどころとしてはどこだろうか…。

例えば入力欄があって、空欄の場合は入力欄の背景色を目立つ色にして、記入漏れをなくす、とか…?

ここまで読んでくださりありがとうございました。

この記事を書いた人