如何使用css建立一個優惠券

需求場景

添加優惠券類目,展現用戶的優惠券css

常見的設計樣式以下圖,核心爲半圓segmentfault

img

分步拆解

優惠券的特色是帶有反向圓角,爲了展現效果更好,適配多種場景,不推薦使用背景圖片形式,建議使用css.bash

網上有幾種方案:佈局

一種是boder+clip的形式,裁剪出4個小半圓角,拼湊在一塊兒spa

一種是radial-gradient徑向漸變,相對上一種須要考慮其兼容性設計

一種是使用背景圖片,特色是加載稍慢,體驗比css差,兼容性好code

具體的代碼這裏就不一一演示了cdn

參考其餘網上內容:segmentfault.com/a/119000001…blog

注意細節

有一點要說明的是:圖片

必定要注意細節,就像考慮到兼容性和帶寬以及加載時長同樣,咱們也要爲之後可能的變更留有空間.

前兩種方案的特色是左右的容器都有背景色,且半圓的邊框色是有背景色截取而得到的.

當咱們須要指定半圓的邊框和其餘邊框顏色同時變換不一樣背景色的時候呢?

參考下圖:

邊框色和背景色能夠是不一致的,而且整個邊框顏色能夠保持一致,而這些,上述兩種方法不管是border仍是gradient顯然不行.

img

其餘方法

優惠券的樣式是兩部分拼接在一塊兒,同時帶有半圓樣式

那麼咱們的思路能夠是:

  • 建立一個盒子,包含左右兩個卡券部分,卡券背景色各自定義
  • 盒子上蓋上兩個半圓,一個在頂部,一個在底部,背景色爲白色
  • 卡券和半圓的邊框均可以自定義,同色使用一個色號便可

直接使用css建立一個嵌有半圓的邊框不太現實,可是咱們能夠經過其餘方法達到視覺上的實現.

中間須要一些空間思惟和想象能力,過程可能複雜些,可是能實現目的就行,另闢蹊徑的效果更好.

建立一個總容器

容器控制卡券的寬高和佈局上位置,不帶有其餘樣式

img

建立左右卡券

添加兩個容器,一個放左邊,一個放右邊,割分總容器空間

左邊容器單獨設置左上和左下兩個圓角,右邊容器單獨設置右上和右下兩個圓角

左右容器各自設置自定義背景色

img

貼上半圓

添加兩個半圓,背景色爲白色,邊框待定

相對總容器絕對定位,一個放頂部,一個放底部

偏移量自定義,保持一致便可

到這一步就完成了最初的樣式,接下來到了設置邊框的時間

img

設置邊框

給左右卡券容器和兩個半圓添加邊框便可,不影響背景色

img

製做半圓

核心是製做半圓(只有輪廓)

<div class="circle"></div>
// 上半圓
.circle{
    width: 200px;
    height: 100px; /* 寬度的一半 */
    border-radius:100px 100px 0 0; /* 上和右爲高度的長度 */
    background-color: #fff;
    border: 1px solid gray;
    border-bottom: none;
}
// 下半圓
.circle{
    width: 200px;
    height: 100px; /* 寬度的一半 */
    border-radius: 0 0 100px 100px; /* 上和右爲高度的長度 */
    background-color: #fff;
    border: 1px solid gray;
    border-bottom: none;
}
複製代碼
相關文章
相關標籤/搜索