CSS优惠券、卡券样式绘制

本文介绍了如何通过CSS技术,特别是Webkit-mask属性,来实现左右两边带有凹陷效果的优惠券设计,同时保持中间虚线和上下部分的自定义性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现左右凹陷中间有虚线效果

效果图

在这里插入图片描述

实现思路

从效果图可以看到这个优惠券是左右两边凹陷,中间还有一条虚线,为了封装后插槽使用方便,把优惠券以虚线为准分了两部分。这样布局的好处是上部分内容和下部分都可以自定义,不受内容限制。

实现代码

<style style="text/css">
	.tickets {
		padding: 10px;
		width: 300px;
		box-sizing: border-box;
	}
.t-tickets {
	min-height: 50px;
	border-radius: 12px 12px 0 0;
	background-color: bisque;
	box-shadow: 0px 3px 8px 0px rgba(0,0,0,0.04);
	-webkit-mask: radial-gradient(circle at 0 bottom, #0000 8px, red 0), radial-			gradient(circle at right bottom, #0000 8px, red 0);
	-webkit-mask-size: 51%;
	-webkit-mask-position: 0, 100%;
	-webkit-mask-repeat: no-repeat;
	}
	
.b-tickets{
	position: relative;
	min-height: 50px;
	width: 100%;
	border-radius: 0 0 12px 12px;
	background-color: bisque;
	box-shadow: 0rpx 3px 8px 0px rgba(0,0,0,0.04);
	-webkit-mask: radial-gradient(circle at 0 top, #0000 8px, red 0), radial-gradient(circle at right top, #0000 8px, red 0);
	-webkit-mask-size: 51%;
	-webkit-mask-position: 0, 100%;
	-webkit-mask-repeat: no-repeat;
}
			
.line{
	width: calc(100% - 20px);
	border-bottom: 1px dotted #fff;
	margin: 0 10px;
}
</style>

<div class="tickets">
	 <div class="t-tickets"></div>
	 <div class="b-tickets">
			<div class="line"></div>
	</div>
</div>

### 半圆形样式的实现 为了创建具有半圆效果的样式,可以利用`radial-gradient`来绘制两端的半圆形。下面是一个具体实例: ```css .card { width: 300px; height: 150px; position: relative; background-color: #ffcccb; /* 背景颜色 */ } /* 左侧半圆 */ .card::before, /* 右侧半圆 */ .card::after { content: &#39;&#39;; position: absolute; top: 0; bottom: 0; width: 50%; background-repeat: no-repeat; background-size: contain; z-index: -1; } .card::before { left: 0; border-radius: 100% 0 0 100%/75px 0 0 75px; background-image: radial-gradient(circle at right, white 25%, transparent 26%); } .card::after { right: 0; border-radius: 0 100% 100% 0/0 75px 75px 0; background-image: radial-gradient(circle at left, white 25%, transparent 26%); } ``` 上述代码定义了一个`.card`类用于构建基本容器,并通过`:before`和`:after`伪元素分别处理左端和右端的半圆形状[^1]。 对于更复杂的场景,比如想要在片顶部或底部也加入类似的凹陷效果,则可以在原有基础上进一步调整背景图像的位置参数以及增加额外的径向渐变层以达到所需视觉效果[^2]。 如果追求更加真实的打孔效果而非仅仅是平滑过渡的颜色变化,还可以考虑采用绝对定位配合固定尺寸的子元素模拟实际物理世界中的穿孔痕迹[^3]。 #### 示例HTML结构 ```html <div class="card"></div> ``` 此方法不仅适用于优惠券的设计,在其他需要类似装饰性边缘的应用场合同样有效果良好的表现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值