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の使い方の紹介

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

推薦する

Vue3.0 異なる解像度のコンピュータの適応操作

まず依存関係をインストールする必要があります npm i lib-flexible-computer...

Google の新しい UI から学べること (画像とテキスト)

2011 年に最も顕著なウェブサイトの変更は、一連の製品に新しいユーザー インターフェースを導入した...

Vue はスクロール可能なポップアップウィンドウ効果を実装します

この記事では、スクロール可能なポップアップウィンドウ効果を実現するためのVueの具体的なコードを参考...

スライド効果を実現するためのネイティブJavaScript

ページ、特にホームページを作成するときは、通常、Web サイト全体の他のメイン ページにリンクできる...

HTMLセマンティクスと関連するフロントエンドフレームワークの詳細な分析

セマンティクスについて意味論は、記号やシンボルとそれらが表す意味との関係を研究する学問です。言語学で...

フレームセットの高さを設定する際のインターフェース変形の解決策

現在、プロジェクトを作成しました。インターフェースは次のとおりです。これはフレームセットを使用して行...

建国記念日が近づいています。JS を使用して、建国記念日風のアバターを生成する小さなツールを実装します。実装プロセスの詳細な説明

目次1. ページレイアウト2. 画像のアップロードと表示3. キャンバスを初期化する4. テンプレー...

Windows 10 システムで Mysql8.0.13 のルート パスワードを忘れる方法

1. まずmysqlサービスを停止します管理者としてCMDを開いて閉じるか、Windowsサービスペ...

WeChat アプレットのカスタム下部ナビゲーション バー コンポーネント

この記事の例では、WeChatアプレットの下部ナビゲーションバーコンポーネントの具体的な実装コードを...

Node.jsを使用してホットリロードページを実装する方法の詳細な説明

序文少し前に、browser-sync+gulp+gulp-nodemon を組み合わせて、本番環境...

Unicodeの一般的な記号

Unicode は、世界中のすべてのテキストと記号に対応できる国際組織によって開発された文字エンコー...

Docker で Tomcat を使用して Web アプリケーションを迅速にデプロイする方法の例

Docker の基本的な操作を学習した後、コンテナにいくつかの基本的なアプリケーションをデプロイして...

MySQL における USING と HAVING の使用法の簡単な分析

この記事では、例を使用して MySQL での USING と HAVING の使用方法を説明します。...

MySQLデータベースホスト127.0.0.1とlocalhostの違い

私の友人の多くは、127.0.0.1 と localhost の違いがわからず、問題に遭遇するかもし...

HTML テーブル データを Json 形式に変換するサンプル コード

<table>テーブルデータをJSON形式に変換するJavaScript関数は次のとおり...