#59「9月のWebプラットフォームの新機能」
web.devで公開されているNew to the web platformシリーズの2024年9月の内容を日本語でお届けします!
※ オフラインのため、音声ファイルを再生できません。ネットワーク状況をご確認の上、再度アクセスしてください。
菅原 : 皆さん、こんにちは!ミツエーリンクスの菅原です!
加藤 : 加藤です!
菅原 : ミツエーテックラジオは、株式会社ミツエーリンクスのスタッフが、Webデザイン、Webフロントエンドなどの、Web技術に関するニュースやツールをシェアするポッドキャストです。今回はweb.devに公開されている9月にWebプラットフォームに追加された新機能から 3つのトピックを紹介します。各機能のブラウザのサポート状況なども紹介していきますが、10月3日時点の内容ですので、ご注意ください。
ミツエーリンクスのWebサイトで公開している文字起こしページには、各機能の仕様や参考リンクなども載せていますので、そちらもぜひご覧ください!では早速まいりましょう!
details要素のname属性によるグループ化
菅原 : はじめに紹介するのは、 Firefox 130でdetails
要素のname
属性がサポートされたことです。複数のdetails
要素に同じname
属性をつけることでdetails
要素がグループ化されて、1つを開くと同じグループの中の別のdetails
要素は閉じる、ということがHTMLだけで実装できます。
加藤 : いわゆるアコーディオンのような使い方ができるという感じですね。ただ、複数のコンテンツを同時に見たい場合もあるかもしれないので、コンテンツ間の比較が必要ない場合に使うといいのかなと思います!あとは同じグループのdetails
要素は、見た目上も近くに置いておくと、開いていたコンテンツが閉じたことがユーザーにも伝わりやすいのかなと思いました。
菅原:そうですね。新しい機能が使えるようになるとついついすぐ使いたくなるんですが、まずはそれが適しているか考えないといけませんね。details
要素のグループ化はFirefoxでサポートされたことですべてのモダンブラウザで利用できるようになりました。
参考リンク
- 4.11.1 The details element | HTML Standard
- 4.11.1 details要素 | HTML Standard 日本語訳
- <details> : 詳細折りたたみ要素 - HTML: ハイパーテキストマークアップ言語 | MDN
- Exclusive Accordion | CSS and UI | Chrome for Developers
interpolate-sizeプロパティとcalc-size()関数
菅原 : 続いてcalc-size()
関数とinterpolate-size
プロパティです。これによりauto
やmax-content
のような、コンテンツに依ってサイズが変わるようなキーワード指定がされていてもアニメーションができるようになります。
加藤 : これ、2つの使い分けはどんな感じになるんですかね?
菅原 :interpolate-size
に関する議論をチェックしてもらいたいんですが、簡単に言えば特定の要素に対して個別に設定したいならcalc-size()
で、サイト全体などよりグローバルな設定をしたいならinterpolate-size
プロパティって感じですかね。あとcalc-size()
は単純にアニメーションできるようにするだけではなく、その時のサイズを基準にした計算もできるようになるので、たとえばコンテンツのサイズを1.5倍にしたいっていうときにも使えますね。
加藤 : なるほど。interpolate-size
を使って影響範囲を広げると、transition-property
にall
を指定しているところで意図しないアニメーションが起きたりしそうなんで、そのあたりはちょっと注意が必要ですかね。
菅原 : そうですね。interpolate-size
プロパティは今のところ Chrome 129のみ、calc-size
はChrome 129とEdge 129でサポートされています。
参考リンク
- 10. Calculating With Intrinsic Sizes: the calc-size() function | CSS Values and Units Module Level 5
- Animate to height: auto; (and other intrinsic sizing keywords) in CSS | CSS and UI | Chrome for Developers
- [css-values-5] Interpolating calc-size() more generally · Issue #10294 · w3c/csswg-drafts · GitHub
CSSスタイルクエリー
菅原 : 今日の最後のトピックはSafari 18でスタイルクエリーが実装されたことです。スタイルクエリーはCSSのstyle()
関数記法で書かれた条件を評価してマッチする場合のみ適用するスタイルを書くことができるものですね。今はstyle()
関数に書けるのはカスタムプロパティだけですけど、将来的にはたとえばbackground-color
プロパティの値がblack
だったらフォントの色を白にするみたいなことができるようになるみたいですね。
加藤 : これまでの「このクラスがついているときはこの見た目にする」という考え方ではなくて「この背景色に合わせるにはこの見た目にする」っていう考え方になるのかなーと思うので、CSSの設計手法にも影響を与えるかもしれないですね。
菅原 : そうですね。これまでよりロジカルになって可読性も上がるのかなーと思っています。スタイルクエリーはChrome、Edge、Safariではサポートされていますが、Firefoxではまだサポートされていません。
参考リンク
- 5.2. Style Container Features | CSS Containment Module Level 3
- コンテナーのサイズおよびスタイルクエリーの使用 - CSS: カスケーディングスタイルシート | MDN
- スタイルクエリ スタートガイド | CSS and UI | Chrome for Developers
- 1795622 - [css-contain-3] Support style() container queries
クロージング
菅原 : 以上、9月にWebプラットフォームに追加された機能の紹介でした!
加藤 : 今回紹介したもの以外だと、Chromeのバージョン129で日時データの多言語対応やフォーマットができるIntl.DurationFormat
がサポートされて、Firefoxのバージョン130ではWeb Codecs APIがサポートされたことが取り上げられていました。気になる方はweb.devの記事を読んでみてください!
菅原 : 最後に、ミツエーリンクスではスマートなコミュニケーションをデザインしたいUIデザイナー、UI開発者を募集しています。採用サイトではオンライン説明会やオンライン面接なども行っていますのでチェックしてみてください。
また、このPodcastはApple Podcast、Amazon Music、Spotify、YouTubeで配信していますので、お好みのプラットフォームでフォローいただけると、エピソードをすぐ視聴できます!こちらもぜひご活用ください。「#ミツエーテックラジオ」でご意見、ご感想、こんなこと話してほしいというリクエストなどもお待ちしております。
それでは今日はこの辺で!ありがとうございましたー!
加藤 : ありがとうございました!