CSS シャドウ効果の比較: ドロップシャドウとボックスシャドウ

CSS シャドウ効果の比較: ドロップシャドウとボックスシャドウ

Drop-shadow と box-shadow はどちらも影効果(ハロー効果)のための CSS プロパティです。両者の最大の違いは、box-shadow は長方形の影しか作成できないのに対し、drop-shadow はオブジェクトの不透明領域とまったく同じ形状の影を作成できることです。 2 つの CSS プロパティの使用方法は次のとおりです。

.ドロップシャドウ {
    -webkit-filter: ドロップシャドウ(12px 12px 7px rgba(0, 0, 0, 0.7));
    フィルター: ドロップシャドウ(12px 12px 7px rgba(0, 0, 0, 0.7))
}

.box-shadow {
    ボックスの影: 12px 12px 7px rgba(0, 0, 0, 0.7);
}

どちらも影効果(ハロー効果)なので、設定できるパラメータ(値)はほぼ同じです。上記の例で言うと、すべてのパラメータ値は左から右に、水平オフセット、垂直オフセット、影のぼかし距離、影の色を表しています。

次に、ドロップシャドウとボックスシャドウをさらに比較します。

境界線と変形効果

ドロップシャドウとボックスシャドウの影はどちらも、境界線の丸い角と変形効果を反映できます。違いは次のとおりです。ドロップ シャドウは実際の境界線の形状を反映し、実線フレームには実線の影が、点線フレームには点線の影が付きます。ボックス シャドウは境界線と内部のコンテンツを完全な正方形として扱い、正方形全体の影を作成しますが、境界線のスタイルは無視され、直接実線フレームとして扱われます。

。箱 {
    境界線: 5px 実線 #262b57;
    幅: 120ピクセル;
    高さ: 120px;
    境界線の半径: 10px;
    変換: 回転(15度);
    フォントサイズ: 40px;
    テキスト配置: 中央;
    行の高さ: 120px;
}

.破線{
    境界線スタイル: 破線;
}

背景と透明性

ボックスに設定された色(透明ではない)がある場合、ドロップシャドウとボックスシャドウの影の効果は似たものになります。ブロックの背景が半透明の場合はどうなりますか?画像から、影の周りの色は暗く、中央の色は明るいことがわかります。そのため、透明度はドロップシャドウには影響しますが、ボックスシャドウには影響しないことが推測できます。

.bk {
    背景色: #ffcc66;
}

.bk-アルファ{
    背景色: rgba(255, 204, 102, 0.3);
}

画像の枠

この例から、drop-shadow は image-border の不規則な形状を反映できるのに対し、box-shadow は border を直接実線フレームとして扱い、border image の形状を無視することがわかります。写真のフクロウは透明な PNG ファイルです。ドロップ シャドウは、境界線の画像の形状だけでなく、境界線内のフクロウの形状も反映します。ボックス シャドウは一貫した原則に従い、境界線と写真を完全な正方形として扱います。

。フレーム {
    幅: 286ピクセル;
    高さ: 240px;
    -moz-border-image: url(frame_green_.png) 25 25 繰り返し;
    -webkit-border-image: url(frame_green_.png) 25 25 繰り返し;
    境界線の幅: 25px;
    境界線画像: url(frame_green_.png) 25 25 繰り返し;
    境界線の色: #79b218;
    境界線スタイル: インセット;
    境界線の幅: 25px;
    ボックスのサイズ: 境界線ボックス;
    表示: ブロック;
    マージン: 10px;
}

擬似要素

疑似要素のドロップシャドウは疑似要素の形状を反映できますが、ボックスシャドウは疑似要素を無視します。

。追加 {
    幅: 100ピクセル;
    高さ: 100px;
    背景色: #ffcc66;
    マージン: 10px 60px;
    位置: 相対的;
    表示: インラインブロック;
}

.addition:before {
    幅: 50px;
    高さ: 50px;
    背景色: #ff8833;
    コンテンツ: '';
    表示: ブロック;
    位置: 絶対;
    左: 0;
    上位: 50%;
    左マージン: -40px;
    変換: 回転(45度);
    上マージン: -10px;
}

.追加:後{
    幅: 60ピクセル;
    高さ: 60px;
    背景色: #ff8833;
    マージン: 10px;
    コンテンツ: '';
    表示: ブロック;
    変換: 回転(20度);
    変換: skew(20deg, 20deg);
    上: 5px;
    右: -40px;
    位置: 絶対;
}

ブロック内の小さなブロック

ドロップシャドウの影はブロック内のすべての要素の形状を反映できますが、ボックスシャドウはブロックの長方形の影を直接反映します。

。四角 {
    幅: 50px;
    高さ: 50px;
    表示: インラインブロック;
    背景色: #ffcc66;
    マージン: 20px;
}
。丸 {
    幅: 50px;
    高さ: 50px;
    表示: インラインブロック;
    境界線の半径: 50%;
    背景色: #ff8833;
    マージン: 20px;
}
<div class="demo-wrap">
    <div class="drop-shadow">
        <span class="square"></span>
        <span class="circle"></span>
        <p>ドロップシャドウ</p>
    </div>
    <div class="box-shadow">
        <span class="square"></span>
        <span class="circle"></span>
        <p>ボックスシャドウ</p>
    </div>
</div>

ドロップシャドウとボックスシャドウの違い

ドロップ シャドウには、内部境界 (インセット シャドウ) と距離 (スプレッド) の特性はありません。サポートに関しては、IE は現在 drop-shadow プロパティをサポートしていませんが、すべてのブラウザは一般に box-shadow をサポートしています。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  Docker-compose はブリッジを作成し、サブネットを追加し、ネットワーク カードを削除します。

>>:  IE アドレスバーのアイコン表示問題を解決する 3 つの手順

推薦する

Linux で binlog ファイルの作成時間を表示するコマンド

目次背景分析する方法背景MySQL は 26 日の 16:23:49 に大量のスロー クエリを生成し...

JSはキャンバス技術を使用してeChartsの棒グラフを模倣します

Canvas は HTML5 の新しいタグです。js を使用して Canvas 描画 API を操作...

JavaScript でネットワーク速度をテストする方法

目次序文ネットワーク速度のフロントエンド判定原理のまとめ1. img を読み込むか Ajax リクエ...

VMware + Ubuntu18.04 による Hadoop クラスタ環境の構築に関するグラフィック チュートリアル

目次序文VMware クローン仮想マシン (準備、3 台の仮想マシンのクローン、1 台のマスター、2...

MySQL SQL 最適化チュートリアル: IN クエリと RANGE クエリ

まず、in() クエリについて説明します。 「High Performance MySQL」では、イ...

mysqldump を使用して MySQL データをバックアップする方法

1. mysqldump の紹介mysqldump は、MySQL に付属する論理バックアップ ツー...

MySQLでカーソルトリガーを使用する方法

カーソル選択クエリによって返される行のセットは、結果セットと呼ばれます。結果セット内の行は、入力した...

MySQL フルテキスト インデックス、ジョイント インデックス、Like クエリ、JSON クエリのうち、どれが高速ですか?

目次クエリの背景1. クエリをいいね2. JSON関数クエリ3. 共同インデックスクエリ4. 全文イ...

Vue カプセル化に基づくプルダウン更新およびプルアップ読み込みコンポーネント

VueとネイティブJavaScriptカプセル化に基づいて、プルダウンリフレッシュとプルアップロード...

計算機機能を実装するミニプログラム

この記事の例では、計算機機能を実装するためのミニプログラムの具体的なコードを参考までに共有しています...

Ubuntu でパスワードを変更し、パスワードの複雑さのポリシーを設定する方法

1. パスワードを変更する1. 一般ユーザーのパスワードを変更する パスワード現在のパスワードを入力...

docker 環境でのデータベース バックアップ (postgresql、mysql) のサンプル コード

目次posgresql バックアップ/リストアMySQL バックアップ/復元posgresql バッ...

el-table のテーブルを最適化するために仮想リストを使用する方法についての簡単な説明

目次序文解決具体的な実装満たすべき前提条件質問序文テーブルをよく使用します。データ量が多い場合は直接...

Dockerコンテナを外部IPとポートにバインドする方法

Docker を使用すると、外部からコンテナにアクセスしたり、コンテナを相互接続したりすることで、ネ...

MySQL への接続時に発生する 1449 および 1045 例外の解決方法

MySQL への接続時に発生する 1449 および 1045 例外の解決方法 mysql 1449:...