fieldsetもlegendも無し
あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモリーオ市、郊外のぎらぎらひかる草の波。またそのなかでいっしょになったたくさんのひとたち、ファゼーロとロザーロ、羊飼のミーロや、顔の赤いこどもたち、地主のテーモ、山猫博士のボーガント・デストゥパーゴなど、いまこの暗い巨きな石の建物のなかで考えていると、みんなむかし風のなつかしい青い幻燈のように思われます。
Post on:2025年1月30日
フォーム要素のグループ化で使用されるfieldset
の境界線付きボックスとlegend
の見出しを任意の要素に実装できるCSSを紹介します。
div
やarticle
を境界線付きボックスにし、h1
を見出しにして下記のように実装できます。見出しで欠ける境界線は自動的にクリッピングされ、ボーダーも自由にスタイルできます。
fieldset-legend.css
は、フォームのfieldset
とlegend
のような境界線付きのボックスを任意の要素に実装できるCSSです。
下記は、fieldset
とlegend
の実装例です。
タイトルの長さに合わせてボーダーは自動的にクリッピングされます。
さっそく、fieldset-legend.css
を使用してみました。
あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモリーオ市、郊外のぎらぎらひかる草の波。またそのなかでいっしょになったたくさんのひとたち、ファゼーロとロザーロ、羊飼のミーロや、顔の赤いこどもたち、地主のテーモ、山猫博士のボーガント・デストゥパーゴなど、いまこの暗い巨きな石の建物のなかで考えていると、みんなむかし風のなつかしい青い幻燈のように思われます。
HTMLは、こんな感じ。
1 2 3 4 |
<article class="fieldset-legend my-classname"> <h1>fieldsetもlegendも無し</h1> <p>あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモリーオ市、郊外のぎらぎらひかる草の波。またそのなかでいっしょになったたくさんのひとたち、ファゼーロとロザーロ、羊飼のミーロや、顔の赤いこどもたち、地主のテーモ、山猫博士のボーガント・デストゥパーゴなど、いまこの暗い巨きな石の建物のなかで考えていると、みんなむかし風のなつかしい青い幻燈のように思われます。</p> </article> |
.fieldset-legend
はベースのスタイルで、.my-classname
はボーダーのサイズやカラーなどカスタマイズ用です。
もちろん技術的にはfieldset
を使用すれば実装できますが、fieldset
の役割はフォーム入力をセマンティックにグループ化することであるため、フォーム要素以外で使用することは推奨されません。また、フォームとは異なるコンテキストで使用すると、アクセシビリティにも悪い影響を与えます。
fieldset-legend.cssは、このようなデザインを任意の要素で簡単に使用できるように、作成されました。このデザインを実装するには、CSSのtimeline-scope
とコンテナクエリが使用されており、2025年1月現在対応ブラウザはChrome, Edgeのみとなっています。それ以外のブラウザでは矩形の枠が表示されます。
ライセンスはBSD-2-Clause licenseで、個人でも商用プロジェクトでも無料で利用できます。
使い方は、簡単です。
fieldset-legend.css
を外部ファイルとして記述します。.fieldset-legend
を付与します。--fl-left
プロパティを任意の<length-percentage>
値に設定します(必要に応じて負の値でも大丈夫)。fieldset-legend.css
はGitHubからダウンロードしてもよし、CDNも用意されているので下記のコードを記述するだけでも利用できます。
1 |
<link rel="stylesheet" type="text/css" href="https://unpkg.com/fieldset-legend@1/fieldset-legend.css"> |
また、CSSファイルにインポートしてもOKです。
1 |
@import url(https://unpkg.com/fieldset-legend@1/fieldset-legend.css); |
上記のデモのCSSは、下記の通りです。
ボーダーやアウトライン、角丸、パディングなど自由に設定できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
.my-classname { padding: 25px; border: 5px solid #adadad; outline: 2px solid hotpink; outline-offset: -5px; border-radius: 1rem; background: var(--pjbg), lime; color: black; --fl-left: 25px; h1 { padding: 0.33em; } } |
作者の記事には、fieldset-legend.cssを使用したカラフルなデモがたくさんあります。
See the Pen
100% CSS - <fieldset> border <legend> knockout behavior on any element by coliss (@coliss)
on CodePen.
タイトルの配置を右寄せにすることもできます。
See the Pen
100% CSS - <fieldset> border <legend> knockout behavior on any element by coliss (@coliss)
on CodePen.
さらにaugmented-uiを使用して、複雑なボーダー・アウトラインを実装することもできます。
参考: UI要素をさまざまな形状のデザインに拡張するスタイルシート -augmented-ui
See the Pen
100% CSS - <fieldset> border <legend> knockout behavior on any element by coliss (@coliss)
on CodePen.
sponsors