CSSグリッドによる高度なチェックボックススタイリング
の CSSグリッドレイアウトモジュール レイアウト問題の膨大な量だけでなく、我々がしてきたいくつかの古き良き問題も解決できる 長い間対処する, といった チェックボックスラベルのスタイル設定.
ラベルが表示されたときにスタイルを設定する方法は比較的簡単です。 後に チェックボックスは、ラベルが表示されるときそれほど簡単ではありません 前 それ.
CSSグリッドなしのチェックボックススタイル
ラベルのスタイル 後に チェックボックスは、開発者がどこかでそれを読んで以来ずっと行ってきたものです。このテクニックは、CSSが持つことができる強力なダイナミクスの最も古くからの例です。.
これは、あなたが既に精通しているかもしれないコードです。 ラベルをスタイルする 後に チェックボックス:
入力:チェック済み+ラベル/ * style me * /
A スタイル付きラベル 後に チェックボックス このように見えるかもしれません(ただし、他のスタイルルールも使用できます)。
上記のCSSコードは 隣接兄弟コンビネータ でマーク +
キー。チェックボックスが :チェックあり
状態, 要素 後に それ (通常はラベル)はこのメソッドを使ってスタイルすることができます.
そんなシンプルで効果的なテクニック!どのような可能性 おそらく それでうまくいかない?ラベルを表示するまで何もしない 前 チェックボックス.
隣接兄弟コンビネータ 次の要素を選択;これはラベルが来なければならないことを意味します 後に HTMLソースコードのチェックボックス.
ラベルを表示させる 前 画面の所属チェックボックスは、ソースコードのチェックボックスの前に移動することはできません。 以前の兄弟セレクタはCSSには存在しません.
選択肢は1つだけです。 チェックボックスとラベルの位置を変更する 使う 変形する
または ポジション
または マージン
ラベルが画面のチェックボックスの左側に表示されるように、ある種のテレキネティックパワーを持つ別のCSSプロパティ.
伝統的な方法の問題
何もない 主に 上記のテクニックには問題ありませんが、 ある場合には非効率的. チェックボックスとラベルの再配置された位置が機能しなくなるケースを意味します.
レスポンシブだと思う, 例えば。表示されているデバイスに応じて、チェックボックスのサイズを変更するか位置を変更する必要があります。それが起こると、あなたは ラベルの位置も変更する必要があります, チェックボックスの位置変更/サイズ変更に応答してラベルに自動再調整は行われません。.
私達がちょうどできれば私達はこの不利な点を除去できます チェックボックスとラベルにしっかりとしたレイアウトを提供する, 大まかにページ上に配置するのではなく.
しかし、テーブルや列などのほとんどすべてのレイアウトシステムでは、 ソースコードのチェックボックスの前にラベルを追加します 画面上でも同じように見えるようにするためです。ラベル上の次の要素セレクタが機能しなくなるため、これは望ましくないことです。.
一方、CSS Gridは、次のようなレイアウトシステムです。 ではない ソースコード内の要素の配置/順序に依存.
グリッドレイアウトの並べ替え機能は意図的に影響を与えます ビジュアルレンダリングのみ, ソースの順序に基づいて音声の順序とナビゲーションを終了します。これにより、作成者はソースの順序を変更せずにビジュアルプレゼンテーションを操作できます… - CSSグリッドレイアウトモジュールレベル1、W3C
したがって、CSSグリッドは、 表示されるラベルのスタイル 前 チェックボックス.
CSSグリッドを使ったチェックボックススタイル
HTMLコードから始めましょう. チェックボックスとラベルの順序は以前と変わりません。. 両方をグリッドに追加するだけです.
付随するCSSは次のとおりです。
#cbgrid display:grid;グリッドテンプレート領域: "left right";幅:150ピクセル。 input [type = checkbox] grid-area:right;ラベルグリッド領域:左;
私がすでに書いたように、私はCSSグリッドがどのように機能するかについて深くは触れません。 主題に関する詳細な記事, ここで読むことができますいくつかの基本は、しかし: 表示:グリッド
プロパティは要素をグリッドコンテナに変える, グリッドエリア
要素が属するグリッド領域を識別します。 グリッドテンプレート領域
異なるグリッド領域で構成されるグリッドレイアウトを形成します。.
上記のコードでは、 2つのグリッド領域: "左"
そして "右"
. 彼らは作る グリッド行の2列. チェックボックスは "右"
エリアとラベル "左"
. これが 画面上の見え方:
ソースコードのチェックボックスとラベルの相対的な配置は変更していないので、 まだ隣の兄弟コンビネータを使う:
入力:チェック済み+ラベル/ * style me * /
グリッド項目は 常にブロック;それはとして知られている周囲のボックスで表示されます グリッドレベルボックス. あなたがそれを望まないならば、例えばラベルのために, そのアイテムにラッパーを付ける (別の要素で囲む)そして そのラッパーをグリッド領域にします.
それで、みんな。 CSSグリッドを使用すると、これらの生意気なチェックボックスのレイアウトを特定できます。.