数年前、Web開発者は、JavaScriptに依存せずに、CSSのみを使用して多くのものを実装および構築することができませんでした。しかし、今日、CSSは十分に成熟しているため、JavaScriptの1行を書くことなく強力なことをすることができます。また、CSSの力を示す「CSSのみアプローチ」に関する記事をいくつか読んだことがあるかもしれません。
CSSのみのアプローチに関しては、この投稿で使用するチェックされた擬似クラスセレクターを無視することはできません。もちろん、私はこのテクニックについて最初に書いた人ではなく、フォーム要素をJavaScriptの代替品として使用することに関するより広範な議論がありました。たとえば、Louis LazarisによるこのAdobeの記事とRyan Seddonによるこの素晴らしいスライドショー。キーテイクアウト
デモでは、ギアアイコンと、クリックしたときにいくつかのオプションがあるボックスが表示される方法に気付くはずです。そのボックスを構成するHTMLとCSSを説明する前に、次のコードをご覧ください。
<span>/* we don't want the input fields to appear, all we need is the labels */ </span><span>input<span><span>[type="checkbox"]</span>, input<span>[type="radio"]</span></span> { </span> <span>position: absolute; </span> <span>visibility: hidden; </span><span>} </span> <span><span>.settings-box-element</span> { </span> <span>z-index: 10; </span><span>}</span>
ここで、設定ボックスを構成するコードを分割できます。ギアボタンから始めましょう。これがHTML:
ですおよびcss:
<span><!-- the gear icon that opens the box when you click on it --> </span><span><span><span><input</span> id<span>="settings-btn"</span> class<span>="settings-btn"</span> type<span>="checkbox"</span>></span> </span><span><span><span><label</span> for<span>="settings-btn"</span> class<span>="settings-box-element"</span>></span><span><span></label</span>></span></span>
フォーム要素をJavaScriptの代替品として使用することについて1つまたは2つの記事を読んだ場合、入力要素とラベルを一緒に使用する必要があることを知っている必要があります。そのため、ID値に一致する属性を備えたラベルを持つチェックボックス入力があります。また、CSSフックに使用するために設定BTNのクラスを追加しました。
<span><span>.settings-btn + label</span> { </span> <span>position: fixed; </span> <span>top: 130px; </span> <span>right: 0; </span> <span>display: block; </span> <span>width: 35px; </span> <span>color: #e83737; </span> <span>text-align: center; </span> <span>background: #fff; </span> <span>cursor: pointer; </span><span>}</span>
>
次は、を実質的に
に含める白い箱です。html first:
およびcss:
<span><!-- the white box that contains the buttons --> </span><span><span><span><div</span> class<span>="buttons-wrapper settings-box-element"</span>></span><span><span></div</span>></span></span>
残りのマークアップ、つまり5つのボタンのコードを見てみましょう。コメントは、それらが制御する背景スタイルを示しています:
<span><span>.buttons-wrapper</span> { </span> <span>position: fixed; </span> <span>top: 130px; </span> <span>right: -200px; /* should match element width */ </span> <span>width: 200px; </span> <span>height: 240px; </span> <span>background: #fff; </span><span>}</span>
そして、ここにcss:
があります最初のチェックボックスに「チェックされた」属性が与えられたことに注意してください。それは、デフォルトで強調表示されているものにしたいからです。 すべての入力フィールドにはIDがあり、すべてのラベルには、入力フィールドの1つのIDと一致する属性があります。そして、ご存知かもしれませんが、そのような手法の背後にある秘密は属性です。なぜなら、属性を持つラベルがクリックされると、その特定のラベルに関連付けられている要素が選択/チェックされるため、これにより使用するには:checked selector。
<span><!-- background styles --> </span><span><!-- light background (#eaeaea) --> </span><span><span><span><input</span> id<span>="light-layout"</span> class<span>="light-layout"</span> type<span>="radio"</span> name<span>="layout"</span> checked></span> </span><span><span><span><label</span> for<span>="light-layout"</span> class<span>="layout-buttons settings-box-element"</span>></span> </span>Light Background<span><span><span></label</span>></span> </span> <span><!-- dark background (#494949) --> </span><span><span><span><input</span> id<span>="dark-layout"</span> class<span>="dark-layout"</span> type<span>="radio"</span> name<span>="layout"</span>></span> </span><span><span><span><label</span> for<span>="dark-layout"</span> class<span>="layout-buttons settings-box-element"</span>></span> </span>Dark Background <span><span><span></label</span>></span> </span> <span><!-- image background --> </span><span><span><span><input</span> id<span>="image-layout"</span> class<span>="image-layout"</span> type<span>="radio"</span> name<span>="layout"</span>></span> </span><span><span><span><label</span> for<span>="image-layout"</span> class<span>="layout-buttons settings-box-element"</span>></span> </span>Image Background<span><span><span></label</span>></span> </span> <span><!-- pattern background --> </span><span><span><span><input</span> id<span>="pattern-layout"</span> class<span>="pattern-layout"</span> type<span>="radio"</span> name<span>="layout"</span>></span> </span><span><span><span><label</span> for<span>="pattern-layout"</span> class<span>="layout-buttons settings-box-element"</span>></span> </span>Pattern Background<span><span><span></label</span>></span> </span> <span><!-- hide/show content --> </span><span><span><span><input</span> id<span>="hide-show-content"</span> class<span>="hide-show-content"</span> type<span>="checkbox"</span>></span> </span><span><span><span><label</span> for<span>="hide-show-content"</span> class<span>="layout-buttons settings-box-element"</span>></span> </span>Hide/Show content<span><span><span></label</span>></span></span>
上記のすべてのラベルには、「レイアウトバットン」のクラスがあります。このクラスは、ボタンに幅、パディング、境界線などのデフォルトと一般的なスタイルを提供するために使用されます。他のクラスは、それぞれに一意のスタイルを追加するために使用されます。ギアアイコンとホワイトボックスを見たように、位置プロパティは、値が固定されており、適切な上部および右のプロパティで使用されます。すべてのラベルの最高値は、その前のラベルよりも45px大きいことに注意してください。これは、ボタンを重複せずに互いに上にスタックすることです。また、適切なプロパティ値はボタンの幅と同じですが、負です。
CSSコードの最後の部分をご覧ください:
<span>/* we don't want the input fields to appear, all we need is the labels */ </span><span>input<span><span>[type="checkbox"]</span>, input<span>[type="radio"]</span></span> { </span> <span>position: absolute; </span> <span>visibility: hidden; </span><span>} </span> <span><span>.settings-box-element</span> { </span> <span>z-index: 10; </span><span>}</span>
HTMLの残りの要素は、divに包まれます:
上記のコードでは、設定ボックスのすべての要素を個別に配置したことに注意してください。そこでは、それらをすべてdivまたはセクション要素にすべて包み、この単一の要素を配置するため、物事をより簡単にすることができます。これは、親要素を選択できず、兄弟だけを選択できないという理由だけで行われます。
<span><!-- the gear icon that opens the box when you click on it --> </span><span><span><span><input</span> id<span>="settings-btn"</span> class<span>="settings-btn"</span> type<span>="checkbox"</span>></span> </span><span><span><span><label</span> for<span>="settings-btn"</span> class<span>="settings-box-element"</span>></span><span><span></label</span>></span></span>
ここで、一般的な兄弟セレクターを使用してメインDIVを選択します。これが唯一の方法です。 ギアアイコンをクリックします
ギアアイコンをクリックすると、設定ボックスが表示されます。それを実現するためのコードは次のとおりです
<span><span>.settings-btn + label</span> { </span> <span>position: fixed; </span> <span>top: 130px; </span> <span>right: 0; </span> <span>display: block; </span> <span>width: 35px; </span> <span>color: #e83737; </span> <span>text-align: center; </span> <span>background: #fff; </span> <span>cursor: pointer; </span><span>}</span>
ユーザーがギアアイコンをクリックすると、チェックボックスが選択され、ここにマジックが表示されます。ギアアイコンがクリックされたら、次のことが発生します。
隣接する兄弟セレクター()を使用して、そのチェックボックスが選択され、ビューポートの右から200ピクセルを移動した後、すぐに<span><!-- the white box that contains the buttons --> </span><span><span><span><div</span> class<span>="buttons-wrapper settings-box-element"</span>></span><span><span></div</span>></span></span>
背景の変更 ラジオボタンのHTMLコードを思い出させてください:
<span>/* we don't want the input fields to appear, all we need is the labels */ </span><span>input<span><span>[type="checkbox"]</span>, input<span>[type="radio"]</span></span> { </span> <span>position: absolute; </span> <span>visibility: hidden; </span><span>} </span> <span><span>.settings-box-element</span> { </span> <span>z-index: 10; </span><span>}</span>
私たちが変えるという背景は、.main-wrapper要素の背景です。 CSSは次のとおりです
<span><!-- the gear icon that opens the box when you click on it --> </span><span><span><span><input</span> id<span>="settings-btn"</span> class<span>="settings-btn"</span> type<span>="checkbox"</span>></span> </span><span><span><span><label</span> for<span>="settings-btn"</span> class<span>="settings-box-element"</span>></span><span><span></label</span>></span></span>
コンテンツを隠す/表示
そして、ここにcss:
<span><span>.settings-btn + label</span> { </span> <span>position: fixed; </span> <span>top: 130px; </span> <span>right: 0; </span> <span>display: block; </span> <span>width: 35px; </span> <span>color: #e83737; </span> <span>text-align: center; </span> <span>background: #fff; </span> <span>cursor: pointer; </span><span>}</span>
この場合、ブラウザに要素を選択し、表示するように設定するようにブラウザに指示します。ユーザーが関連するラベルをクリックすると、チェックボックスを選択します。
結論<span><!-- the white box that contains the buttons --> </span><span><span><span><div</span> class<span>="buttons-wrapper settings-box-element"</span>></span><span><span></div</span>></span></span>
このセレクター手法を使用してできることは他にもたくさんありますが、限界はあなた自身の創造性です。このテクニックが新しい場合、この記事が他の可能性を試すための出発点として役立つことを願っています。
以下に、完了したデモ:チェックされた
以上が純粋なCSSを使用したスタイルスイッチャーの構築:チェック済みの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。