如何使用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;
}
复制代码
相关文章
相关标签/搜索