CSSはクーポンスタイルを実装するために放射状グラデーションを使用します

CSSはクーポンスタイルを実装するために放射状グラデーションを使用します

この記事では、CSS で放射状グラデーションを使用して、次の図に示すクーポン スタイルの効果を実現する方法を紹介します。

描画の基本スタイル

まず、クーポンの基本的なスタイルを描きます。これは非常にシンプルなので、詳しく説明しません。

<div class="バウチャー">
  <div class="left"></div>
  <div class="right">100 から 30 を引いた金額を支出</div>
</div>

/* SCSS */
.バウチャー{
  幅: 600ピクセル;
  高さ: 200px;
  ディスプレイ: フレックス;
  。左 {
    幅: 30%;
    高さ: 100%;
    背景色: #f76260;
  }
  。右 {
    高さ: 100%;
    境界線: 1px 実線 #ddd;
    フレックス: 1;
    ディスプレイ: フレックス;
    アイテムの位置を中央揃えにします。
    コンテンツの中央揃え: 中央;
    フォントサイズ: 40px;
  }
}

鋸歯状実装の構造

ギザギザの部分は、実際には下図のように 10 個の画像断片がつなぎ合わされたものと見ることができます。各セグメントの幅は 6 ピクセルで、鋸歯の半径と同じで、高さは 20 ピクセルです。したがって、そのセグメントを描画し、それを繰り返して残りの部分を埋める必要があります。


バウチャー疑似要素にギザギザのスタイルを追加して完了です。

&::前に {
  コンテンツ: '';
  位置: 絶対;
  高さ: 100%;
  幅: 6px;
  左: 0;
  上: 0;
  背景画像: 放射状グラデーション(0px 10pxの円、白6px、#f76260 6px);
  背景サイズ: 6px 20px;
}

ここでのコアコードは、background-image: radial-gradient(circle at 0px 10px, white 6px, #f76260 6px); です。これは実際には、background-image: radial-gradient(circle at 0px 10px, white 0, white 6px, #f76260 6px, #676260 100%); という省略形の記述方法で、これは放射状グラデーションが位置 (0px, 10px) から始まり、グラデーションの形状は円で、0 から 6px までは白から白 (純色) に徐々に変化し、6px からグラフィックの端までは #f76260 から #f76260 (純色) に徐々に変化することを意味します。

ジグザグ スタイルのコードを再利用するには、scss ミックスインを定義します。

/**
  * より良い結果を得るためには、次の点に注意してください。
  * 1. $height は $num で割り切れる * 2. 2 * $radius < $height / $num
  */
@mixin leftSawtooth($height, $num, $radius, $color, $bgColor) {
  $セグメントの高さ: $height / $num;
  高さ: $height;
  &::前に {
    コンテンツ: '';
    位置: 絶対;
    高さ: 100%;
    幅: $radius;
    左: 0;
    上: 0;
    背景画像:
      放射状グラデーション(0pxの円、$segmentHeight / 2、$bgColor $radius、$color $radius);
    背景サイズ: $radius $segmentHeight;
  }
}

これにより、非常に便利に使用できます。

@include leftSawtooth(600px, 10, 6px, #f76260, white);

アップグレード版

アップグレード版のギザギザの色が左部分の背景色と一致していません。実装には多少の違いがありますが、考え方は同じです。

まず、基本的なスタイルを描きます。

.バウチャー{
  幅: 600ピクセル;
  高さ: 200px;
  マージン: 20px 自動;
  ディスプレイ: フレックス;
  位置: 相対的;
  境界線: 1px 実線 #ddd;
  。左 {
    幅: 30%;
    高さ: 100%;
    border-right: 1px 破線 #ddd;
  }

  。右 {
    高さ: 100%;
    フレックス: 1;
    ディスプレイ: フレックス;
    アイテムの位置を中央揃えにします。
    コンテンツの中央揃え: 中央;
    フォントサイズ: 40px;
  }
}

次にギザギザの部分を描きます。ここでの円の半径は 5 ピクセルの空白部分と 1 ピクセルの境界線の合計であるため、背景フラグメントの描画には追加のグラデーションが必要であることに注意してください。

背景画像: 放射状グラデーション(0px 10pxの円、
  white 5px, /* 円の内側の色は背景色です*/
  #ddd 5ピクセル、
  #ddd 6ピクセル、
  transparent 6px /* 円の外側の色は透明です*/
);

円の内側の色を背景色に設定し、円の外側の色を透明色に設定していることに注意してください。その理由については後で説明します。現在の効果は目標に近づいてきていますが、まだいくつかの違いがあります。


解決策は、疑似要素を境界線のサイズだけ左に移動することです。こうすると、半円の左側の線は円の内側の色で覆われますが、他の場所は透明なので線は残ります(円の内側の色を背景色、円の外側の色を透明色に設定するのはこのためです)。

完全なミックスインは次のようになります。

@mixin leftSawtoothBorder($height, $num, $radius, $bgColor, $borderColor, $borderWidth) {
  $セグメントの高さ: $height / $num;
  $extendedRadius: $radius + $borderWidth;
  高さ: $height;
  &::前に {
    コンテンツ: '';
    位置: 絶対;
    高さ: 100%;
    幅: $extendedRadius;
    左: -$borderWidth;
    上: 0;
    背景画像: 放射状グラデーション(0pxの円 $segmentHeight / 2,
      $bgColor $radius、
      $borderColor $radius、
      $borderColor $extendedRadius、
      透明 $extendedRadius
    );
    背景サイズ: $extendedRadius $segmentHeight;
  }
}

要約する

上記は、ラジアルグラデーションを使用してクーポンスタイルを実現する CSS の紹介です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

<<:  MySQL公式パフォーマンステストツールmysqlslapの使い方の紹介

>>:  ユーザーエクスペリエンスの構築

推薦する

jQueryはネストされたタブ機能を実装します

この記事では、ネストされたタブ機能を実装するためのjQueryの具体的なコードを参考までに紹介します...

JavaScript で 24 以上の配列メソッドを手動で実装する

目次1. トラバーサルクラス1. 各2. 地図3. すべての4. いくつか5. フィルター6. 減ら...

nginxワーカープロセスループの実装

ワーカープロセスは、起動されると、まず自身の動作に必要な環境を初期化し、次に実行する必要があるイベン...

Vue カプセル化 TabBar コンポーネントの完全なステップ記録

目次実装のアイデア:ステップ 1: TabBar と TabBarItem のコンポーネント カプセ...

Linux システムで TCP 接続を作成するプロセスの紹介

目次LinuxでTCPを作成する手順サーバクライアントTCP確立プロセスサンプルコードLinuxでT...

MySQL チュートリアル: サブクエリの例の詳細な説明

目次1. サブクエリとは何ですか? 2. サブクエリはどこに表示されますか? 3. Whereサブク...

MySQL データベースのインデックスとトランザクション

目次1. 索引1.1 コンセプト1.2 機能1.3 索引作成の原則1.3.1 ディスクアクセス回数を...

JavaScriptは、マウスが通過したときにドロップダウンボックスを表示するように実装します。

この記事では、マウスがドロップダウンボックスの上を通過するときにドロップダウンボックスを表示するため...

Mysql データベースの日付と日時型でデフォルト値 0000-00-00 を設定するときに発生するエラー問題の詳細な説明

現象: MySQL バージョン 5.7 以降では、日付型と日付時刻型のデフォルト値が「0000-00...

MySQL コマンドライン操作中のエンコードの問題の詳細な説明

1. MySQLデータベースのエンコーディングを確認する mysql -u ユーザー名 -p パスワ...

フロートをクリアするための CSS メソッドの概要

フロートはWebページのレイアウトでよく使用されますが、フローティングブロックレベル要素は標準のドキ...

HTML に基づいてページを更新せずにフォーム送信を実装する

ページを更新せずにフォーム送信を実装するために Ajax を使用することは、プロジェクトでよく使用さ...

LinuxにNginxをインストールする正しい手順

序文私のように、Java バックエンドに勤勉な人であれば、多数のプロジェクト機能を実装することに加え...

フロントエンド プロジェクトのデフォルトのスクロール バー スタイルを変更する (概要)

スクロールバーのデフォルトスタイルを変更する必要があるプロジェクトを多数作成しましたが、プラグインを...

CentOS に Memcached と PHP Memcached 拡張機能をインストールする

高性能分散メモリオブジェクトキャッシュシステムMemcachedについては、別の記事「Windows...