18
头图

之前发过一篇文章CSS实现优惠券的技巧,主要介绍了几种绘制优惠券的方法,尽管实现已经非常完美、非常灵活,不过还是有很多同学表示

"太巧妙了,不过我还是选择切图🤣”

为此,专门制作了这样一个在线 CSS 生成工具Coupon.io (codelabo.cn)

Kapture 2021-05-12 at 22.50.38.gif

功能设计

首先最上面是几种优惠券的类型,从图标应该能大概看出具体的样式

image.png

每一种类型对应的自定义选项稍有不同,拿第一种类型举例来说

  1. Radius表示设置凹角的大小
  2. Direction表示设置凹角的方向,可选择水平和垂直
  3. Position表示设置凹角的相对位置,在水平情况下,可选择居上、居中、居下,在垂直情况下,可选择居左、居中、居右
  4. Offset表示表示设置凹角的偏移,这个偏移是相对于上面设置的相对位置来定的,在居中的情况下不可设置

image.png

调整完成后,点击复制按钮就可以复制在剪贴板上了(🎉 Copied to clipboard!)~

代码是自适应的,所以无需关注容器尺寸,兼容 Chrome 、Firefox、Safari 以及移动端

其实也不必看上面的说明,动动手指,随便点一下、拖一下大概就能明白什么意思了。

实战演示

现在就实际演示一下,比如这样一个布局

image.png

首先实现基本布局

<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;
}

得到的效果如下

image.png

现在就通过在线工具添加凹角效果吧

因为有分割线效果,可以选择第二个类型,一番调试后,可以得到如下

image.png

现在复制生成的 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;
}

得到效果如下

image.png

线上可访问 codepen coupon demo 查看

其他特性

该站点是一个PWA,如果使用 Chrome 或者 Edge 打开,可以选择“安装应用”

image.png

这样就可以像一个应用程序一样打开了,可离线使用~

image.png

其他说明

工具终究只是工具,不可能满足所有实际情况,在不满足的情况下,建议好好阅读这篇CSS实现优惠券的技巧,相信会有更多的体会

最后,有相关问题或意见,可以去XboxYan/coupon: 🎫 Generate Coupon-UI CSS code (github.com)issue,如果觉得不错的话,欢迎点赞、收藏、转发~❤️❤️❤️

祝大家使用愉快,enjoy~

XboxYan
18.1k 声望14.1k 粉丝