CSS クロスフェード() を使用して半透明の背景画像効果を実現するサンプルコード

CSS クロスフェード() を使用して半透明の背景画像効果を実現するサンプルコード

1. 要件の説明

特定の要素については、背景background-imageを半透明にしたいが、テキストやアイコンなど、要素内の他のコンテンツは不透明のままにしたいとします。

単色の背景や CSS グラデーションの背景であれば、扱いは簡単です。RGBA またはhslaカラーrgbaを使用するだけです。

ただし、 url()背景画像の場合は、どうしようもないようです。

インライン<img>画像であれば、扱いは簡単です。フィルター、マスク、 opacity設定のいずれでも、効果を得ることができます。ただし、これは背景画像であり、上記のすべての方法はテキストの正常な表示に影響します。

多くの人は、たとえば::before / ::after疑似要素の使用を思いつくと思います。

。箱 {
   位置: 相対的;
   zインデックス: 0;
}
.box::before {
   コンテンツ: '';
   位置: 絶対;
   左: 0; 右: 0; 上: 0; 下: 0;
   背景: url(xxx.jpg) 繰り返しなし 中央 / 含む;
   Zインデックス: -1;
   不透明度: .5;
}

リアルタイム効果は以下のとおりです(効果がない場合、原作者のZhang Xinxuをご覧ください)。

投稿者: zhangxinxu

ただし、この方法は冗長かつコストがかかりすぎる (スタック コンテキストが大量に作成され、サイズを調整する必要がある) ため、大規模に使用することはできません。

それを実装する良い方法はありますか?

cross-fade()画像関数を使用してみてください。

2. cross-fade() は背景画像を半透明にする

cross-fade()関数を使用すると、2 つの画像を半透明にブレンドできます。

例えば:

<div class="クロスフェードイメージ"></div>
.クロスフェードイメージ{
    幅: 300ピクセル; 高さ: 300ピクセル;
    背景: 繰り返しなし 中央 / 含む;
    背景画像: -webkit-cross-fade(url(1.jpg), url(2.jpg), 50%);
    背景画像: クロスフェード(url(1.jpg), url(2.jpg), 50%);   
}

効果は下図のようになります。

画像2.jpgは、画像1.jpgと 50% の透明度で混合されてレンダリングされます。

上記の例では、 cross-fade()関数の従来の構文を使用しています。構文は次のとおりです。

<dfn id="ltimage-combination">
<画像の組み合わせ>
</dfn> = クロスフェード( <画像>, <画像>, <パーセンテージ> )

ここで、 <percentage>は透明度を指し、2 番目の画像の透明度のみを変更します。最終的な効果は、最初の画像が完全に不透明になり、2 番目の画像が半透明になることです。

cross-fade()画像関数のパーセンテージ値に関しては、次の画像の透明度のみを変更します。かなり前にテスト用のデモページを作成しました。こちらをクリックしてください: CSS3 クロスフェード属性透明度オブジェクトテスト

スクリーンショットは次のとおりです。

cross-fade()関数の本来の目的は、複数の画像を半透明に重ね合わせることですが、実際の開発ではそのようなシナリオに遭遇することはほとんどありません。そのため、 cross-fade()は単一の背景画像の半透明効果を制御するのに適しています。

実装原理は非常にシンプルです。最初の画像には透明な画像を使用し、2 番目の画像にはターゲット画像を使用します。

例えば:

ダークモードでは背景画像が明るすぎます。背景画像の明るさを調整したいです。cross cross-fade()は、次の CSS コードで実装されています (幅と高さの設定の CSS は省略されています)。

。暗い {
    /* フォールバック、IE および Firefox ブラウザ*/
    背景画像: url(2.jpg);
    --transparent: url(data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==);
    /* 最新バージョンの Safari ではプライベートプレフィックスは不要になりました */
    背景画像: クロスフェード(var(--transparent), url(2.jpg), 40%);
    /* カスタム プロパティを使用する場合は、-webkit- ステートメントを private プレフィックスなしのステートメントの下に配置する必要があります */
    背景画像: -webkit-cross-fade(var(--transparent), url(2.jpg), 40%);

    背景サイズ: カバー;
}

効果は以下のとおりです。

とてもシンプルですね。疑似要素の実装よりもはるかに信頼性が高いのではないでしょうか。対応するデモはここにあります。

cross-fade()は本質的に<image>画像データタイプであり、 url()イメージ、グラデーション イメージ、および image-set() 関数のプロパティであり、 border-imagemask-imageなどの属性で使用できます。

したがって、 url()関数の代わりにcross-fade()関数を使用して背景画像の半透明効果を実現するのが、最もコストが低く、最適な方法です。

3. 優れたモバイル互換性

cross-fade()関数は、iOS 5 や Android 4.4 など、Webkit ブラウザーで長い間サポートされてきました。ただし、次の図に示すように、プライベート プレフィックスを設定する必要があります。

そのため、モバイルデバイスでも安心してご利用いただけます。PCに関しては、IEブラウザを考慮する必要がなければ安心してご利用いただけます。IEを考慮する必要があっても問題ありません。唯一の違いは、背景画像が依然として完全に不透明であり、視覚的な体験がわずかに低いことです。

この世に役に立たない CSS プロパティなど存在しません。ただ、適切なシナリオに遭遇していないだけです。独身の皆さんと同じように、適切な相手にまだ出会っていないだけです。

また、 cross-fade()関数は CSS 仕様に追加された後、より柔軟で強力な新しい構文になりましたが、現在サポートしているブラウザがないため、この記事では紹介しません。

CSS クロスフェード() を使用して背景画像の半透明効果を実現するサンプルコードに関するこの記事はこれで終わりです。CSS クロスフェード() 背景画像の半透明効果の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  フォント宝庫 50 種類の素晴らしい無料英語フォントリソース パート 2

>>:  MySql ページングで limit+order by を使用する場合のデータ重複の解決策

推薦する

Chrome プラグイン (拡張機能) 開発ガイド (完全デモ)

目次前面に書かれた序文ChromeプラグインとはChrome プラグイン開発を学ぶことの意義は何です...

JavaScript コードを省略する一般的な方法の概要

目次序文矢印関数一般的な配列操作をマスターするスプレッド演算子オブジェクトの省略形構造化割り当てデー...

Vueカスタムコンポーネントは双方向バインディングを実装します

シナリオ:一般的に使用される親コンポーネントと子コンポーネント間の相互作用方法は次のとおりです。親コ...

Vue補間式とv-textディレクティブの違い

目次1. プラグイン式を使用する2. プラグイン式でv-cloakを使用してちらつきの問題を解決する...

Centos7でのMySQLインストールチュートリアル

MySQLインストールチュートリアル、参考までに具体的な内容は次のとおりです。 1. ダウンロードY...

HTML スタイル タグと関連する CSS リファレンスの詳細な説明

HTML スタイル タグスタイルタグ - ドキュメント内でスタイルを宣言するときにこのタグを使用しま...

Nodejs プラグインと使用方法の概要

このチュートリアルの動作環境: Windows 7 システム、nodejs バージョン 12.19....

MySQL でのトリガーとカーソルの紹介と使用

トリガーの紹介トリガーは、テーブルに関連付けられた特別なストアド プロシージャであり、テーブル内のデ...

MySql はデータを正常に挿入しますが、[Err] 1055 エラーが報告されます。解決策

1. 質問:最近、挿入操作を行っています。MySQLのバージョンは5.7です。挿入は成功しますが、エ...

JavaScript関数導入の詳しい説明

目次機能紹介関数関数の作成コンストラクタは関数を作成する関数宣言は関数を作成する関数式関数を作成する...

MySQL 8.0 における MySQL のインストールと新しいパスワード認証方法の詳細な説明

1. はじめにOracle が MySQL 8.0GA をリリースしました。海外での GA はリリー...

MySQL実行計画の詳細な説明

EXPLAIN ステートメントは、MySQL がステートメントを実行する方法に関する情報を提供します...

MySQL シリーズ 4 SQL 構文

目次チュートリアルシリーズ1. SQL言語の紹介と仕様2. データベース操作1. ライブラリを作成す...

インターネット接続なしでLinux Centos7にアプリケーションをインストールする方法の詳細な説明

1. 前の章では、プログラムを yum リポジトリに直接インストールできることを学びましたが、そのた...

WeChatミニプログラムはuni-appを通じて世界中に共有されます

実際の使用では、ミニプログラムを友人や友人サークルと共有する必要があることが多く、通常は一度に 1 ...