0
点赞
收藏
分享

微信扫一扫

纯css实现优惠券效果

软件共享软件 2022-01-05 阅读 140

最近UI小姐姐休假了,优惠券缺了我几个切图,不好意思打扰人家,就寻思着,干脆用css直接手写吧。

这里记一下实现思路。

先来看看效果图:

看着还行叭。

主要是这几个地方的样式:

  1. 左上角书签;

  1. 优惠券票孔;

  1. 右上角状态标签。

1. 左上角书签

书签这里又分成两个部分,一部分是整体的半圆角矩形,一部分是左上的那个小折角。

半圆角矩形很好实现:

height: 20px;
border-radius: 0 20px 20px 0;

小折角是利用绝对定位和skew变换:

  display: block;
  width: 2px;
  height: 5px;
  background: #db0113;
  transform: skewY(-40deg);
  position: absolute;
  top: -1px;
  left: 0;
  z-index: 0;

书签整体也是利用绝对定位,固定在左上角:

  position: absolute;
  top: 10px;
  left: -2px;
  width: 100%;
  max-width: 120px;

2. 优惠券票孔

优惠券以虚线为分界,分割成上下两部分。票孔也是利用绝对定位,可以固定在上半部分的底部,也可以固定在下半部分的顶部。颜色须与背景色相同。如写在上半部分中:

.dot-left,
.dot-right {
  display: block;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: #f5f5f5;
  position: absolute;
  z-index: 999;
}
.dot-left {
  bottom: -6px;
  left: -6px;
}
.dot-right {
  bottom: -6px;
  right: -6px;
}

3. 右上角状态标签

状态标签的倾斜用的是rotateZ,需要计算好大致的长宽和偏移:

  width: 80px;
  height: 20px;
  background: #dd0d1f;
  position: absolute;
  right: -20px;
  top: 10px;
  transform: rotateZ(45deg);
  text-align: center;
  color: #fff;
  font-size: 12px;

示例代码

Demo是从项目里直接编译出来的,有点乱,仅供参考:
https://jsrun.net/IT9Kp/edit

如果有更好的实现方案,欢迎留言发我~~~

往期文章

当我们谈Currying时,我们在谈些什么

现代包管理工具:pnpm

硬核!手撕源码第一弹: UpdateNotifier

前端转后端是一种怎样的体验

当程序员遇到会写代码的产品经理…

手摸手写个webpack plugin

手摸手写个webpack loader

这锅我背了…

ES2021新特性

用魔法打败魔法:前端代码规范化

手摸手教你搭个脚手架

手摸手教你搭建npm私有库

requestAnimationFrame

举报

相关推荐

0 条评论