開発者ドキュメント

不透明度と透明度を使用してCSSでモーダルを作成する方法

序章

CSSを使用してHTMLをスタイリングする場合、要素の不透明度を調整する方法は複数あり、この効果をデザインに使用する理由は複数あります。 不透明度は、影を和らげたり、特定のタスク中に重要でないコンテンツを強調しなかったり、コンテンツをフェードインまたはフェードアウトしたりするのに役立ちます。 これらの効果は、 opacity プロパティ、 transparent 色名、またはアルファチャネル。これは、不透明度を制御するための追加のセグメントを持つ色値の拡張です。

このチュートリアル全体を通して、さまざまな方法を使用して不透明度と追加のプロパティを適用し、特定の効果を効果的に実現します。 JavaScriptを使用しないアプローチで表示されるモーダルを作成します。 :target 疑似クラスと opacity, pointer-events、 と transition プロパティ。 次に、各アルファチャネルの色の値を使用して、影、境界線、およびコンテンツのオーバーレイを作成します。 また、 transparent グラデーションで色をアニメーション化するのに役立つ色の値 :hover イベント。

前提条件

ベース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>

いくつかのページ設定が内部で定義されています <head> HTMLの要素。 The <meta> elementは、テキストに使用する文字セットを定義します。これは、HTML文字コードを使用せずにコード内の特殊文字を解釈する方法をブラウザーに指示します。 The <title> elementは、ブラウザにページのタイトルを提供します。 The <link> 要素はページスタイルで読み込まれます。 Google Fonts からフォントの最初の3つは、Museo Modernoをロードし、最後の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 テキストエディタで開きます。 これは、で参照されているファイルです。 <head> の要素 index.html. の中に 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;
}

これらのスタイルは、ページの一般的な美学とレイアウトを設定し、スタイルは bodymain 要素。 The .site-header, .site-name, .nav-list、 と .nav-link セレクターはすべて、ページヘッダーのスタイルを定義します。 The .button.button:hover ルールを変更します <a> 大きなクリック可能なボタンのように表示される要素。

変更をに保存します styles.css、次にWebブラウザを開きます。 ファイルメニュー項目を選択し、開くオプションを選択します。 次に、プロジェクトフォルダに移動して、 index.html ブラウザのファイル。 次の画像は、ページがブラウザでどのようにレンダリングされるかを示しています。

これまでに作成したCSSは、ページの上部に紫色のヘッダーを作成し、サイトのタイトルとナビゲーションを白いテキストで表示します。 以下のコンテンツは、紫色の見出しと2段落のテキストで構成されています。 コンテンツの幅は75文字に制限されています。 max-width: 76ch のプロパティ値 main 要素セレクター。 最後に、免責事項を読んでください!というテキストが付いた青いボタンは、コンテンツの下にある大きくてインタラクティブな要素です。

このセクション全体を通して、HTMLを設定します。 index.html ファイルを作成し、基本スタイルを作成しました styles.css ファイル。 次のセクションでは、 opacity 新しい要素を非表示にして再表示するプロパティ :target 疑似クラス。

作成 :target との状態 opacity 要素を表示および非表示にする

の便利なアプリケーション opacity プロパティは、コンテンツを画面上でフェードインおよびフェードアウトさせることです。 このような効果の1つの例は、ページの残りのコンテンツの前に表示されるUI要素(ライトボックスとも呼ばれます)であるモーダルがビューに遷移する場合です。 。 この効果は、 opacitypointer-events プロパティと :target 疑似クラス。

開くことから始めます index.html モーダルのコンテンツを作成します。 次のコードブロックから強調表示されたHTMLを </section></main> 終了タグ:

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;
}

The .modal-container クラスは、可視スペース全体をカバーする領域を定義します。 fixed エレメント。 そうして display: flex.modal-container と組み合わせる margin: auto.modal セレクターは、コンテンツを垂直方向と水平方向の両方でページの中央に配置します。

変更をに保存します styles.css ブラウザに戻って更新します index.html. 次の画像に示すように、黒いオーバーレイが白いコンテナでページを引き継いだため、ページのコンテンツは表示されなくなりました。

モーダルが配置され、ページのコンテンツをカバーするようになったので、インスタンス化されるまで非表示にする必要があります。 The opacity プロパティは、要素とそのコンテンツに半透明を配置できるようにする古いプロパティです。 の値 opacity プロパティの範囲は 01、間に小数点を入れます。

使用を開始するには opacity プロパティ、に戻る styles.css テキストエディタで。 に .modal クラスセレクター、追加 opacity の値を持つプロパティ 0、次のコードブロックで強調表示されているように:

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.

The :target 要素にURLフォーカスがある場合にインスタンス化されます。 Webブラウザでは、 id HTML要素の属性は、ポンド記号またはハッシュ記号(#). のために .modal-container:target 有効にするには、同じ要素に id 要素であり、ページにはそのURLをトリガーする方法が必要です。

戻る index.html テキストエディタで。 に <div class="modal-container"> 要素、追加 id 値に設定された属性 disclaimer. 次に、 <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 valueは、ブラウザに次の要素に移動するように指示します。 id の値 disclaimer 現在のページの。 一度 #disclaimer URLに追加され、次に :target CSSでアクティブになります。

これらの変更をに保存します index.html、次に戻る styles.css.

現在のページの構造では、モーダルはマウスまたはタッチスクリーンの操作から発生するすべてのクリックおよびタッチイベントをキャプチャします。 これは、完全に透過的ですが、モーダル要素がページ全体をカバーしているためです。 要素から双方向性を削除するために、 pointer-events の値を持つプロパティ none.modal-container セレクタ。 次に、モーダルが表示されたら、インタラクションイベントを再度受信できるようにする必要があります。 に :target 疑似クラス追加 pointer-events に設定 all、次のコードブロックで強調表示されているように:

styles.css
...
.modal-container {
  ...
  opacity: 0;
  pointer-events: none;
}

.modal-container:target {
  opacity: 1;
  pointer-events: all;
}
...

The pointer-events プロパティは、要素がマウスまたはタッチベースの入力デバイスと対話する方法を変更します。 値をに設定することにより none、要素は、目の見えるユーザーだけでなく、ポインタベースの入力デバイスにも表示されなくなります。 そうして all 値は相互作用を復元しますが、 .modal-container アクティブで表示されるようにURLで指定されます。

最後に、モーダルをフェードインおよびフェードアウトさせるために、 transition 間でアニメートするプロパティ 01 の値 opacity.

戻る 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;
}
...

The transition プロパティは、一連のプロパティの省略形です。 The opacity これが遷移するプロパティであることをブラウザに通知します。 The 250ms は、移行が完了するまでにかかる時間であり、単位はミリ秒単位です。 最後に、 ease 移行がどのように発生するかを説明します。 この場合、 ease ゆっくりと開始し、速度を上げてから、遷移の終わり近くで再び速度を落とすことを意味します。

トランジションは、モーダル内の Close リンクを押して、モーダルが表示および非表示になったときに機能します。 このCloseリンクには href に設定された値 #、URLをから変更します #disclaimer#、削除 :target 州。

変更をに保存します styles.css 更新します index.html ブラウザで。 次のアニメーションは、モーダルがどのように表示および非表示になるかを示しています。

このセクションでは、 opacity モーダルコンテナを視覚的に非表示にするために使用したプロパティ。 あなたも使用しました :target 疑似クラス、 pointer-events プロパティ、および transition フェードインおよびフェードアウト効果を作成するプロパティ。 次のセクションでは、モーダルをより半透明にするために、アルファチャネルの色を使用します。

アルファチャネルを使用して透明な色の値を作成する

アルファチャネルopacity プロパティですが、代わりに、を介して定義されたカラー値の追加セグメントです。 rgb(), hsl()、または16進数。 どこ opacity プロパティは要素全体とその子を調整し、アルファチャネルは特定のプロパティの色の不透明度のみを調整します。 このセクション全体を通して、各アルファチャネルカラー値を使用して実践します。

アルファチャネルの色の値の操作を開始するには、 stlyes.css テキストエディタで。 次に、 .modal-container クラスセレクター。 変更 background-color からのプロパティの値 #000rgba(0, 0, 0, 0.75)、次のコードブロックで強調表示されているように:

styles.css
...
.modal-container {
  ...
  background-color: rgba(0,0,0,0.75);
  ...
}
...

The rgba() 色の値は次のように機能します rgb()、赤、緑、青の光のレベルを示す3つのコンマ区切りの数字が含まれています。 カラー値の1つがに設定されている場合 0、完全にオフ(黒)、および 255 完全な明るさ(白)であることを意味します。 これらの3つのカラーチャネル間で、何百万もの色を生成できます。 4番目の番号はアルファチャネルで、次のように機能します。 opacity プロパティであり、からの小数点値です 01. アルファチャネルを調整すると、色が透明になり、その背後にあるコンテンツが色を通して見えるようになります。

変更をに保存します styles.css 開いて index.html Webブラウザで。 免責事項を読む!ボタンを押して、モーダルをアクティブにします。 黒のオーバーレイの背景はまだ黒ですが、透明になり、背後のページが表示されます。

オーバーレイが透明になったら、モーダルに切り替えて、背景を白いテキストのある紫色のグラデーションに変更することで、より視覚的なスタイルを設定します。 戻る 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() モーダルヘッダーの色を明るくするためのcolor値。 また、上部の角を設定して、 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;
}
...

The background-color 値は hsla() フォーマット、そしてのように rgba() 値、それは hsl() フォーマットしますが、アルファチャネルを使用します。 The hsl() カラーホイールからの次数値、彩度パーセント値、および最終的な色を生成する明度パーセント値の3つの部分で構成されます。 The 300 カラーホイールに青と赤の間のカラー値を配置します。 80% 彩度が高く、色が多く、灰色が少ないことを意味します。 90% 最終的な色を明るくします。 最後に、アルファチャネルは opacity プロパティ、および 0.2 値を完全に透明に近づけます。 これにより、グラデーションの上に明るいオーバーレイが作成され、ヘッダーに定義が提供されます。

これらの変更をに保存します styles.css ブラウザに戻って更新します index.html. モーダルのヘッダーは、モーダルのコンテンツと区別するために、領域にピンク色のハイライトが表示されるようになりました。 次の画像は、モーダルヘッダーがブラウザでどのようにレンダリングされるかを示しています。

透明な色の値を作成する別の方法は、16進値を使用することです。 16進数の色の値は、次の組み合わせの3つのペアで構成されます。 09 また af 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;
}
...

ヘッダーとコンテンツはそれぞれ同じ16進色で #f7baf7、ただし、アルファチャネル値は異なります。 The modal-header セレクターの border-color アルファチャネルがに設定されています 2f、より透明です。 00 完全に透過的なアルファチャネル値です。 The .modal-content アルファチャネルがに設定されている 44、これにより不透明になります。

変更をに保存します styles.css 更新します index.html Webブラウザで。 次の画像は、これらの境界線がブラウザでどのようにレンダリングされるかを示しています。

最後に、6桁の16進数の色は、3桁の省略形として記述できます。 #33ccee と同じです #3ce. 同様に、アルファチャネルを使用した16進値は、4桁の省略形として記述できます。 #33ccee99 に短縮することができます #3ce9 同じ色になります。

アルファチャネルを使用した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;
}
...

この影はx軸を次のように落とします 1rem ぼかしを広げます 2rem. 次に、 #000a valueは、3つの色の値をすべてオフにすることにより、完全な黒色を定義します。 The a、これは aa の数値は 170は、アルファチャネルに約66%の透明度を提供します。 これにより、シャドウがわずかに暗くなりますが、モーダルの下に奥行きを与えるのに十分な大きさを保ちます。

この追加を必ず保存してください styles.css、次に更新 index.html ブラウザで。 モーダルには、より多くの定義と深さがあります。 次の画像は、さまざまなカラー値を使用したモーダルのレンダリングを示しています。

このセクションでは、アルファチャネルで3つの異なる色の値を使用して、特定のプロパティの色に不透明度を適用しました。 これらの色をに追加しました background-color プロパティ、 border プロパティ、および box-shadow 財産。 次のセクションでは、の名前付きカラー値を使用します transparent 独自のグラデーションを作成し、コンテンツを非表示にします。

追加する transparent 色の値を linear-gradient

アルファチャネルをサポートするさまざまな色の値は、色を識別できる必要がある場合に役立ちます。 ただし、色が不要な場合は、 transparent 名前付きの色が便利になります。 このセクションでは、モーダルの閉じるボタンを非表示にし、X形状を作成します。 linear-gradient()、すべてを使用して transparent 価値。

使用を開始するには transparent 値、開く styles.css テキストエディタで。 次に、に移動します .modal-close 以前に追加したクラスセレクター。 セレクター内で、 color からのプロパティ値 whitetransparent、次のコードブロックで強調表示されているように:

styles.css
...
.modal-close {
  color: transparent;
}
...

この変更により、スペースからテキストが削除されることはありません。 ページ上の視覚的なレンダリングからのみ削除されます。

次に、 X シェイプを作成する場所があるように、クローズリンクから正方形を作成します。 を追加することから始めます display プロパティをに設定 block、これにより <a> より視覚的に構成可能になります。 次に、 heightwidth プロパティを設定し、それぞれをに設定します 1.5rem、正方形を作成します。 最後に、 overflow プロパティをに設定 hidden、テキストがコンテナの外に出てインタラクティブスペースを追加するのを防ぎます。 次のコードブロックで強調表示されているCSSは、正方形を設定する方法を示しています。

styles.css
...
.modal-close {
  color: transparent;
  display: block;
  height: 1.5rem;
  width: 1.5rem;
  overflow: hidden;
}
...

最後の部分は、2つで構成される複数の背景のインスタンスを使用してXシェイプを作成することです。 linear-gradient() 値。 これを設定するには、次のコードブロックから強調表示されたコードを追加します。

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は引き続き有効であり、値がプロパティと同じ行にある必要はありません。 次に、重複したパーセント値 transparentwhite グラデーションがないことを意味します。 代わりに、色はからすぐに反転します transparentwhite. 最後に、 to the rightto the top オーバーラップする45度の角度で2つのグラデーションを作成します。

この変更をに保存します styles.css 開いて index.html Webブラウザで。 免責事項を読む!ボタンを選択すると、次の画像に示すように、モーダルはクローズリンクではなく、大きくて薄い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 プロパティ、およびコンテンツを非表示にし、を使用してXアイコンを作成するために使用しました linear-gradient() 値。 最後のセクションでは、 transparent ボタンスタイルの要素にアニメーション効果を提供するのに役立つグラデーションの値。

を使用して :hover 状態から透明への移行 color

の1つの側面 transition クリエイティブなソリューションが必要になることがあるプロパティは、すべてのプロパティをアニメーション化できるわけではないということです。 これらのプロパティの1つは background-image、の値を意味します linear-gradient このプロパティではアニメートできません。 しかし background-color 値は、たとえ background-image が存在します。 このセクションでは、を使用してグラデーションアニメーションのように見えるトランジションアニメーションを作成します。 transparent およびアルファチャネルの色の値。

アニメーショングラデーションを作成するには、 styles.css テキストエディタで。 次に、 .button クラスセレクター。 The .button クラスにはすでに変更があります background-color そのセレクターと .button:hover. 強調表示されたものを追加します 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 開いて index.html あなたのウェブブラウザで。 ボタンにカーソルを合わせると、 background-color ライトブルーとダークブルーの間でアニメートします。 次のアニメーションは、これがブラウザでどのようにレンダリングされるかを示しています。

ここで、グラデーションを追加するには、に戻ります。 styles.css テキストエディタで。 に戻る .button セレクターと追加 background-image とプロパティ linear-gradient(). グラデーションの方向は次のようになります 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 プロパティとアルファチャネルを使用した多くのカラー値。 使いました opacitypointer-eventstransition モーダルをオンデマンドで表示するフェードイン効果を作成します。 また、コンテンツの色の透明度とオーバーレイを制御するために使用可能なさまざまな色の値を使用しました。 あなたは transparent モーダルを閉じるためのXアイコンを作成するための名前付き値。 最後に、色の組み合わせを使用しました。 transparent 値、グラデーション、および transition ボタンにアニメーションのグラデーションのような錯覚を作成します。

採用する多くの有用な理由があります opacity ウェブデザインに透明な色。 The opacity プロパティを使用して、必要なときに表示されるようになっている要素のフェードインおよびフェードアウト効果をアニメーション化できます。 透明度の制御を可能にするさまざまな色の値は、色とコンテンツをブレンドする多くの方法を提供します。 全体として、透明性を作成するこれらの方法は、多くのユニークな効果とスタイルを作成することができます。

CSSチュートリアルをもっと読みたい場合は、CSSシリーズでHTMLのスタイルを設定する方法の他のチュートリアルを試してください。

モバイルバージョンを終了