著者は、テックファンドへの多様性寄付を、寄付のために書くプログラムの一環として選択しました。
導入
影、境界線、アウトラインを扱うことは、ウェブ開発の重要な要素であり、HTML要素やテキストアイテムの周りに視覚的な定義を提供できます。境界線と影の外観は、border
、border-radius
、box-shadow
、text-shadow
、およびoutline
の5つの主要なCSSプロパティを介して操作できます。影は奥行きを提供し、要素を際立たせます。一方、border
プロパティは、コンテンツ間の線形の区切りを作成したり、グリッドのスペースを定義したりするなど、さまざまな視覚的な機能を果たすことができます。border-radius
プロパティは、ボックスの角を丸くし、円形の形状を作成することさえできます。最後に、outline
は、コンテンツの流れを妨げることなく、border
プロパティの多くの機能を提供する、しばしば見落とされがちなプロパティです。
このチュートリアルでは、これらのプロパティを使用して、架空の宇宙旅行会社の法的通知を作成します。デモの間、エッジベースのプロパティを使用して、視覚的に豊かなコンテナを作成します。さらに、複数の影や異なるブラウザが特定のプロパティを異なる方法で実装するという、より複雑な値についての微妙なニュアンスにも配慮します。
前提条件
- CSSのカスケードと特異性機能に関する理解は、CSSスタイルをHTMLに適用する方法:カスケードと特異性を読むことで得ることができます。
- タイプセレクタ、組み合わせセレクタ、およびセレクタグループに関する知識は、CSSでスタイルを適用するためのHTML要素の選択方法で見つけることができます。
- CSSの
color
プロパティの理解。詳細については、CSSでカラー値を使用する方法を参照してください。 background
プロパティを使用したCSSグラデーションの知識。グラデーション背景を作成する経験を得るには、CSSでHTML要素に背景スタイルを適用する方法を確認してください。- ローカルマシンに保存されている空のHTMLファイルは、
index.html
として保存されています。お好みのテキストエディタやWebブラウザからアクセスできます。始めるには、HTMLプロジェクトのセットアップ方法チュートリアルを参照し、HTML要素の使用方法と理解方法に従って、HTMLをブラウザで表示する手順を実行してください。HTMLに慣れていない場合は、HTMLでウェブサイトを構築する方法シリーズ全体を試してみてください。
ベースHTMLとCSSの設定
このセクションでは、チュートリアル全体で記述するすべてのビジュアルスタイルのためのHTMLベースを設定します。また、styles.css
ファイルを作成し、コンテンツのレイアウトを設定するスタイルを追加します。
index.html
をテキストエディタで開きます。次に、次のHTMLをファイルに追加してください:
960px
をシミュレートします。 ページにはスタイルを適用するコンテンツも必要です。法的テキストについては、スタイルの目的のためのサンプルコンテンツとして、Legal Ipsumからフィラーコピーを使用します。
テキストエディタで index.html
に戻り、次のコードブロックから強調表示された HTML を追加します:
変更を index.html
に保存し、次にウェブブラウザを開きます。 ファイル メニュー項目を選択し、開く オプションを選択して、ブラウザに index.html
ファイルをロードします。次の画像は、この HTML がブラウザでどのようにレンダリングされるかを示しています:
index.html
と同じディレクトリに styles.css
という新しいファイルを作成し、それをテキストエディタで開きます。このファイルには、チュートリアル全体で使用されるすべてのスタイルが含まれます。最初のスタイルセットは、構築していく一般的な外観を適用します。次のコードブロックから CSS を styles.css
ファイルに適用します:
このファイルのスタイリングは、ページの初期レイアウトを設定します。中央に配置された法的な開示、間隔を空けたボタン、および線形グラデーションでレンダリングされたボタン、背景として使用される月の画像が含まれます。続行する前に、styles.css
ファイルを保存してください。
body
のルールセットのbackground
プロパティにリンクされた画像を表示するためには、月の背景画像が必要です。まず、index.html
ファイルと同じフォルダにimages
ディレクトリを作成してください。
ブラウザを使用して、このファイルを新しく作成したimages
ディレクトリにダウンロードするか、以下のcurl
コマンドを使用してコマンドラインからダウンロードします。
次に、ブラウザに戻って更新してください。ブラウザは、ページの内容にスタイルをレンダリングおよび適用します。以下の画像は、フルページがどのようにレンダリングされるかを示しています。
コンテンツの長さが非常に長いページになっています。これは法的なコピーとして意図されているため、.legal-contents
のコンテンツはスクロール可能なスペースになります。
スクロール可能な領域を作成するには、テキストエディターでstyles.css
を開きます。次に、法的コンテンツの高さを調整します。
このコードでは、.legal-contents
セレクターブロック内でheight
プロパティを作成し、その値を50vh
に設定しました。これは、ビューポートウィンドウの高さの50%を意味します。また、max-height
プロパティを作成し、その値を20rem
に設定しました。最後に、overflow
プロパティを追加し、値をauto
に設定しました。これにより、コンテンツがコンテナを溢れる場合にスクロールバーが作成されます。
これらの追加をstyles.css
ファイルに保存し、ブラウザに戻ってindex.html
を更新してください。ページとメインコンテナの全高が縮小されました。今、Legal Ipsumコピーは、それぞれの指定されたコンテナ内でスクロールできるようになりました。次のアニメーションで示されています:
このセクション全体で、チュートリアルの残りの部分で使用する主要なHTMLをセットアップしました。また、overflow
プロパティを使用してスクロール可能なスペースをセットアップしました。次のセクションでは、これらのコンテナに境界を適用するためにborder
プロパティを使用します。
border
プロパティの使用
border
プロパティは、要素の端にスタイルを適用する元の方法の1つです。このプロパティは、コンテナの外周に任意の色の線を適用します。プロパティの値は、厚さ、スタイル、および色の3つのコンポーネントで構成されます。border
プロパティは、これらの値を要素の四辺すべてに適用します。 border
の方向変化であるborder-top
プロパティなど、個々の辺を指定することができます。
border
プロパティで作業を開始するには、テキストエディタでstyles.css
を開き、.disclosure-alert
クラスセレクタに移動します。セレクタブロック内に、border
プロパティを追加し、値を1px solid hsl(0, 0%, 0%)
に設定します。次のコードブロックで強調表示されています:
このborder
プロパティは短縮プロパティであり、その値は他の値の組み合わせです。この場合、1px
の厚さはborder-width
プロパティの値を表します。この値は、単位を伴う数値またはthin
、medium
、thick
などのいくつかの名前付き値であることができます。solid
は、要素の周囲に表示される線のスタイルを定義するborder-style
の値です。この場合は、実線で表示されます。 border-style
の他の値には、dotted
、dashed
、double
、およびnone
があります。最後の値はborder-color
プロパティを定義し、有効な色値であることができます。
styles.css
を保存し、次にウェブブラウザでindex.html
を開きます。メインコンテンツコンテナには、今では月の背景画像にオーバーレイされているものとして最も顕著な細い黒い枠が付きます。次の画像は、メインコンテンツ領域でborder
がどのように表示されるかを示しています:
次に、要素にハイライトと影を適用して奥行き感を作成するためにborder
プロパティを使用できます。これは、背景色よりも明るい方向のborder
を使用して、隣接する側にはより暗い色を使用することで達成できます。
テキストエディターでstyles.css
に戻り、.disclosure-header
クラスセレクターブロックに移動します。background
プロパティのlinear-gradient()
は、やや暗いシェードに移行する暗紫のグラデーションを定義しています。グラデーション単体よりも深さを作成するには、次のコードでボーダーを調整します:
開始グラデーション値よりもやや明るい値の1px solid hsl(300, 50%, 35%)
を持つborder-top
プロパティを追加しました。次に、終了グラデーションよりもわずかに暗い1px solid hsl(300, 50%, 5%)
の値を持つborder-bottom
プロパティを作成しました。
styles.css
を保存し、ブラウザに戻ってindex.html
を更新します。紫色のヘッダー背景には、ヘッダーの上部をわずかに走る紫色のハイライトと、下部にわずかな影が付いています。次の画像は、ブラウザでの表示方法を示しています:
border
は短縮プロパティであるため、追加の長手のプロパティを追加できます。2つのボタンクラスの幅とスタイルを定義するborder
を適用でき、個々のクラスにborder-color
を適用できます。
border-color
を使用するには、テキストエディタでstyles.css
を開きます。 .button
のセレクタブロックに、値が1px solid
のborder
プロパティを追加し、.button-primary
と.button-secondary
にborder-color
プロパティを追加します:
これにより、両方のボタンに1px
の幅とsolid
のスタイルのボーダーが定義されます。その後、.button-primary
、.button-secondary
、およびそれに関連する:hover
状態のセレクタにカスタムカラーのborder-color
プロパティを追加しました。
styles.css
にこれらの変更を保存して、ウェブブラウザでページを更新します。次の画像に示すように、ボタンにはマッチングするより暗い色のボーダーによる少し明確な定義が追加されます:
最後に、各border
方向も短縮形です。つまり、-width
、-style
、および-color
は、それぞれ方向プロパティに適用できます。たとえば、長手のプロパティborder-right-color
は、右側のボーダーにのみ色を適用します。
これらの方向指定ロングハンドborder
プロパティを使用するには、テキストエディターでstyles.css
に戻ります。 .legal-contents
セレクターブロックに移動し、すべての4つのボーダーの幅とスタイルを設定し、その後、各辺の色をカスタマイズします:
このコードでは、ファイルの末尾にborder: 1px solid
を追加しました。その後、border-top-color
、border-bottom-color
、border-right-color
、border-left-color
プロパティを追加しました。値として、異なるhsl()
値をグレーに使用しました。
styles.css
に変更を保存して、ブラウザーでページをリロードします。スクロール可能なコンテンツコンテナには、上部に濃い灰色のボーダー、側面にはやや明るい灰色のボーダー、下部には白色のボーダーが表示されます。これは、コンテンツが明るい灰色の背景の後ろに配置されているような知覚を与え、ハイライトが下部エッジにある効果を引き起こします。
このセクションでは、border
プロパティとそのさまざまなロングハンドバリエーションを使用しました。必要に応じて異なる側面に適用される複数のボーダーを作成しました。次のセクションでは、コンテナの角を丸めるborder-radius
プロパティを使用します。
border-radius
の適用
ウェブ上での角丸のデザインは、border-radius
プロパティがその仕事をする以前から存在していました。このプロパティは任意の数値単位またはパーセンテージ値を受け入れることができ、margin
やpadding
プロパティと同様にショートハンドプロパティです。つまり、各角を必要に応じて個別に調整することができます。
border-radius
プロパティを使用する準備をするには、テキストエディタでstyles.css
を開きます。次に、.disclosure-alert
セレクタブロックとborder-radius
プロパティに移動します。そして、値を1.5rem
に設定します。これにより、その値がプロパティのすべての角に適用されます。次のコードブロックで強調表示されているCSSは、この方法がどのように書かれているかを示しています:
styles.css
にこの追加を保存し、ウェブブラウザでindex.html
を開いてまたはリフレッシュしてください。上部の2つの角は尖ったままであり、下部の2つの角のみが角丸に見えます。次の画像は、ブラウザでのレンダリングを示しています:
二つの角が丸く表示されているのは、ウェブ上での子孫要素の相互作用の仕方に起因しています。ブラウザは、コンテンツを表示したままにする方針を採ります。 .disclosure-alert
は四つの丸い角を持っていますが、.disclosure-header
が要素内にあり丸い角を持っていないため、丸い角が重なり合います。素早い修正方法は、.disclosure-alert
に overflow: hidden
を追加することで、親コンテナをクリッピングし、子孫コンテナとコンテンツをクリップすることです。ただし、この方法は、必要なコンテンツが読み取りにくくなったり見えなくなったりする可能性があります。より良い方法は、.disclosure-header
クラスに border-radius
を適用して、祖先の角の曲線に一致させることです。
重なり合う角を調整するには、テキストエディターで styles.css
に戻ります。 .disclosure-header
セレクタブロックに移動して、border-radius
プロパティを追加します。上部の二つの角だけ調整する必要があるため、値は 1.5rem 1.5rem 0 0
になります。
この値の拡張形式は、上部左上と右上の角に 1.5rem
の曲線を適用します。
変更を styles.css
に保存して、ブラウザで index.html
を更新します。紫色のヘッダーには今、丸い角があり、メインコンテナを覆っていません。ただし、新しい問題が発生しています。親コンテナからの白い部分が紫色のヘッダーの後ろから覗いています。次の拡大された画像で示されています:
.disclosure-alert
および.disclosure-header
の角は、両方とも1.5rem
の同じサイズですが、その幅にはサイズの違いがあります。.disclosure-alert
要素の左右にあるborder
によってこのサイズの違いが引き起こされます。border
の幅が両側で1px
であるため、サイズの違いは2px
または0.125rem
です。曲線を一致させるには、.disclosure-header
のborder-radius
を現在より0.125rem
小さくする必要があります。次のコードブロックで強調表示されているように、border-radius
の値1.5rem
を1.375rem
に変更します:
この変更をstyles.css
に保存して、ウェブブラウザでページをリフレッシュしてください。白い部分がなくなり、2つの要素の曲線が適切な場所で合流します。次に、これらの曲線がどのように整列しているかを示すズームインされたスクリーンショットが次に示されています:
最後に、メインコンテナの下部にあるボタンに角丸を適用します。これらのボタンはピルの形状を持ち、長くてフラットな上部と下部、そして完全に丸い側面を持ちます。これを達成するには、border-radius
の値を要素の高さより大きな単位ベースの値にする必要があります。
ピル形のボタンを作成するには、テキストエディタでstyles.css
を開きます。 .button
セレクタブロック内に、border-radius
プロパティを追加し、値を 2rem
に設定します。これは、計算された高さよりも大きい限り任意の数値であることができます。これは、font-size
、line-height
、padding
、およびborder-width
の組み合わせで、要素の全体の高さに影響を与えることがあります。次のコードブロックで強調されているCSSに、このプロパティを追加する場所が示されています:
このアプローチについて注意すべき点が2つあります。1つ目は、この要素にheight
値が設定されていないことです。 height
値の設定は避けるべきです。コンテンツがコンテナの外側に流れる可能性があるためです。固定のheight
を避けることで、ボタンは合計コンテンツに合わせて拡張できます。2つ目は、パーセントベースの値では正しく機能しないことです。 border-radius
プロパティのパーセントベースの値は、高さと幅のパーセントを曲線にします。これにより、丸みのある角ではなく、楕円形になります。
styles.css
に変更を保存し、ブラウザに戻ってindex.html
を更新します。ページは、次の画像に示されているように、2つの楕円形のピル形ボタンをレンダリングします:
このセクションでは、複数の要素に丸い角を適用するためにborder-radius
プロパティを使用し、border-radius
が子要素が曲線スペースから離れるのを防ぐことはできないことを発見しました。また、複数の丸い要素が重なったときに要素の幅に一致するborder-radius
の値を調整しました。次のセクションでは、text-shadow
プロパティを使用してテキストコンテンツにドロップシャドウを適用します。
text-shadow
プロパティの使用
テキストに影を付けることは、日常のウェブ開発で多くの用途があります。影は、奥行き、発光効果、またはテキストが見落とされるかもしれない場所でテキストを目立たせるのに役立ちます。このセクションでは、さまざまな視覚効果を作成するために、複数の要素にtext-shadow
を適用します。
text-shadow
プロパティは、最大で4つの値で構成されています: x軸オフセット、y軸オフセット、ぼかし半径、および色。例えば、値は次のようになります:2px 4px 10px red
。これら4つの値のうち、オフセット値だけが必須です。影の色はデフォルトでテキストのcolor
です。
text-shadow
を使って作業を始めるには、ヘッダーに発光効果を作成します。テキストエディタでstyles.css
を開き、.disclosure-header
クラスセレクタに移動します。セレクタブロック内に、次のtext-shadow
プロパティを追加します:
A glow effect means the color will emanate from every edge of the text, so the x- and y-axis offset values here are set to 0
. You set the blur for the glow to 0.375rem
(equivalent to 6px
) to give a subtle halo of color to the text. Lastly, the color value was set to a bit darker than the color
property: hsl(300, 50%, 50%)
.
次に、複数の影をテキスト要素に配置することで、テキストにエンボス効果を作成することができます。この効果は、オブジェクトの下に明るい色の影を配置し、上には暗い色の影を配置することで実現されます。
エンボス効果を作成するには、テキストエディタで styles.css
に戻ります。この効果は、コンテナの下部にあるボタンに追加されます。 .button-primary
、.button-primary:hover
、.button-secondary
、および .button-secondary:hover
セレクタに、text-shadow
プロパティを追加します。値のハイライトされたCSSを次のコードブロックで確認してください:
最初の影は、明るい下部の内側ハイライトです。これは 0 1px
のオフセットで行われ、次に背景グラデーションの色のより明るいバージョンが使用されます。次に、テキストの上に影を作成し、0 -1px
のオフセットで、影を 1px
上に引き上げ、背景色のより暗いバリエーションが使用されます。
これらの変更を styles.css
に保存し、次にウェブブラウザでページをリフレッシュします。ボタン内のテキストには、テキストの下にわずかなハイライトが付加され、テキストの上にわずかな影が付加されます。text-shadow
値の組み合わせにより、次のイメージに示すように、エンボス効果が作成されます:
このセクションでは、いくつかの要素にtext-shadow
プロパティを適用しました。見出しにはグローエフェクトを、ボタンには複数の影を使ったエンボス効果を作成しました。次のセクションでは、HTML要素にbox-shadow
プロパティを適用します。
要素にbox-shadow
を追加する
text-shadow
プロパティがテキストコンテンツに影を付けることを可能にするように、box-shadow
プロパティは要素やコンテナにも影を付けることができます。box-shadow
には、このセクション全体で探索する2つの追加機能があります。それは、ぼかしの広がりを制御する能力と、影を要素の内側に設定する能力です。
box-shadow
プロパティを使用する作業を開始するには、テキストエディターでstyles.css
を開きます。.disclosure-alert
セレクタブロックに、box-shadow
プロパティを追加します。 text-shadow
と同様に、x-およびy-軸オフセット値が必要であり、色が指定されていない場合はcolor
プロパティ値が使用されます。この最初のbox-shadow
では、次のコードブロックで強調表示されているように、オフセットを0
、ぼかしを0.5rem
、色を暗いhsl(300、40%、5%)
に設定します。
styles.css
の変更を保存して、ウェブブラウザーでページを更新します。コンテナーからほぼ黒い影が広がっているのが見えるでしょう。また、border-radius
プロパティで作成した曲線に影が尊重され、追従していることにも注目してください。次の画像は、ブラウザーでのレンダリングを示しています:
次に、styles.css
に戻り、box-shadow
に2つの追加の大きな発光効果を追加して、より複雑な効果を作成します。各新しい影の間にカンマを追加し、それぞれのy軸オフセットを0.5rem
に設定します。次のコードブロックで強調されているように、ブルーとパープルのカラーパレットのより軽いバリエーションを使用し、大きなぼかしを設定します:
これらの影の順序は重要です。ほぼ黒い色の最初の影が新しい影の上に表示され、それぞれの後続の影が次の影の後ろに追加されます。
styles.css
の変更を保存して、ウェブブラウザーでページを更新します。次の画像に示すように、複数の影の組み合わせはユニークな効果を生み出します:
box-shadow
プロパティのぼかしスプレッド機能は、奥行きの感覚を作成するために使用できます。スプレッド値は、正の値と負の値の両方を受け入れます。強いオフセットとぼかしを組み合わせた負の値のスプレッドは、ソースコンテナから遠く離れた影を作成します。
始めに、テキストエディターでstyles.css
に戻ります。.disclosure-alert
セレクターの暗い小さな影と大きな青い影の間に、次のハイライトされたCSSを追加します。
このシャドウセットの追加では、x軸のオフセットを0
に保ちつつ、y軸をかなり6rem
移動します。次に、ぼかしは光よりも大きくありませんが、4rem
という適切なサイズです。次に、この場合のぼかしの拡散値が-2rem
に設定されます。拡散のデフォルト値は0
で、これはコンテナーに等しいです。 -2rem
では、拡散はコンテナーから内側に収縮し、深さの視覚効果を作成します。
変更内容をstyles.css
に保存し、ブラウザーでindex.html
をリフレッシュしてください。シャドウは深紫色で、メインコンテンツボックスが月の表面よりもかなり浮いているという感覚を生み出します。次の画像でレンダリングされています:
box-shadow
の別の使用法は、ヘッダーでborder
プロパティを使用したのと同様に、わずかなハイライトと影のベベル効果を作成することです。 border
の代わりにbox-shadow
を使用する利点は、コンテンツフローにシフトを引き起こすボックスモデルに影響を与えないことです。また、border
と組み合わせて使用することもできます。この効果をborder
と一緒に使用する場合、inset
値をbox-shadow
に追加する必要があります。これにより、影がコンテナー内部に配置されます。
box-shadow
にinset
値を使用するには、テキストエディタでstyles.css
を開いてください。この効果はボタンに追加されますので、これらのスタイルを.button-primary
、.button-primary:hover
、.button-secondary
、および.button-secondary:hover
に適用します。 text-shadow
と同様に、これは0 1px
および0 -1px
のオフセットの組み合わせで構成されます。違いは、inset
という単語が値の先頭または末尾に追加できることです。これは次のコードブロックでハイライト表示されています:
styles.css
にこれらの変更を保存して、ブラウザでindex.html
をリフレッシュしてください。ボタンにはテキストと同様のハイライトと影が付いています。これにグラデーションの背景が加わると、ボタンにシンプルでありながらも区別された効果が生まれます。次の画像は、ブラウザでのレンダリング方法を示しています:
最後に、inset
シャドウにブラー拡散値を適用することもできます。拡散は、ブラーの開始点を端から外側に移動させますが、inset
を使用すると、拡散は開始点を内側に移動させます。つまり、inset
の拡散に負の値が適用されると、シャドウが要素の表示領域の外に拡張されます。拡散の外側の拡張は、短いグラデーションのように見えるシャドウを作成できます。これにより、シャドウが要素のコンテンツの下に適用されるため、要素の端に丸みがあるように見える錯覚が生まれます。
この効果を作成するには、テキストエディターでstyles.css
を開きます。 .legal-contents
クラスセレクターに移動し、box-shadow
プロパティを追加します。 この影は3つの影で構成されます。 最初の影はコンテナ全体の内側に短い影を設定し、次の2つの影は要素の上部と下部に長い光の影を提供します。 次のコードブロックで強調表示されているCSSは、これがどのように設定されているかを示しています:
変更をstyles.css
に保存し、ブラウザーでページを更新します。 影は、法的テキストがコンテナに窓のように設定されている効果を作成しています。 これらの影は、この要素に適用されたborder
の色を強調するのにも役立ちます。 次の画像は、これがブラウザーでどのようにレンダリングされるかを示しています:
このセクションでは、box-shadow
プロパティを実践しました。 また、box-shadow
のぼかしスプレッドとinset
機能を使用して、より多くのスタイリングオプションを可能にしました。 最後のセクションでは、outline
プロパティを実装し、outline
をより汎用性のあるものにするためにbox-shadow
を使用します。
outline
プロパティを使用する
最後に要素のエッジに影響するプロパティはoutline
プロパティです。すべてのブラウザで、要素の:focus
状態はoutline
プロパティを使用して作成されます。ただし、各ブラウザのデフォルトの:focus
スタイルの実装は大きく異なります。outline
プロパティはborder
プロパティに類似していますが、2つの主要な違いがあります。方向プロパティのバリエーションがないこと、およびボックスモデルに影響を与えないことです。これら2つの違いのうち、後者はコンテンツフローを妨げることなく、アクティブな要素の視覚的な指標を提供するため、:focus
スタイルに理想的です。
:focus
状態のブラウザデフォルトを観察するには、ブラウザでindex.html
を開きます。ページをナビゲートするにはTAB
キーを使用し、下部のボタンのいずれかにフォーカスがあるまで移動します。使用しているブラウザによっては、デフォルトの:focus
スタイルが表示されないことがあります。たとえば、Firefoxでは白い点線のアウトラインが表示されますが、薄い灰色の背景に対しては認識できません。次の画像は、Firefox、Safari、Chromeでデフォルトのフォーカススタイルがどのように表示されるかを左から右に示しています:
outline
プロパティを使用して独自の:focus
状態をカスタマイズするには、テキストエディタでstyles.css
を開きます。.button
クラスセレクタに移動し、outline
プロパティを追加します。
border
プロパティと同様に、outline
の値には幅、スタイル、および色の値が含まれます。フォーカス状態の目的は要素に注意を引くことなので、幅は0.25rem
、つまり4px
に増加します。次に、スタイルをsolid
に設定して、フォーカス状態をSafariとChromeにより似たものにします。最後に、色を深い青にhsl(200, 100%, 50%)
で設定します。
変更をstyles.css
に保存し、ブラウザに戻りページをリフレッシュします。再び、ブラウザがoutline
をどのようにレンダリングするかが決定されます。以下の画像は、左から右にFirefox、Safari、Chromeでこれらのスタイルがどのように見えるかを示しています:
すべてのブラウザで、outline
プロパティはかなり異なる表示されます。Firefoxはボタンの丸い形全体にしっかりとフィットします。Safariは直角のボックスを作成しますが、ボタンの端に触れます。ChromeはSafariに似ていますが、ボタンとoutline
の間に余分なスペースを追加します。
すべてのブラウザでFirefoxのように見えるスタイルを作成するには、outline
の代わりにbox-shadow
を使用する必要があります。
よりカスタムな:focus
状態を作成するには、テキストエディタでstyles.css
ファイルに戻ります。最初に行うべきことは、.button:focus
セレクターのoutline
の値をnone
に変更してブラウザのデフォルトのoutline
スタイルを無効にすることです。
次に、button-primary:hover
およびbutton-secondary:hover
セレクタに移動し、:focus
状態の変化を示すカンマに続いて、次のコードブロックで強調されているように追加します:
最後に、各ボタンの:focus
に対して2つの新しいセレクタを作成します。.button-primary:focus
と.button-secondary:focus
。新しいセレクタブロック内に、同じく:hover, :focus
と同じ挿入シャドウからbox-shadow
プロパティを追加します。次に、オフセットとぼかしをすべて0
に設定したシャドウをシリーズに追加します。その後、0.25rem
のスプレッドを追加し、要素の周りに実線でボーダーを作成します。最後に、両方のインスタンスに同じ色を追加します。次のコードブロックで強調されているCSSに示すように、これを記述します:
styles.css
にこれらの変更を保存し、index.html
を更新するためにブラウザに戻ります。ページ内をナビゲートするために:focus
スタイルがどのブラウザでも同じように表示されます。次の画像は、ブラウザでのbox-shadow
バージョンのアウトラインが表示される方法と、ページ全体を示しています:
この最後のセクションでは、outline
プロパティと、各ブラウザがそれを異なる方法で使用する方法について説明しました。アクセシビリティのために、:focus
インジケータが少なくとも必要ですが、outline
プロパティを使用すると、その仕事を行うことができます。これについてさらに詳しく説明し、大きなスプレッド値を持つbox-shadow
を作成することで、より高度で視覚的に一貫した:focus
スタイルを作成しました。
結論
要素のエッジをスタイリングすることによって、ウェブサイトのデザインに変化と注目を与えることができます。 border
プロパティは、コンテンツ間の定義と区別を提供するのに役立ちます。 border-radius
プロパティは、美的な要素を柔らかくし、デザインの姿勢を定義するのに役立ちます。 テキストやボックスに影をつけることで、奥行きが生まれ、コンテンツに注目が集まります。 最後に、outline
プロパティは、キーボードフォーカスを持つ要素に注目を集めるアクセシブルな方法を提供します。 このチュートリアルでは、これらのプロパティをすべて使用して、視覚的に興味深く、使いやすいウェブページを作成しました。 これらのプロパティを理解し、どのようにしていつ使用するかを理解することで、さまざまなフロントエンドインターフェイスの問題を解決し、新しい体験を作成するのに役立ちます。
より多くのCSSチュートリアルを読みたい場合は、How To Style HTML with CSS シリーズの他のチュートリアルを試してみてください。