之前发过一篇文章CSS实现优惠券的技巧,主要介绍了几种绘制优惠券的方法,尽管实现已经非常完美、非常灵活,不过还是有很多同学表示
"太巧妙了,不过我还是选择切图🤣”
为此,专门制作了这样一个在线 CSS 生成工具Coupon.io (codelabo.cn)
功能设计
首先最上面是几种优惠券的类型,从图标应该能大概看出具体的样式
每一种类型对应的自定义选项稍有不同,拿第一种类型举例来说
- Radius表示设置凹角的大小
- Direction表示设置凹角的方向,可选择水平和垂直
- Position表示设置凹角的相对位置,在水平情况下,可选择居上、居中、居下,在垂直情况下,可选择居左、居中、居右
- Offset表示表示设置凹角的偏移,这个偏移是相对于上面设置的相对位置来定的,在居中的情况下不可设置
调整完成后,点击复制按钮就可以复制在剪贴板上了(🎉 Copied to clipboard!)~
代码是自适应的,所以无需关注容器尺寸,兼容 Chrome 、Firefox、Safari 以及移动端
其实也不必看上面的说明, 动动手指,随便点一下、拖一下大概就能明白什么意思了。
实战演示
现在就实际演示一下,比如这样一个布局
首先实现基本布局
<section class="card"> <div class="card-left">350书券</div> <div class="card-right"> <p class="card-info">满30元送350书券</p> <strong class="card-time">仅剩 04:48:49</strong> </div> </section>
可以看出,左边是固定尺寸,右边是自适应的,这里可以采用 flex 布局
.card{ display: flex; align-items: center; background: #fff; border-radius: 8px; } .card-left{ width: 88px; text-align: center; font-size: 24px; color: #F22424 } .card-left span{ font-size: 10px; } .card-right{ padding: 16px 12px; display: flex; flex: 1; flex-direction: column; } .card-info{ margin: 0; font-size: 14px; line-height: 20px; color: rgba(33, 32, 44, 0.9); } .card-time{ font-size: 12px; line-height: 16px; font-weight: normal; color: #F22424; margin-top: 4px; }
得到的效果如下
现在就通过在线工具添加凹角效果吧
因为有分割线效果,可以选择第二个类型,一番调试后,可以得到如下
现在复制生成的 CSS,直接添加在外层容器上
.card{ /*其他样式*/ -webkit-mask-image: radial-gradient(circle at 88px 4px, transparent 4px, red 4.5px), radial-gradient(closest-side circle at 50%, red 99%, transparent 100%); -webkit-mask-size: 100%, 2px 4px; -webkit-mask-repeat: repeat, repeat-y; -webkit-mask-position: 0 -4px, 87px; -webkit-mask-composite: source-out; mask-composite: subtract; }
得到效果如下
线上可访问 codepen coupon demo点击预览 查看
其他特性
该站点是一个PWA,如果使用 Chrome 或者 Edge 打开,可以选择“安装应用”
这样就可以像一个应用程序一样打开了,可离线使用~
其他说明
工具终究只是工具,不可能满足所有实际情况,在不满足的情况下,建议好好阅读这篇CSS实现优惠券的技巧,相信会有更多的体会
最后,有相关问题或意见,可以去XboxYan/coupon: 🎫 Generate Coupon-UI CSS code (github.com)提 issue,如果觉得不错的话,欢迎点赞、收藏、转发~❤️❤️❤️
祝大家使用愉快,enjoy~