css实现优惠券,波浪条纹,百度前端面试题

在网上看到一道面试题,用css实现下图,觉得比较有趣,所以试着实现了一下 

 

直接放代码,用了比较蠢的办法,如果有大佬知道更好的实现,还请多多指导

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .card1 {
            width: 150px;
            height: 100px;
            position: relative;
            background-image:
                radial-gradient(circle at 40px top, #fff 9px, #eb692d 10px, transparent 11px),
                radial-gradient(circle at 40px bottom, #fff 9px, #eb692d 10px, transparent 11px);
            background-color: #fcedce;
            border-radius: 4px;
        }

        .card1>.line {
            position: absolute;
            bottom: 18px;
            left: 40px;
            width: 1px;
            height: 66px;
            background-color: #eb692d;
        }

        .card1>.top-left-border {
            position: absolute;
            top: 0;
            left: 2px;
            height: 1px;
            width: 28px;
            background-color: #eb692d;
        }

        .card1>.top-right-border {
            position: absolute;
            top: 0;
            left: 50px;
            height: 1px;
            width: 100px;
            background-color: #eb692d;
        }

        .card1>.bottom-left-border {
            position: absolute;
            bottom: 0;
            left: 2px;
            height: 1px;
            width: 28px;
            background-color: #eb692d;

        }

        .card1>.bottom-right-border {
            position: absolute;
            bottom: 0;
            left: 50px;
            height: 1px;
            width: 100px;
            background-color: #eb692d;
        }

        .card1::after {
            content: '';
            position: absolute;
            top: 0;
            bottom: 0;
            right: -3px;
            width: 10px;
            height: 100%;
            background: radial-gradient(circle at right, #ffffff 8px, #eb692d 10px, transparent 8px);
            background-size: 14px 16px;
        }

        .card1::before {
            content: '';
            position: absolute;
            top: 0;
            bottom: 0;
            left: -5px;
            width: 10px;
            height: 100%;
            background: radial-gradient(circle at left, #ffffff 8px, #eb692d 10px, transparent 8px);
            background-size: 14px 16px;
        }

        .card1>span {
            position: absolute;
            right: 30px;
            top: 16px;
            font-size: 50px;
            color: #eb692d;
        }
    </style>
</head>

<body>
    <div class="card1">
        <div class="top-left-border"></div>
        <div class="top-right-border"></div>
        <div class="bottom-left-border"></div>
        <div class="bottom-right-border"></div>
        <div class="top-border"></div>
        <span>券</span>
        <div class="line"></div>
    </div>

</body>

</html>

效果如下: 

         半圆和波浪实现起来都不难,但是,不同颜色的上下边框,在下才疏学浅没想到其他好办法,只能通过元素的定位加上边框的效果。radial-gradient径向渐变在实际工作用的并不是很多,对径向渐变感兴趣的同学可以参考如下博客:

CSS 实现优惠券的技巧 - 掘金

10个demo示例学会CSS3 radial-gradient径向渐变 « 张鑫旭-鑫空间-鑫生活

 如果帮助到您了,可以留下一个赞👍告诉我  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿小野

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值