不透明度と透明度を使用してCSSでモーダルを作成する方法
著者は、 Diversity in Tech Fund を選択して、 Write forDOnationsプログラムの一環として寄付を受け取りました。
序章
CSSを使用してHTMLをスタイリングする場合、要素の不透明度を調整する方法は複数あり、この効果をデザインに使用する理由は複数あります。 不透明度は、影を和らげたり、特定のタスク中に重要でないコンテンツを強調しなかったり、コンテンツをフェードインまたはフェードアウトしたりするのに役立ちます。 これらの効果は、opacity
プロパティ、transparent
カラー名、またはアルファチャネルを使用して実現できます。これらは、不透明度を制御するための追加セグメントを備えたカラー値の拡張です。
このチュートリアル全体を通して、さまざまな方法を使用して不透明度と追加のプロパティを適用し、特定の効果を効果的に実現します。 :target
疑似クラスとopacity
、pointer-events
、およびtransition
プロパティを使用して、JavaScriptなしのアプローチで表示されるモーダルを作成します。 次に、各アルファチャネルの色の値を使用して、影、境界線、およびコンテンツのオーバーレイを作成します。 また、transparent
カラー値を使用して、:hover
イベントでグラデーションがカラーをアニメーション化できるようにします。
前提条件
- カスケードと特異性を使用してCSSスタイルをHTMLに適用する方法を読むことで得られるCSSのカスケードと特異性の機能の理解。
- タイプセレクター、コンビネーターセレクター、セレクターグループに関する知識。これらはCSSでスタイル設定するHTML要素を選択する方法にあります。
color
のプロパティの理解。 CSSでの色の操作の詳細については、CSSで色の値を使用する方法を参照してください。background
プロパティを使用したCSSグラデーションの知識。 CSS を使用してHTML要素に背景スタイルを適用する方法を確認して、グラデーションの背景を作成する経験を積んでください。box-shadow
プロパティの経験。これについては、 CSS で境界線、影、およびアウトラインを使用してHTML要素のエッジのスタイルを設定する方法を参照してください。- ローカルマシンに
index.html
として保存された空のHTMLファイルで、選択したテキストエディタとWebブラウザからアクセスできます。 開始するには、 HTMLプロジェクトの設定方法チュートリアルを確認し、HTML要素の使用方法と理解方法に従ってブラウザでHTMLを表示する方法を確認してください。 HTMLを初めて使用する場合は、HTMLシリーズでWebサイトを構築する方法全体を試してください。
ベースHTMLとCSSの設定
この最初のセクションでは、チュートリアル全体で作成するビジュアルスタイルのHTMLを設定します。 また、styles.css
ファイルを作成し、コンテンツのレイアウトを設定するスタイルを追加します。
まず、テキストエディタでindex.html
ファイルを開きます。 次に、次のHTMLをファイルに追加します。
index.html
<!doctype html> <html> <head> <meta charset="utf-8" /> <title>Destination: Moon</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=MuseoModerno:wght@400;700&display=swap" rel="stylesheet"> <link href="styles.css" rel="stylesheet" /> </head> <body> </body> </html>
HTMLの<head>
要素内にいくつかのページ設定が定義されています。 <meta>
要素は、テキストに使用する文字セットを定義します。これは、HTML文字コードを使用せずにコード内の特殊文字を解釈する方法をブラウザーに指示します。 <title>
要素は、ブラウザにページのタイトルを提供します。 <link>
要素はページスタイルで読み込まれます。 フォントの最初の3つはGoogleFonts からのMuseoModernoをロードし、最後の3つはstyles.css
に追加するスタイルをロードします。
次に、ページのスタイルを設定するコンテンツが必要になります。 Sagan Ipsum のサンプルコンテンツを、スタイルで使用するフィラーコピーとして使用します。 また、サイト名と小さなナビゲーションバーを含むHTMLをサイトヘッダーに適用します。 テキストエディタでindex.html
に戻り、次のコードブロックから強調表示されたHTMLを追加します。
index.html
<!doctype html> <html> <head> ... </head> <body> <header class="site-header"> <h1 class="site-name">Destination: <strong>Moon</strong></h1> <nav> <ul class="nav-list"> <li><a href="#" class="nav-link">Base Station</a></li> <li><a href="#" class="nav-link">Travel Packages</a></li> <li><a href="#" class="nav-link">Accommodations</a></li> <li><a href="#" class="nav-link">Plan Your Trip</a></li> </ul> </nav> </header> <main> <section> <h2>Schedule Your Trip</h2> <p>Sea of Tranquility great turbulent clouds with pretty stories for which there's little good evidence extraordinary claims require extraordinary evidence. Citizens of distant epochs rings of Uranus intelligent beings birth take root and flourish across the centuries. Corpus callosum invent the universe as a patch of light the only home we've ever known a mote of dust suspended in a sunbeam made in the interiors of collapsing stars. Kindling the energy hidden in matter Orion's sword.</p> <p>Vastness is bearable only through love emerged into consciousness not a sunrise but a galaxyrise emerged into consciousness courage of our questions across the centuries and billions upon billions upon billions upon billions upon billions upon billions upon billions.</p> <a href="#" class="button">Read the Disclaimer!</a> </section> </main> </body> </html>
必ずindex.html
ファイルを保存し、テキストエディタで開いたままにしてください。 次に、styles.css
という名前の新しいファイルを作成し、テキストエディタで開きます。 これは、index.html
の<head>
要素で参照されるファイルです。 styles.css
ファイルに、次のコードを追加します。
styles.css
body { margin: 0; font: 100%/1.5 sans-serif; } main { margin: 6rem auto; width: 75ch; font-size: 1.125rem; } h2 { font: 400 1.875rem/1.25 MuseoModerno, sans-serif; color: #6b2d6b; } .site-header { font: 1.125rem / 1.25 MuseoModerno, sans-serif; display: flex; align-items: center; justify-content: space-between; padding: 0 2rem; color: white; background: linear-gradient(135deg, #8e3d8e, #230f23); } .site-name { margin: 0; font-size: 1.75rem; font-weight: 400; } .nav-list { margin: 0; padding: 0; list-style: none; display: flex; align-items: stretch; } .nav-link { color: inherit; display: block; text-decoration: none; padding: 1.25rem 1.5rem; } .nav-link:hover, .nav-link:focus { color: #230f23; background-color: white; } .button { text-decoration: none; display: inline-block; padding: 0.5rem 1.25rem; color: white; background: #4c90b2; border: 1px solid #2d566b; border-radius: 0.5rem; } .button:hover, .button:focus { background-color: #2d566b; }
これらのスタイルは、body
およびmain
要素に適用されたスタイルで、ページの全体的な美学とレイアウトを設定します。 .site-header
、.site-name
、.nav-list
、および.nav-link
セレクターはすべて、ページヘッダーのスタイルを定義します。 .button
および.button:hover
ルールは、<a>
要素を大きなクリック可能なボタンのように表示するように変更します。
変更内容をstyles.css
に保存し、Webブラウザを開きます。 ファイルメニュー項目を選択し、開くオプションを選択します。 次に、プロジェクトフォルダーに移動し、ブラウザーにindex.html
ファイルをロードします。 次の画像は、ページがブラウザでどのようにレンダリングされるかを示しています。
これまでに作成したCSSは、ページの上部に紫色のヘッダーを作成し、サイトのタイトルとナビゲーションを白いテキストで表示します。 以下のコンテンツは、紫色の見出しと2段落のテキストで構成されています。 コンテンツの幅は、main
要素セレクターのmax-width: 76ch
プロパティ値で75文字に制限されています。 最後に、免責事項を読んでください!というテキストが付いた青いボタンは、コンテンツの下にある大きくてインタラクティブな要素です。
このセクション全体を通して、index.html
ファイルでHTMLを設定し、styles.css
ファイルで基本スタイルを作成しました。 次のセクションでは、opacity
プロパティを使用して、新しい要素を非表示にし、:target
疑似クラスで再表示します。
:target
状態をopacity
で作成して、要素を表示および非表示にします
opacity
プロパティの便利なアプリケーションは、画面上でコンテンツをフェードインおよびフェードアウトさせることです。 このような効果の1つの例は、ページの残りのコンテンツの前に表示されるUI要素(ライトボックスとも呼ばれます)であるモーダルがビューに遷移する場合です。 。 この効果は、opacity
およびpointer-events
プロパティと:target
疑似クラスの組み合わせで作成できます。
index.html
を開いて、モーダルのコンテンツを作成することから始めます。 </section>
と</main>
の終了タグの間に、次のコードブロックから強調表示されたHTMLを追加します。
index.html
<!doctype html> <html> <head> ... </head> <body> ... <main> <section> ... </section> <div class="modal-container"> <section class="modal"> <header class="modal-header"> <h2 class="modal-title">Destination: Moon Disclaimer</h2> <a href="#" class="modal-close">Close</a> </header> <div class="modal-content"> <p><strong>Disclaimer:</strong> Vastness is bearable only through love emerged into consciousness not a sunrise but a galaxyrise emerged into consciousness courage of our questions across the centuries and billions upon billions upon billions upon billions upon billions upon billions upon billions.</p> </div> </section> </div> </main> </body> </html>
変更をindex.html
に保存してから、テキストエディタでstyles.css
に戻り、次のコードブロックで強調表示されたCSSをファイルに追加します。
styles.css
... .button:hover { background-color: #2d566b; } .modal-container { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1000; background-color: black; display: flex; } .modal { margin: auto; width: 90%; max-width: 40rem; background-color: white; border-radius: 1.5rem; } .modal-header, .modal-content { padding: 1.5rem; }
.modal-container
クラスは、fixed
要素で可視スペース全体をカバーする領域を定義します。 次に、.modal-container
のdisplay: flex
と.modal
セレクターのmargin: auto
を組み合わせて、コンテンツを垂直方向と水平方向の両方でページの中央に配置します。
変更をstyles.css
に保存し、ブラウザに戻ってindex.html
を更新します。 次の画像に示すように、黒いオーバーレイが白いコンテナでページを引き継いだため、ページのコンテンツは表示されなくなりました。
モーダルが配置され、ページのコンテンツをカバーするようになったので、インスタンス化されるまで非表示にする必要があります。 opacity
プロパティは、要素とそのコンテンツに半透明を配置できるようにする古いプロパティです。 opacity
プロパティの値は、0
から1
の範囲で、小数点以下を問わず使用できます。
opacity
プロパティの使用を開始するには、テキストエディタでstyles.css
に戻ります。 次のコードブロックで強調表示されているように、.modal
クラスセレクターで、値が0
のopacity
プロパティを追加します。
styles.css
... .modal-container { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1000; background-color: black; display: flex; opacity: 0; } ...
これにより、モーダルビュー全体が画面上で視覚的に非表示になります。 モーダルは、必要な場合にのみ表示されます。 この条件付きの外観を実現するには、:target
疑似クラスを使用できます。
.modal-container
セレクターの後に、.modal-container:target
の新しいセレクターを追加します。 セレクターブロック内で、別のopacity
プロパティを1
の値に設定します。 次のコードブロックで強調表示されているCSSは、これがどのようにフォーマットされているかを示しています。
styles.css
... .modal-container { ... opacity: 0; } .modal-container:target { opacity: 1; } ...
これらの変更をstyles.css
に保存します。
:target
は、要素にURLフォーカスがある場合にインスタンス化されます。 Webブラウザーでは、HTML要素のid
属性は、ポンド記号またはハッシュ記号(#
)で示されるようにURLで参照できます。 .modal-container:target
をアクティブにするには、同じ要素にid
要素が必要であり、ページにはそのURLをトリガーする方法が必要です。
テキストエディタでindex.html
に戻ります。 <div class="modal-container">
要素で、値disclaimer
に設定されたid
属性を追加します。 次に、<a href="#" class="button">
要素で、href
の値を#
から#disclaimer
に変更します。 これがどのように記述されるかについては、次のコードブロックで強調表示されたHTMLを参照してください。
index.html
<!doctype html> <html> <head> ... </head> <body> ... <main> <section> ... <a href="#disclaimer" class="button">Read the Disclaimer!</a> </section> <div id="disclaimer" class="modal-container"> ... </div> </main> </body> </html>
href
値への変更は、現在のページのdisclaimer
のid
値を持つ要素に移動するようにブラウザーに指示します。 #disclaimer
がURLに追加されると、CSSの:target
がアクティブになります。
これらの変更をindex.html
に保存してから、styles.css
に戻ります。
現在のページの構造では、モーダルはマウスまたはタッチスクリーンの操作から発生するすべてのクリックおよびタッチイベントをキャプチャします。 これは、完全に透過的ですが、モーダル要素がページ全体をカバーしているためです。 要素からインタラクティブ機能を削除するには、値がnone
のpointer-events
プロパティを.modal-container
セレクターに追加します。 次に、モーダルが表示されたら、インタラクションイベントを再度受信できるようにする必要があります。 次のコードブロックで強調表示されているように、:target
疑似クラスで、pointer-events
をall
に設定します。
styles.css
... .modal-container { ... opacity: 0; pointer-events: none; } .modal-container:target { opacity: 1; pointer-events: all; } ...
pointer-events
プロパティは、要素がマウスまたはタッチベースの入力デバイスと対話する方法を変更します。 値をnone
に設定すると、要素は、目の見えるユーザーだけでなく、ポインターベースの入力デバイスにも表示されなくなります。 次に、all
値はインタラクションを復元しますが、これは.modal-container
がアクティブで表示されるようにURLで指定されている場合に限ります。
最後に、モーダルをフェードインおよびフェードアウトさせるために、transition
プロパティを追加して、opacity.
の0
と1
の値の間でアニメーション化します。
次のコードブロックで強調表示されているように、styles.css
に戻り、transition
プロパティを.modal-container
セレクターに追加します。
styles.css
... .modal-container { ... opacity: 0; pointer-events: none; transition: opacity 250ms ease; } .modal-container:target { opacity: 1; pointer-events: all; } ...
transition
プロパティは、一連のプロパティの省略形です。 opacity
は、これが移行するプロパティであることをブラウザに通知します。 250ms
は、移行が完了するまでにかかる時間であり、単位はミリ秒単位です。 最後に、ease
は、遷移がどのように発生するかを説明します。 この場合、ease
は、ゆっくりと開始し、速度を上げてから、遷移の終わり近くで再び速度を落とすことを意味します。
トランジションは、モーダル内の Close リンクを押して、モーダルが表示および非表示になったときに機能します。 このCloseリンクのhref
値は#
に設定されており、URLが#disclaimer
から#
に変更され、[ X134X]状態。
変更内容をstyles.css
に保存し、ブラウザでindex.html
を更新します。 次のアニメーションは、モーダルがどのように表示および非表示になるかを示しています。
このセクションでは、モーダルコンテナを視覚的に非表示にするために使用したopacity
プロパティについて説明しました。 また、:target
疑似クラス、pointer-events
プロパティ、およびtransition
プロパティを使用して、フェードインおよびフェードアウト効果を作成しました。 次のセクションでは、モーダルをより半透明にするために、アルファチャネルの色を使用します。
アルファチャネルを使用して透明な色の値を作成する
アルファチャネルはopacity
プロパティに似ていますが、代わりにrgb()
、hsl()
、または16進数で定義されたカラー値の追加セグメントです。 opacity
プロパティが要素全体とその子を調整する場合、アルファチャネルは特定のプロパティの色の不透明度のみを調整します。 このセクション全体を通して、各アルファチャネルカラー値を使用して実践します。
アルファチャンネルの色の値の操作を開始するには、テキストエディタでstlyes.css
を開きます。 次に、.modal-container
クラスセレクターに移動します。 次のコードブロックで強調表示されているように、background-color
プロパティの値を#000
からrgba(0, 0, 0, 0.75)
に変更します。
styles.css
... .modal-container { ... background-color: rgba(0,0,0,0.75); ... } ...
rgba()
の色の値は、rgb()
と同じように機能し、赤、緑、青の光のレベルを示す3つのコンマ区切りの数字が含まれています。 いずれかのカラー値を0
に設定すると、完全にオフ(黒)になり、255
はフル輝度(白)になります。 これらの3つのカラーチャネル間で、何百万もの色を生成できます。 4番目の数値はアルファチャネルです。これはopacity
プロパティのように機能し、0
から1
までの小数点値です。 アルファチャネルを調整すると、色が透明になり、その背後にあるコンテンツが色を通して見えるようになります。
変更内容をstyles.css
に保存し、Webブラウザでindex.html
を開きます。 免責事項を読む!ボタンを押して、モーダルをアクティブにします。 黒のオーバーレイの背景はまだ黒ですが、透明になり、背後のページが表示されます。
オーバーレイが透明になったら、モーダルに切り替えて、背景を白いテキストのある紫色のグラデーションに変更することで、より視覚的なスタイルを設定します。 テキストエディタでstyles.css
に戻り、次のコードブロックから次の強調表示されたCSSを追加します。
styles.css
... .modal { margin: auto; width: 90%; max-width: 40rem; background: linear-gradient(135deg, hsl(300, 40%, 20%),hsl(300, 40%, 5%)); border-radius: 1.5rem; } .modal-header, .modal-content { padding: 1.5rem; } .modal-header { display: flex; justify-content: space-between; } .modal-title { margin: 0; color: white; } .modal-close { color: white; } .modal-content { color: white; }
このアップデートをstyles.css
に保存してから、ブラウザでindex.html
を更新してください。 次の画像に示すように、モーダルのスタイルが更新およびレンダリングされます。
ここで、テキストエディタのstyles.css
に戻ります。 ここで、hsla()
カラー値を使用して、モーダルヘッダーの色を明るくします。 また、モーダルに一致するborder-radius
値を持つように上部コーナーを設定する必要があります。これにより、ヘッダーがモーダル領域の外側に表示されなくなります。 次のコードブロックで強調表示されているCSSは、これを設定する方法を示しています。
styles.css
... .modal-header { display: flex; justify-content: space-between; background-color: hsla(300, 80%, 90%, 0.2); border-radius: 1.5rem 1.5rem 0 0; } ...
background-color
値はhsla()
形式を使用し、rgba()
値と同様に、hsl()
形式ですが、アルファチャネルがあります。 hsl()
は、カラーホイールからの次数値、彩度パーセント値、および最終的な色を生成する明度パーセント値の3つの部分で構成されます。 300
はカラーホイールの青と赤の間にカラー値を配置し、80%
は彩度が高く、より多くの色とより少ないグレーを意味し、90%
は最終的な色を明るくします。 最後に、アルファチャネルはopacity
プロパティと同じように機能し、0.2
は値を完全に透明に近づけます。 これにより、グラデーションの上に明るいオーバーレイが作成され、ヘッダーに定義が提供されます。
これらの変更をstyles.css
に保存し、ブラウザに戻ってindex.html
を更新します。 モーダルのヘッダーは、モーダルのコンテンツと区別するために、領域にピンク色のハイライトが表示されるようになりました。 次の画像は、モーダルヘッダーがブラウザでどのようにレンダリングされるかを示しています。
透明な色の値を作成する別の方法は、16進値を使用することです。 16進数の色の値は、0
から9
またはa
からf
の組み合わせの3つのペアで構成され、0から255の範囲の数値に相当します。 最初の3桁は赤、緑、青の値で、#RRGGBB
の形式になっています。 アルファチャンネルを作成するために、4番目のセットが追加され、パターン#RRGGBBAA
が作成されます。
16進アルファチャネルの操作を開始するには、テキストエディタでstyles.css
に戻ります。 次に、モーダルのヘッダーとコンテンツ領域に境界線を追加して、より明確にします。 これらの境界線は同じ16進値を使用しますが、アルファチャネルには異なる値が与えられます。 次のコードブロックで強調表示されているCSSは、これらのスタイルの記述方法を示しています。
styles.css
... .modal-header { display: flex; justify-content: space-between; background-color: hsla(300, 80%, 90%, 0.2); border-radius: 1.5rem 1.5rem 0 0; border: 4px solid #f7baf72f; border-bottom: none; } ... .modal-content { color: white; border-radius: 0 0 1.5rem 1.5rem; border: 4px solid #f7baf744; border-top: none; } ...
ヘッダーとコンテンツはそれぞれ#f7baf7
と同じ16進色ですが、アルファチャネル値が異なります。 modal-header
セレクターのborder-color
のアルファチャネルは2f
に設定されています。これは、00
が完全に透過的なアルファチャネル値であるため、より透過的です。 .modal-content
のアルファチャンネルは44
に設定されているため、より不透明になります。
変更内容をstyles.css
に保存し、Webブラウザでindex.html
を更新します。 次の画像は、これらの境界線がブラウザでどのようにレンダリングされるかを示しています。
最後に、6桁の16進数の色は、3桁の省略形として記述できます。ここで、#33ccee
は#3ce
と同じです。 同様に、アルファチャネルを使用した16進値は、#33ccee99
を#3ce9
に短縮して同じ色にすることができるように、4桁の省略形として記述できます。
アルファチャネルを使用した16進数の省略形での作業を開始するには、テキストエディタでstlyes.css
に戻ります。 次に、.modal
クラスセレクターに移動し、box-shadow
プロパティを追加します。 ここでは、モーダルに大きなドロップシャドウを作成します。これは黒ですが、アルファチャネルによって柔らかくなります。 次のコードブロックで強調表示されているCSSを.modal
セレクターブロックに追加します。
styles.css
... .modal { margin: auto; width: 90%; max-width: 40rem; background: linear-gradient(135deg, hsl(300, 40%, 20%),hsl(300, 40%, 5%)); border-radius: 1.5rem; box-shadow: 0 1rem 2rem #000a; } ...
この影は、1rem
だけx軸を下に落とし、ぼかし2rem
を広げます。 次に、#000a
値は、3つのカラー値すべてをオフにすることにより、完全な黒色を定義します。 a
は、aa
と同等であり、数値は170
であり、アルファチャネルに約66%の透明度を提供します。 これにより、シャドウがわずかに暗くなりますが、モーダルの下に奥行きを与えるのに十分な大きさを保ちます。
この追加を必ずstyles.css
に保存してから、ブラウザでindex.html
を更新してください。 モーダルには、より多くの定義と深さがあります。 次の画像は、さまざまなカラー値を使用したモーダルのレンダリングを示しています。
このセクションでは、アルファチャネルで3つの異なる色の値を使用して、特定のプロパティの色に不透明度を適用しました。 これらの色をbackground-color
プロパティ、border
プロパティ、およびbox-shadow
プロパティに追加しました。 次のセクションでは、transparent
の名前付きカラー値を使用して、一意のグラデーションを作成し、コンテンツを非表示にします。
transparent
カラー値をlinear-gradient
に追加する
アルファチャネルをサポートするさまざまな色の値は、色を識別できる必要がある場合に役立ちます。 ただし、色が不要な場合は、transparent
という名前の色が役立ちます。 このセクションでは、モーダルの閉じるボタンを非表示にし、linear-gradient()
を使用してX形状を作成します。すべてtransparent
を使用します。 ] 価値。
transparent
値の使用を開始するには、テキストエディタでstyles.css
を開きます。 次に、前に追加した.modal-close
クラスセレクターに移動します。 次のコードブロックで強調表示されているように、セレクター内で、color
プロパティ値をwhite
からtransparent
に変更します。
styles.css
... .modal-close { color: transparent; } ...
この変更により、スペースからテキストが削除されることはありません。 ページ上の視覚的なレンダリングからのみ削除されます。
次に、 X シェイプを作成する場所があるように、クローズリンクから正方形を作成します。 display
プロパティをblock
に設定することから始めます。これにより、<a>
をより視覚的に構成できるようになります。 次に、height
およびwidth
プロパティを作成し、それぞれを1.5rem
に設定すると、正方形が作成されます。 最後に、overflow
プロパティをhidden
に設定します。これにより、テキストがコンテナの外に出てインタラクティブスペースが追加されるのを防ぎます。 次のコードブロックで強調表示されているCSSは、正方形を設定する方法を示しています。
styles.css
... .modal-close { color: transparent; display: block; height: 1.5rem; width: 1.5rem; overflow: hidden; } ...
最後の部分は、2つのlinear-gradient()
値で構成される複数の背景インスタンスを使用してX形状を作成することです。 これを設定するには、次のコードブロックから強調表示されたコードを追加します。
styles.css
... .modal-close { color: transparent; display: block; height: 1.5rem; width: 1.5rem; overflow: hidden; background-image: linear-gradient( to top right, transparent 48%, white 48%, white 52%, transparent 52% ), linear-gradient( to top left, transparent 48%, white 48%, white 52%, transparent 52% ); } ...
このコードについて最初に注意することは、linear-gradient()
のさまざまなセグメントが別々の行にあることです。これは、複雑な背景をよりわかりやすく読みやすくするために行われます。 このCSSは引き続き有効であり、値がプロパティと同じ行にある必要はありません。 次に、transparent
とwhite
の重複するパーセント値は、グラデーションがないことを意味します。 代わりに、色はtransparent
からwhite
にすぐに反転します。 最後に、to the right
とto the top
は、重なり合う45度の角度で2つの勾配を作成します。
この変更をstyles.css
に保存し、Webブラウザでindex.html
を開きます。 免責事項を読む!ボタンを選択すると、次の画像に示すように、モーダルはクローズリンクではなく、大きくて薄いX形状になります。
最後に、:hover
および:focus
状態は、 X の形状が相互作用の中心である場合に、より目立つようにするために必要です。 このために、前のグラデーションを複製し、位置を調整して、ソリッドwhite
領域を拡大します。
X のインタラクティブな状態を作成するには、テキストエディタでstyles.css
に戻ります。 .modal-close
クラスセレクターに続いて、.modal-close:hover
と.modal-close:focus
で構成される新しいグループセレクターを作成します。 次に、background-image
プロパティと値を.modal-close
から新しいセレクターに複製します。 最後に、48%
セグメントを46%
に減らし、52%
を54%
に増やします。
style.css
... .modal-close { ... } .modal-close:hover, .modal-close:focus { background-image: linear-gradient( to top right, transparent 46%, white 46%, white 54%, transparent 54% ), linear-gradient( to top left, transparent 46%, white 46%, white 54%, transparent 54% ); } ...
これらの変更をstyles.css
に保存し、ブラウザでページを更新します。 これで、 X にカーソルを合わせるか、キーボードフォーカスを指定すると、形状を作成するグラデーションのサイズが大きくなり、Xが太字になっているような効果が得られます。 次のアニメーションは、ホバーイベント中にこの効果がブラウザでどのようにレンダリングされるかを示しています。
このセクションでは、transparent
プロパティを紹介し、それを使用してコンテンツを非表示にし、linear-gradient()
値を使用してXアイコンを作成しました。 前のセクションでは、グラデーションのtransparent
値を使用して、ボタンスタイルの要素にアニメーション効果を提供します。
:hover
状態を使用して透過的なcolor
値の間を遷移する
クリエイティブなソリューションを必要とすることがあるtransition
プロパティの1つの側面は、すべてのプロパティをアニメーション化できるわけではないということです。 これらのプロパティの1つはbackground-image
です。これは、このプロパティのlinear-gradient
の値をアニメートできないことを意味します。 ただし、background-image
が存在する場合でも、background-color
の値はアニメーション化できます。 このセクションでは、transparent
とアルファチャネルの色の値を使用して、グラデーションアニメーションのように見えるトランジションアニメーションを作成します。
アニメーショングラデーションを作成するには、テキストエディタでstyles.css
を開きます。 次に、.button
クラスセレクターに移動します。 .button
クラスでは、セレクターと.button:hover
の間でbackground-color
にすでに変更が加えられています。 強調表示されたtransition
プロパティと値を、次のコードブロックからstyles.css
ファイルに追加します。
styles.css
... .button { text-decoration: none; display: inline-block; padding: 0.5rem 1.25rem; color: white; background: #4c90b2; border: 1px solid #2d566b; border-radius: 0.5rem; transition: background-color 250ms ease; } .button:hover, .button:focus { background-color: #2d566b; } ...
変更内容をstyles.css
に保存し、Webブラウザでindex.html
を開きます。 ボタンにカーソルを合わせると、background-color
が水色と濃い青の間でアニメーション化されます。 次のアニメーションは、これがブラウザでどのようにレンダリングされるかを示しています。
ここで、グラデーションを追加するには、テキストエディタでstyles.css
に戻ります。 .button
セレクターに戻り、linear-gradient()
を使用してbackground-image
プロパティを追加します。 グラデーションの方向はto bottom
で、水色のアルファチャンネルから始まり、transparent
に進みます。 アニメーションは、アルファチャンネルのダークブルーで終了します。 次のコードブロックで強調表示されているCSSは、このグラデーションの記述方法を示しています。
styles.css
... .button { text-decoration: none; display: inline-block; padding: 0.5rem 1.25rem; color: white; background: #4c90b2; border: 1px solid #2d566b; border-radius: 0.5rem; background-image: linear-gradient( to bottom, hsla(200, 40%, 80%, 0.4), transparent, hsla(200, 40%, 20%, 0.6) ); transition: background-color 250ms ease; } ...
このグラデーションはbackground-color
に重なっており、グラデーションが水色から真ん中の青、そして濃い青に変化しているように見えます。 ボタンがインタラクティブなイベントに遭遇すると、background-color
が濃い青に変わり、全体的なグラデーションが暗くなったように見えます。
これらの更新をstyles.css
に保存してから、ブラウザーでindex.html
ファイルに戻り、ページを更新してください。 次のアニメーションに示すように、カーソルをボタンに合わせると、グラデーションが水色のグラデーションから濃い青色のグラデーションにアニメーション化されているように見えます。
この最後のセクションでは、カラー値、transparent
名前付き値、およびtransition
プロパティを使用して、グラデーションアニメーションの錯覚を作成しました。 これにより、どのような種類のプロパティをアニメーション化できるかも学びました。
結論
このチュートリアル全体を通して、opacity
プロパティと多くのカラー値をアルファチャネルで使用しました。 opacity
とpointer-events
およびtransition
を使用してフェードイン効果を作成し、モーダルをオンデマンドで表示しました。 また、コンテンツの色の透明度とオーバーレイを制御するために使用可能なさまざまな色の値を使用しました。 transparent
という名前の値を使用して、Xアイコンを作成してモーダルを閉じました。 最後に、色、transparent
値、グラデーション、およびtransition
の組み合わせを使用して、ボタンにアニメーションのグラデーションのような錯覚を作成しました。
opacity
と透明色をウェブデザインに採用する多くの有用な理由があります。 opacity
プロパティを使用して、必要なときに表示されるようになっている要素のフェードインおよびフェードアウト効果をアニメーション化できます。 透明度の制御を可能にするさまざまな色の値は、色とコンテンツをブレンドする多くの方法を提供します。 全体として、透明性を作成するこれらの方法は、多くのユニークな効果とスタイルを作成することができます。
CSSチュートリアルをもっと読みたい場合は、CSSシリーズでHTMLのスタイルを設定する方法の他のチュートリアルを試してください。