背景

本文来自CODE.FUN  ,讲述如何用纯 CSS 实现优惠券效果的实践案例,分享给大家。

优惠券视觉效果

上面是优惠券的视觉效果,本文分享如何使用纯 CSS 实现它的主要框架,希望对大家有帮助。

0. 分析

首先,我们来分析一下这个优惠券的实现方案。

左边是摘要,右边是详情,这个部分用 display:flex 很容易就能搞定。中间的虚线,使用任意一个容器边框 + 少许 padding 即可实现。其它部分,也就是些字体行高,都不是很复杂。难点在于投影,尤其是左右两个挖空的半圆。

1. 尝试实现挖空效果

  1. 首先,我们给整个优惠券矩形加上投影

  2. 然后,我们给两边加上两个包含内投影的圆形

  3. 这个时候,两边的内投影原型会多出来一块,我们需要把它们盖住。但是,不能让矩形 overflow:hidden,因为投影也会变,如下图。

中间效果

.coupon {width: 15rem;height: 6rem;background: white;box-shadow: 1px 1px 6px rgba(0,0,0,.15);position: relative;overflow: hidden;&::before,&::after {background-color: white; border-radius: 1rem;box-shadow: inset 1px 1px 6px rgba(0, 0, 0, 0.15);content: '';width: 2rem;height: 2rem;position: absolute;top: 2rem;z-index: 1;}  &::before {left: -1rem;}&::after {right: -1rem;}
}

2. 增加父容器

我的第一反应是增加父容器,让父容器 overflow:hidden 来隐藏多出来的部分。但是不行,会影响投影。

但是转念一想,我们可以不让父容器限制显示内容,而是在父容器内部增加一些元素,遮蔽多出来的内容。比如用两个纯色圆形,把竖着的阴影遮起来。

于是我把上面的样式更名为 .coupon-inner,然后增加一个父容器。父容器的 ::before ::after 伪元素都搞成略小一圈的纯色圆形,把竖着的投影挡住,最终效果如下图。

接近最终效果

3. 总结

到这里,效果就基本让人满意了。最终完成的代码如下:

.coupon {width: 15rem;height: 6rem;position: relative;&::before,&::after {content: '';position: absolute;top: calc(2rem + 2px);width: calc(2rem - 4px);height: calc(2rem - 4px);background-color: white;z-index: 2;}  &::before {left: -1rem;border-radius: 0 calc(1rem - 2px) calc(1rem - 2px) 0;}&::after {right: -1rem;border-radius: calc(1rem - 2px) 0 0 calc(1rem - 2px);}
}.coupon-inner {width: 100%;height: 100%;background: white;box-shadow: 1px 1px 6px rgba(0,0,0,.15);position: relative;overflow: hidden;&::before,&::after {background-color: white; border-radius: 1rem;box-shadow: inset 1px 1px 6px rgba(0, 0, 0, 0.15);content: '';width: 2rem;height: 2rem;position: absolute;top: 2rem;z-index: 1;}&::before {left: -1rem;}&::after {right: -1rem}
}

你也可以在 codepen 里做进一步的调整:

前往 CodePen

使用纯 CSS 的好处,在于体积小、加载快,调整起来非常灵活。我们建议前端开发者,能用 CSS 最好都用 CSS。

有任何问题和建议,欢迎评论、讨论。

如何用纯 CSS 实现优惠券效果相关推荐

  1. 纯css实现优惠券效果

    最近UI小姐姐休假了,优惠券缺了我几个切图,不好意思打扰人家,就寻思着,干脆用css直接手写吧. 这里记一下实现思路. 先来看看效果图: 看着还行叭. 主要是这几个地方的样式: 左上角书签: 优惠券票 ...

  2. 纯 CSS 实现优惠券透明圆形镂空打孔效果

    本文同步发布在:纯 CSS 实现优惠券透明圆形镂空打孔效果 我们在做商城类项目时,时常会有开发优惠券的需求,那么我们如何通过纯 CSS 来实现类似京东.淘宝的优惠券样式. 下面给大家分享一个纯 CSS ...

  3. HTML5绘制国际象棋,如何用纯CSS实现一副国际象棋

    这篇文章主要介绍了关于如何用纯CSS实现一副国际象棋 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 源代码下载 每日前端实战系列的全部源代码请从 github 下载: https:/ ...

  4. 如何用纯CSS将图片填满div,自适应容器大小

    如何用纯CSS将图片填满div,自适应容器大小  2016-10-11 13:33   网页设计   标签:css 代码   5987    3 我有一个模板,想按常规做一个div里面放置一个img图 ...

  5. 如何用纯 CSS 创作一个小球上台阶的动画

    如何用纯 CSS 创作一个小球上台阶的动画 效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/come ...

  6. 纯 CSS 实现波浪效果!

    一直以来,使用纯 CSS 实现波浪效果都是十分困难的. 因为实现波浪的曲线需要借助贝塞尔曲线. 而使用纯 CSS 的方式,实现贝塞尔曲线,额,暂时是没有很好的方法. 当然,借助其他力量(SVG.CAN ...

  7. 制作css开关,纯css实现开关效果

    大家好,我又来了,这次给大家表演使用纯css实现开关效果 首先是构思 我们使用标签来实现这个效果. checkbox的选中.未选中的特性,刚好对应开关的打开.关闭 on:打开 off:关闭 未选中,则 ...

  8. html实现开关,使用纯css实现开关效果

    首先是构思 我们使用标签来实现这个效果. checkbox的选中.未选中的特性,刚好对应开关的打开.关闭 on:打开 off:关闭 未选中,则关闭开关 选中,则打开开关 开始画出off.on状态的草图 ...

  9. 纯CSS实现弹幕效果

    纯CSS实现弹幕效果 动画相关的属性和方法已经本部分的开头简单提过了,我们来看一下本次要实现的效果--弹幕- 当你在阅读.看视频的时候经常会遇见一段文件或者一张表情从页面划过,要实现一个完整的功能很复 ...

最新文章

  1. web标准,我们去向何方?一些想法...
  2. CentOS 7 快速部署 ELK
  3. 如何利用远程桌面连接CentOS的Desktop版本
  4. html5拍照上传 java_如何使用HTML5实现拍照上传应用
  5. highcharts如何把图多余的空白页面_零基础如何快速学会WORD基础操作?有秘籍了.........
  6. 什么是java?为什么大家都学习java技术?
  7. 常用方法 DataTable转换为Entitys
  8. Python基础小结
  9. 存储基础 — 文件描述符 fd 究竟是什么?
  10. TiFlash:并非另一个 T + 1 列存数据库
  11. 一加9系列全网预约量破200万:3月24日见!
  12. 电商运营、美工必备导航类网站,有效提高工作效率
  13. php mysql_fetch_array 函数大全,深入探讨PHP mysql_fetch_array()函数
  14. Office 2007 Pro/Ent 简体中文版下载
  15. hp1015驱动64位_惠普1015驱动下载|惠普1015打印机驱动电脑版 - 极光下载站
  16. labview 写入mysql_LabVIEW 连接MySQL数据库
  17. 金蝶K3系统参数年结不能配置利润科目
  18. python实现最大公约数最小公倍数求法
  19. Vue使用Electron获取电脑MAC地址
  20. springboot基于微信小程序的宿舍管理系统

热门文章

  1. 世界顶级音效公司_世界顶级游戏开发公司
  2. 北亚工程师详解数据恢复中RAID6结构
  3. 计算机网络实验报告哈工大_哈工大计算机网络实验报告之五
  4. JAVA编码(37)—— Java字符串转换为MAP对象
  5. 基于Android的上位软件,基于Android的电子套结机上位机软件设计
  6. linux网桥--简介
  7. xp计算机连接不上网络打印机驱动,解决win10无法连接到XP计算机共享打印机
  8. js笔试面试题(随意)
  9. 【我Linux服务器被ddos了】记一次ddos防御+溯源+反击
  10. 移动软件开发-制作视频播放器