CSS で中空効果を実装するサンプルコード

CSS で中空効果を実装するサンプルコード

効果原理

主にCSSグラデーションを使用して、切り取りを必要としない背景のくり抜きを実現します。

クーポンスタイル

.mixinsTicket(@width, @height, @r, @left, @lcolor, @rcolor) {
    幅: @width;
    高さ: @height;
    背景:
              放射状グラデーション(右上の円、透明@r、@lcolor 0) -(@width - @left) 上部 ~'/' 100% 51% 繰り返しなし、
              放射状グラデーション(右下の円、透明@r、@lcolor 0) -(@width - @left) 下 ~'/' 100% 51% 繰り返しなし、
              放射状グラデーション(左上の円、透明@r、@rcolor 0) @left 0 ~'/' 100% 51% 繰り返しなし、
              放射状グラデーション(左下の円、透明@r、@rcolor 0) @left bottom ~'/' 100% 51% no-repeat;
} 

.mixinsTicket1(@width, @height, @r, @top, @color) {
   幅: @width;
   高さ: @height;
   背景:
               放射状グラデーション(左下の円、透明@r、@color 0) 左 (@top - @height) ~'/' 51% 100% 繰り返しなし、
               放射状グラデーション(左上の円、透明@r、@color 0) 左 @top ~'/' 51% 100% 繰り返しなし、
               放射状グラデーション(右下の円、透明@r、@color 0) 右 (@top - @height) ~'/' 51% 100% 繰り返しなし、
               放射状グラデーション(右上の円、透明@r、@color 0) 右 @top ~'/' 51% 100% 繰り返しなし;
   &::後{
     コンテンツ: '';
     表示: ブロック;
     位置: 絶対;
     幅: calc(100% - 2 * @r);
     左: @r;
     トップ: @top;
     border-top: 1px 破線 #fff;
     変換: translateY(.5);
   }
}

カットアウェイ効果

ps: 鋸歯状波はデバイスのディスプレイに関連しています

.mixinFlag(@width, @height, @bg) の場合(default()) {
    幅: @width;
    高さ: @height;
    背景:
              線形グラデーション(45度、透明 sqrt(pow(@width/2, 2)/2)、@bg 0) 右、
              linear-gradient(-45度、透明、sqrt(pow(@width/2, 2)/2)、@bg 0) 左;
    背景サイズ: 50% 100%;
    背景繰り返し: 繰り返しなし;
 }
 .mixinFlag(@width, @height, @bg) の場合(@width > @height) {
    幅: @width;
    高さ: @height;
    背景:
              linear-gradient(-45deg, transparent sqrt(pow(@height/2, 2)/2), @bg 0) 左上、
              linear-gradient(-135deg, transparent sqrt(pow(@height/2, 2)/2), @bg 0) 左下;
    背景サイズ: 100% 50%;
    背景繰り返し: 繰り返しなし;
} 

.mixinsMark(@width, @height, @bg) {
    幅: @width;
    高さ: @height;
    背景:
              linear-gradient(-45deg, transparent sqrt(pow(@height/2, 2)/2), @bg 0) 左下、
              linear-gradient(-135deg, transparent sqrt(pow(@height/2, 2)/2), @bg 0) 左上;
    背景サイズ: 100% 50%;
    背景繰り返し: 繰り返しなし;
}

追記:上記の効果は4方向で達成できます。他の方向のコードは掲載されていませんが、原理は同じです。

チェック柄

css {
    幅: 510ピクセル;
    高さ: 128px;
    背景: #FFF;
    背景画像: 線形グラデーション(rgba(182, 128, 102, .8) 8px, 透明 0),
                      線形グラデーション(90度、rgba(182, 128, 102, .8) 8px、透明0);
    背景サイズ: 8px 14px、14px 8px;
}

集中

。マスク {
  位置: 固定;
  上: 0;
  左: 0;
  zインデックス: 100;
  幅:100vw;
  高さ:100vh;
  背景:
  放射状グラデーション(50% に最も近い側 278rpx、透明 140rpx、rgba(0, 0, 0, .12) 180rpx、rgba(0, 0, 0, .22) 200rpx、rgba(0,0,0,.3) 220rpx、rgba(0,0,0, .4)) 繰り返しなし;
}

要約する

各グラデーション レイヤーは背景画像として扱うことができます。つまり、各グラデーション レイヤーの位置、サイズ、繰り返しを指定できます。 PS を使用したことがある学生は、レイヤーの概念を知っているはずです。背景レイヤーの積み重ねの原理も同様です (もちろん、グラデーションも背景画像として使用できます)。グラデーションのサイズ、くり抜く場所、表示する場所、タイル化するかどうかを制御することで、ほとんどのシーンで基本的な効果を実現できます。もちろん、カット画像の方が高速ですが、カット画像ではすべてのシーンに適応できない場合があります。

背景が書かれる順序をマスターすると、望む効果を頭の中で思い描くのに役立ちます。


コードをコピー
コードは次のとおりです。
背景: bg-color || bg-image || bg-position [ / bg-size]? || bg-repeat || bg-attachment || bg-origin || bg-clip

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

<<:  よく知られているブラウザのDOCTYPEモード選択メカニズム

>>:  MySQL で sum 関数を使用する例のチュートリアル

推薦する

js、css、htmlはブラウザのさまざまなバージョンを決定します

正規表現を使用してIEブラウザのバージョンを判別するIEブラウザかどうか確認するif (docume...

iframeをカプセル化するvueコンポーネントを開発する

目次1. コンポーネントの紹介2. コンポーネントの内部構造とロジック1. コード組織構造2. マッ...

CentOS6.8 は cmake を使用して MySQL5.7.18 をインストールします。

オンライン情報を参考に、cmakeを使用してCentOS6.8サーバーにMySQL5.7.18をイン...

フレックスレイアウトにおける画像変形の解決策の詳細な説明

フレックス レイアウトは現在よく使用されるレイアウト方法ですが、場合によっては小さな問題が発生するこ...

docker-compose を使用して Clickhouse をすばやくデプロイする方法のチュートリアル

ClickHouse は、オープンソースの列指向 DBMS (Yandex によって開発) です。 ...

mysql8.0.19 winx64バージョンのインストール問題を解決する

MySQL は、スウェーデンの会社 MySQL AB によって開発されたオープンソースの小規模なリレ...

http:// の代わりに // を使用する利点は何ですか (アダプティブ https)

//デフォルトプロトコル/ デフォルト プロトコルの使用は、リソース アクセス プロトコルが現在の...

Nginx のインストールと設定ルールの詳細な紹介

目次1. nginxのインストールと操作(Mac OS環境) 2. nginxルールの設定3. コマ...

Tomcat パイプライン モードのパイプラインとバルブの詳細な説明

序文比較的複雑な大規模システムでは、複雑なロジックで処理する必要があるオブジェクトまたはデータ フロ...

Element-ui の組み込み 2 つのリモート検索 (ファジークエリ) の使用方法の説明

問題の説明フロントエンドリモート検索やファジークエリと呼ばれる種類のクエリがあります。 Ele.me...

ウェブページの表の分割線を削除する方法

<br />Web テーブルの分割線を削除する方法。実際、上記の 3 つの表はいずれも ...

FirefoxでCookieとお気に入りをインポートおよびエクスポートする方法

Firefox は、多くの拡張機能とプラグインを備えた、よく使用されるブラウザです。IE に比べて多...

ランキングを取得するためのMySQLソートの例コード

コードは次のようになります。 SELECT @i:=@i+1 行番号、 if(@total=t.s_...

MySQLクエリで大文字と小文字を区別しない問題を解決する方法

質問最近、SSH フレームワークを使用して実用的なプロジェクトを完了していたときに、長い間悩まされて...

CentOS 7 で MySQL 8 の複数のインスタンスを設定する詳細なチュートリアル (必要な数だけ設定できます)

原因最近、プロジェクトのリファクタリングを始めたのですが、マスタースレーブと読み取り書き込み分離を使...