目次
質問
解決策
ホームページ ウェブフロントエンド htmlチュートリアル CSS Secret Garden: 不規則なShadow_html/css_WEB-ITnose

CSS Secret Garden: 不規則なShadow_html/css_WEB-ITnose

Jun 21, 2016 am 09:01 AM

『CSS Secrets』は @Lea Verou による最新の本で、CSS に関する小さな秘密がいくつか説明されています。これは CSSers にとって読む価値のある本です。一定期間読んだ後、私、@全域と @彦子は、関連する読書感想文を W3cplus で公開し、皆さんと共有します。

質問

box-shadow は、長方形または border-radius で作成できる形状にドロップ シャドウを適用する場合に最適です。ただし、疑似要素やその他の半透明のスタイルがある場合は、box-shadow が透明度を無視するため、うまく機能しない可能性があります。例:

  • 半透明の画像、背景画像、または境界線画像 (昔ながらの金色の額縁など)。
  • 背景のない点線の境界線、破線の境界線、または半透明の境界線 (境界ボックスではない場合は背景クリップ)
  • 擬似要素を介してスピーカーの角を指している場合、ダイアログのバブルが作成されます。
  • 「コーナーの切り抜き」秘密ページ 96 で見たようなコーナーの切り抜き。
  • この章で後述するものも含め、最も多くの折り畳まれたコーナー エフェクト。
  • 「ダイヤモンド画像」シークレットの 90 ページにあるダイヤモンド画像のような、クリップパスを介して作成されたグラフィック。

CSS スタイルを持つ要素で無効な box-shadow の場合、適用される box-shadow 値は 2px 2px 10px rgba(0,0,0,.5)

box-shadow の適用に失敗した結果を上の画像に示します。この状況に対する解決策はあるのでしょうか、それとも影の影響を完全に放棄する必要があるのでしょうか?

解決策

フィルター エフェクト仕様は、SVG から借用した新しいフィルター属性を介して、この問題の解決策を提供します。ただし、CSS フィルターは基本的に SVG フィルターから派生していますが、SVG の知識は必要ありません。代わりに、ブラー()、グレースケール()、ドロップシャドウ()などの便利な関数を介して指定されます。必要に応じて、次のようにスペースで区切って複数のフィルターをチェーンで適用することもできます。

filter: blur() grayscale() drop-shadow();
ログイン後にコピー

Drop-shadow() フィルターは、基本的な box-shadow と同じパラメーターを受け入れます。拡散半径や挿入キーワードはなく、複数の異なるシャドウをカンマで区切ることはできません。たとえば、

box-shadow: 2px 2px 10px rgba(0,0,0,.5);
ログイン後にコピー

と書く代わりに、次のように書くこともできます:

filter: drop-shadow(2px 2px 10px rgba(0,0,0,.5));
ログイン後にコピー

以下の画像では、最初に画像に適用された Drop-Shadow() フィルターがわかります。記事のエレメンタル効果。

ここでは別のぼかしアルゴリズムが使用される可能性があるため、ぼかし値の調整が必要になる場合があります。

CSS フィルターの最も優れた点は、CSS フィルターが適切に機能しなくなることです。CSS フィルターをサポートしていないブラウザーで検出された場合、フィルター効果は適用されません。できるだけ多くのブラウザで効果を表示する必要がある場合は、フィルタを組み合わせて適用することでブラウザのサポートを強化できます。各フィルター関数に対応する SVG フィルターは、フィルター効果の仕様で見つけることができます。 SVG フィルターと簡素化された CSS を一緒に使用して、カスケードに最適なものを選択させることができます。

filter: url(drop-shadow.svg#drop-shadow);filter: drop-shadow(2px 2px 10px rgba(0,0,0,.5));
ログイン後にコピー

残念ながら、SVG フィルターが別のファイルである場合、CSS In コードでは、これはうまく機能しません。カスタマイズされたユーザーフレンドリーな機能ですが、インライン SVG だとコードが煩雑になってしまいます。ファイル内のパラメータは固定されており、少し異なるシャドウが必要なだけの場合、複数のファイルをインポートするのは現実的ではありません。データ URI を使用することもできますが (追加の HTTP リクエストも節約できます)、それでもファイルは大きくなります。これはフォールバックであるため、わずかに異なる Dropshadow() フィルターであっても、1 つまたは 2 つの変換を使用しても問題ありません。

考慮すべきもう 1 つの問題は、以下に示すように、テキスト (背景が透明な場合) を含むすべての不透明領域が無差別に影付けされることです。 text-shadow: none; を使用してテキストの影を削除できると思いますが、text-shadow は完全に独立しており、テキストに対する Drop-shadow() フィルターの効果を削除することはできません。さらに、text-shadow を使用して実際のテキストの影を実現すると、この影も、drop-shadow() フィルタによって再度影付けされ、影の影が作成されます。以下の例の CSS コードを見てください (完成した効果はまったく美しくありませんが、あらゆる方法でこれを実証しようとしています):

で効果を確認できます。以下の画像。これは text-shadow と drop-shadow() が連携する効果です:

color: deeppink;border: 2px solid;text-shadow: .1em .2em yellow;filter: drop-shadow(.05em .05em .1em gray);
ログイン後にコピー

text-shadow は、drop-shadow() フィルターを通じて影も生成します

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

< Progress>の目的は何ですか 要素? < Progress>の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

この記事では、HTML< Progress>について説明します。要素、その目的、スタイリング、および< meter>との違い要素。主な焦点は、< Progress>を使用することです。タスクの完了と< Meter> statiの場合

< datalist>の目的は何ですか 要素? < datalist>の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

この記事では、HTML< Datalist>について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? Mar 17, 2025 pm 12:20 PM

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

< meter>の目的は何ですか 要素? < meter>の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

この記事では、html< meter>について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化< Meter> < Progress>およびex

HTML5< time>を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? HTML5< time>を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? Mar 12, 2025 pm 04:05 PM

この記事では、html5< time>について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? Mar 17, 2025 pm 12:27 PM

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? Mar 20, 2025 pm 05:56 PM

この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

< iframe>の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? < iframe>の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? Mar 20, 2025 pm 06:05 PM

この記事では、< iframe>外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

See all articles