"没IE時代" のCSSプロパティが凄い

今まで「IE非対応」が壁となり業務での使用を躊躇していたCSSプロパティがいくつもありました。
しかし、ネットや各メディアでも話題になった通り、2022年6月16日、ついにIEのサポートが終了しました（一部OSを除く）。

そこで、IE終了により解き放たれた画期的なCSSプロパティを、個人的メモも兼ねて記載していきたいと思います。

## 全く新しいレイアウトの形「grid-template」
「grid-template」を初めて知った時は驚きました。
このプロパティを使用すると、以下コードのように視覚的にレイアウトをコントロールすることが可能となります。

<p class="codepen" data-height="320" data-default-tab="css,result" data-slug-hash="WNMWVao" data-user="monji88" style="height: 320px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/monji88/pen/WNMWVao">
  Untitled</a> by monji (<a href="https://codepen.io/monji88">@monji88</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

これ、かなりやばくないでしょうか？見てわかるようにレイアウトはもちろん、各要素の高さ、幅、marginすらもgrid-templateプロパティの中で設定することが可能です。これで各要素のプロパティやmarginを個別に設定する手間が一気に不要になりますね。

詳しい使用方法については以下のしまぶー様のYouTube動画がわかりやすかったのでおすすめです。

https://www.youtube.com/watch?v=cwkkD0ejX8Q

下記のMDNページからもわかるように、IE以外の主要ブラウザは既に対応済となっています。

https://developer.mozilla.org/ja/docs/Web/CSS/grid-template#%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%83%BC%E3%81%AE%E4%BA%92%E6%8F%9B%E6%80%A7

　
## テキストで背景を切り抜く「background-clip:text」

background-clipは、背景の表示領域を設定するためのCSSプロパティです。
このプロパティの値を「text」にすることにより、以下のような「テキストで背景を切り抜く表現」が可能となります。

<p class="codepen" data-height="300" data-default-tab="css,result" data-slug-hash="KKQLPYr" data-user="monji88" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/monji88/pen/KKQLPYr">
  background-clip</a> by monji (<a href="https://codepen.io/monji88">@monji88</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

このコードではlinear-gradientを用いたグラデーションを背景に使用していますが、もちろん任意の画像を使用することもできます。テキストの色を透明に設定することと、background-clipにはベンダープレフィックスをつけて「-webkit-background-clip」とすることも忘れずに。

こちらもIE以外の主要ブラウザは既に対応済となっています。

https://developer.mozilla.org/ja/docs/Web/CSS/background-clip#%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%83%BC%E3%81%AE%E4%BA%92%E6%8F%9B%E6%80%A7

　
## たった一行で要素のアスペクト比を設定「aspect-ratio」

今まで、要素のアスペクト比を設定するためには、親要素を作ってposition:relativeにしてpadding-topを設定して子要素をabsoluteにして、、、とかなりのコードが必要でした。
しかし「aspect-ratio」を使用すると、以下のようにたったの一行で設定できてしまいます。

<p class="codepen" data-height="300" data-default-tab="css,result" data-slug-hash="XWZwWxj" data-user="monji88" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/monji88/pen/XWZwWxj">
  aspect-ratio</a> by monji (<a href="https://codepen.io/monji88">@monji88</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

こちらもIE以外の主要ブラウザは既に対応済となっています。

https://developer.mozilla.org/ja/docs/Web/CSS/aspect-ratio#%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%83%BC%E3%81%AE%E4%BA%92%E6%8F%9B%E6%80%A7

　
## モノクロ や ボカシ をブラウザ上で表現「filter」

filterプロパティにより、グレースケール、ぼかし、色相、コントラストなどの様々な値が調整可能となります。
以下は試しにグレースケールとぼかしの値ををanimationで変化させたものです。

<p class="codepen" data-height="300" data-default-tab="css,result" data-slug-hash="gOvJbay" data-user="monji88" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/monji88/pen/gOvJbay">
  filter</a> by monji (<a href="https://codepen.io/monji88">@monji88</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

filterプロパティ無しでこれをやろうと思ったら、未加工の画像と加工済の画像を予め用意してabsolute等で重ねて、、といった作業が必要だったのでかなり便利になりましたね。

こちらもIE以外の主要ブラウザは既に対応済となっています。

https://developer.mozilla.org/ja/docs/Web/CSS/filter#%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%83%BC%E3%81%AE%E4%BA%92%E6%8F%9B%E6%80%A7

　
## スムーススクロールがJavaScript不要に「scroll-behavior」

「scroll-behavior」を使用すると、JavaScriptが必要だったページ内リンクへのスムーススクロールが、以下のようにCSS１行だけで実装できてしまいます。

<p class="codepen" data-height="300" data-default-tab="css,result" data-slug-hash="jOZoqWG" data-user="monji88" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/monji88/pen/jOZoqWG">
  scroll-behavior: smooth;</a> by monji (<a href="https://codepen.io/monji88">@monji88</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

こちらもIE以外の主要ブラウザは既に対応済となっています。

https://developer.mozilla.org/ja/docs/Web/CSS/scroll-behavior#%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%83%BC%E3%81%AE%E4%BA%92%E6%8F%9B%E6%80%A7　

　
## 他プロパティも色々

とりあえず５つ記載しましたが、他にも、mix-blend-mode、clip-path、max-content、object-fit、position:stickyなど、IEのみ非対応だった便利なプロパティはたくさんあるので進んで活用していきたいと思います。