CSS 使用radial-gradient 實現(xiàn)優(yōu)惠券樣式

本文將介紹如何使用 css 中的 radial-gradient 實現(xiàn)如下圖所示的優(yōu)惠券樣式效果:
繪制基本樣式
首先,我們繪制出優(yōu)惠券的基本樣式,這很簡單,就不多說了。
<div class="voucher"> <div class="left"></div> <div class="right">滿 100 減 30</div> </div> /* scss */ .voucher { width: 600px; height: 200px; display: flex; .left { width: 30%; height: 100%; background-color: #f76260; } .right { height: 100%; border: 1px solid #ddd; flex: 1; display: flex; align-items: center; justify-content: center; font-size: 40px; } }
鋸齒實現(xiàn)剖析
鋸齒部分其實可以看成是十個如下所示的圖像片段拼接起來的。每個片段的寬為鋸齒的半徑 6px,高為 20px。所以我們只需要畫出該片段,剩下的重復(fù)填充就好了。
我們把鋸齒的樣式加在 voucher 的偽元素上面就大功告成了:
&::before { content: ''; position: absolute; height: 100%; width: 6px; left: 0; top: 0; background-image: radial-gradient(circle at 0px 10px, white 6px, #f76260 6px); background-size: 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) 的位置開始進(jìn)行徑向漸變,漸變的形狀為圓形,從 0 到 6px 由 white 漸變成 white ,也就是純色; 6px 到圖形邊緣由 #f76260 漸變成 #f76260 ,也是純色。
為了重用我們的鋸齒樣式代碼,我們可以定義一個 scss 的 mixin:
/** * 為了實現(xiàn)比較好的效果,最好確保: * 1. $height 可以被 $num 整除 * 2. 2 * $radius < $height / $num */ @mixin leftSawtooth($height, $num, $radius, $color, $bgColor) { $segmentHeight: $height / $num; height: $height; &::before { content: ''; position: absolute; height: 100%; width: $radius; left: 0; top: 0; background-image: radial-gradient(circle at 0px $segmentHeight / 2, $bgColor $radius, $color $radius); background-size: $radius $segmentHeight; } }
這樣,用起來就很方便了:
@include leftSawtooth(600px, 10, 6px, #f76260, white);
升級版
升級版的鋸齒顏色和左邊部分的背景顏色不一致,實現(xiàn)上會有些差異,不過思路還是一致的。
首先還是繪制出基本的樣式:
.voucher { width: 600px; height: 200px; margin: 20px auto; display: flex; position: relative; border: 1px solid #ddd; .left { width: 30%; height: 100%; border-right: 1px dashed #ddd; } .right { height: 100%; flex: 1; display: flex; align-items: center; justify-content: center; font-size: 40px; } }
然后,繪制鋸齒部分。注意,這里圓的半徑是空白部分5px加上1px的邊框,所以背景片段繪制需要額外加一段漸變:
background-image: radial-gradient(circle at 0px 10px, white 5px, /* 圓內(nèi)的顏色是背景色 */ #ddd 5px, #ddd 6px, transparent 6px /* 圓外的顏色是透明色 */ );
注意到我們把圓內(nèi)的顏色設(shè)置為背景色,圓外的顏色設(shè)置為透明色,為什么要這樣后面會有說明。現(xiàn)在的效果離目標(biāo)已經(jīng)越來越近了,不過還是有點出入:
解決辦法是把偽元素往左移動一個邊框大小的位置。這樣半圓左邊的線會被圓內(nèi)的顏色覆蓋,而其他地方因為是透明色,所以線會保留(這就是為什么要把圓內(nèi)的顏色設(shè)置為背景色,圓外的顏色設(shè)置為透明色的原因了)。
完整的 mixin 如下所示:
@mixin leftSawtoothBorder($height, $num, $radius, $bgColor, $borderColor, $borderWidth) { $segmentHeight: $height / $num; $extendedRadius: $radius + $borderWidth; height: $height; &::before { content: ''; position: absolute; height: 100%; width: $extendedRadius; left: -$borderWidth; top: 0; background-image: radial-gradient(circle at 0px $segmentHeight / 2, $bgColor $radius, $borderColor $radius, $borderColor $extendedRadius, transparent $extendedRadius ); background-size: $extendedRadius $segmentHeight; } }
總結(jié)
以上所述是小編給大家介紹的CSS 使用radial-gradient 實現(xiàn)優(yōu)惠券樣式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
- 這篇文章主要介紹了使用css創(chuàng)建一個優(yōu)惠券的方法,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-21
- 這篇文章主要介紹了利用css3徑向漸變做一張優(yōu)惠券的示例的相關(guān)資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-22
- 本文給大家分享使用純css寫的一個邊沿打孔效果,需要的朋友參考下2018-02-08
- 這是一款采用純css3繪制的精美購物優(yōu)惠券樣式效果源碼,完全采用css3的徑向漸變功能實現(xiàn)的優(yōu)惠券圖片效果,沒有使用任何外部圖片2016-04-01