BLOG
IEサポート終了したのでIE非対応の便利なCSSを6選紹介します。
INDEX
こんにちは、ミズノです。
2022年6月16日でInternet Explorer 11(Windows10)のサポート終了に伴い、(一部を除き)すべてのInternet Explorerが過去のものとなりました。
今回はこれから使う機会が増えそうなIE非対応の便利なCSSを6選紹介していきたいと思います。
1.line-clamp
要素に行数制限を指定できます。行数を超えたテキストは「…」となります。-webkit-line-clamp
の値を変更することで行数の制限範囲を変更できます。
CSS
.text {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
}
デモ
2.scroll-behavior
1行追加するだけでページ内リンクのスクロールをスムーススクロールにできます。また、アンカーリンク付きURLでアクセスしたときもスムーススクロールでスクロールされます。
スピード・イージングは調整できず、ブラウザ依存となっています。
ヘッダーを上部に固定した際にページ内リンクでスクロールするとヘッダーとコンテンツが重なりますが、scroll-margin
を使うことでスクロール後のヘッダー位置を調整できます。
CSS
html {
scroll-behavior: smooth;
}
:target {
scroll-margin-top: 58px; // ヘッダーの高さ分
}
デモ
3.display:contents
display:contents
を使用された要素は開始タグと終了タグがマークアップから省略されたようになります。
下記はイメージです。
<div class="wrapper">
<p>text</p>
</div>
↓ // .wrapperにdisplay:contentsを使用
<p>text</p>
使用する場面としては
display:grid
・display:flex
を適用したいがHTMLの構造上<article>
・<section>
を入れておきたい、グループ化したいといった場合に使用します。
例1
隣合った2つのコンテンツのタイトル・テキストを同じ高さにしたい。
display:grid
を使用してレイアウトを実装することは可能ですが、下記のようなHTML構造になるかと思います。
<div class="display-contents">
<h2 class="display-contents__heading">title</h2>
<p class="display-contents__text">Lorem, ipsum dolor sit amet consectetur adipisicing elit.</p>
<div class="display-contents__img"></div>
<a href="" class="display-contents__link">BUTTON</a>
<h2 class="display-contents__heading">Lorem, ipsum dolor sit amet consectetur</h2>
<p class="display-contents__text">Lorem, ipsum dolor sit amet consectetur adipisicing elit. Id atque officia aut facere quidem necessitatibus natus corrupti, quo quas nesciunt facilis, ex, beatae.</p>
<div class="display-contents__img"></div>
<a href="" class="display-contents__link">BUTTON</a>
</div>
次にdisplay:contents
を使用する場合は各コンテンツを<section>
でグループ化し、.display-contents__section
にdisplay:contents
を使用することでセマンティックなHTMLを実現できます。
<div class="display-contents">
<section class="display-contents__section">
<h2 class="display-contents__heading">title</h2>
<p class="display-contents__text">Lorem, ipsum dolor sit amet consectetur adipisicing elit.</p>
<div class="display-contents__img"></div>
<a href="" class="display-contents__link">BUTTON</a>
</section>
<section class="display-contents__section">
<h2 class="display-contents__heading">Lorem, ipsum dolor sit amet consectetur</h2>
<p class="display-contents__text">Lorem, ipsum dolor sit amet consectetur adipisicing elit. Id atque officia aut facere quidem necessitatibus natus corrupti, quo quas nesciunt facilis, ex, beatae.</p>
<div class="display-contents__img"></div>
<a href="" class="display-contents__link">BUTTON</a>
</section>
</div>
デモ
例2
PCレイアウトでは画像とテキストエリアが分かれており、SPレイアウトでは画像がテキストエリアの中に入ってくる。
display:flex
を使用して上記のPCレイアウトを組むときは画像とテキストエリアでグループ化することが多いかと思います。この場合SPレイアウトのとき.display-content__content
にdisplay:contents
を使用します。あとはorder
で順番を変更して対応できます。
<div class="display-content__wrapper">
<div class="display-content__img"></div>
<div class="display-content__content">
⋮
</div>
</div>
デモ
4.overscroll-behavior: contain
スクロール領域の境界に達したときにスクロールチェーンを抑止できます。
スクロールチェーンとはoverflow: auto
、overflow: scroll
など使用されてスクロールできるコンテンツがあるとき、そのコンテンツがスクロール領域の境界に達したあとメインのコンテンツまでスクロールされる現象のことです。
デモ
ハンバーガーメニュー内で後ろのコンテンツがスクロールしてしまう問題でもoverscroll-behavior: contain
を使用すれば固定することができます。ただし、メニュー内の長さが短い場合は後ろのコンテンツがスクロールされてしまうのでご注意ください。
デモ(ハンバーガーメニュー内でスクロールを固定)
5.inset
inset
はtop
, right
, bottom
, left
に対応する一括指定プロパティです。margin
の一括指定における複数値の場合と同じ構文で使用できます。
css
.position {
inset: 0; // 上下左右
inset: 10px 20px; // 上下 / 左右
inset: 10px 20px 30px 40px; // 上 右 下 左
}
fixed
の要素などをセンター合わせにする際の記述量が減りますね。
.fixed {
position: fixed;
inset: 0;
margin: auto
}
デモ
6.place-items: center
inset
はposition
を使いましたが、place-items
はgrid
でのセンター合わせを簡単にできます。place-items
はalign-items
とjustify-items
に対応する一括指定プロパティです。
CSS
2行でセンター合わせにできます。
.items {
display: grid;
place-items: center;
}
デモ
補足としてdisplay:grid
ではなくdispay:flex
ではできないのか?についてですが、dispay:flex
ではjustify-items
がないためできません。主軸の配置決めにはjustify-content
がありますよね。
dispay:flex
にjustify-items
がない理由として、
- フレックスボックスでは主軸上アイテムは一つのグループとして扱われる
- アイテム毎に
margin
を使用すれば位置合わせは可能
そのためにjustify-items
やjustify-self
に相当するものはないようです。
終わりに
以上、IE非対応の便利なCSS6選でした。参考になれば幸いです。!
それではまた。