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

2021-09-18
2,355次阅读
2条评论

我们在做商城类项目时,时常会有开发优惠券的需求,那么我们如何通过纯 CSS 来实现类似京东、淘宝的优惠券样式。

下面给大家分享一个纯 CSS 写的优惠券边沿透明圆形镂空打孔效果。最终效果大致如下:

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

使用了生成二维码和点击复制jquery.qrcode.min.jsclipboard.min.js两个插件

方法一

div{
    width:300px;
    height: 500px;
    background: radial-gradient(circle at 0% 35%, transparent 8%, #fff 8.5%) no-repeat left / 51% 100%,radial-gradient(circle at 100% 35%, transparent 8%, #fff 8.5%) no-repeat right / 51% 100%;
}

这个比较简洁:DEMO代码

方法二

HTML代码

<div class="myqrcode">
        <div class="myqrcode-box">
            <div class="myqrcode-box-top">
                <div class="text tc">
                    <div class="t">我的推荐码</div>
                    <div class="p">2000</div>
                </div>
            </div>
            <div class="myqrcode-box-middle">
                <div></div>
            </div>
            <div class="myqrcode-box-bottom">
                <div class="text">
                    <div id="qrcode"></div>
                    <div class="button tc">
                        <button type="button" class="btn">保存图片</button>
                        <button type="button" class="btn btn_copy" data-clipboard-text="https://my.liluohost.com/aff.php?aff=323">复制链接</button>
                    </div>
                </div>
            </div>
        </div>
</div>

CSS代码

.myqrcode{
    background-image: linear-gradient(120deg, #f6d365 0%, #fda085 100%);
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 999;
    display: flex;
    justify-content: center;
    align-items: center;
}
.myqrcode-box{
    width: 5.9rem;
    border-radius: 0.16rem;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.myqrcode-box-top, .myqrcode-box-bottom{
    background: #FFFFFF;
}
.myqrcode-box-top{
    flex: 1;
}
.myqrcode-box-top .text{
    padding: 0.8rem 0 0.4rem 0;
}
.myqrcode-box-top .text .t{
    font-size: 0.32rem;
    line-height: 1;
    font-weight: bold;
}
.myqrcode-box-top .text .p{
    padding-top: 0.15rem;
}
.myqrcode-box-bottom{
    padding: 0 0.38rem;
}
.myqrcode-box-bottom .text{
    padding: 0.4rem 0.6rem 0.8rem 0.6rem;
}
.myqrcode-box-bottom .text .btn{
    padding: 0.15rem 0.4rem;
    background-image: linear-gradient(to right, #fa709a 0%, #fee140 100%);
    border-radius: 0.5rem;
    color: #FFF;
    cursor: pointer;
    margin-top: 0.5rem;
}
.myqrcode-box-middle{
    height: 0.64rem;
    position: relative;
    overflow: hidden;
}
.myqrcode-box-middle div{ /* 中间虚线 */
    position: absolute;
    left: 0.36rem;
    right: 0.36rem;
    top: 0.29rem;
    border-top: 0.03rem dashed #E6E6E6;
    z-index: 9;
}
.myqrcode-box-middle:before, .myqrcode-box-middle:after{
    content: '';
    border: 3rem solid #FFFFFF;
    position: absolute;
    width: 0.6rem;
    height: 0.6rem;
    border-radius: 50%;
    top: 50%;
    margin-top: -3.3rem;
}
.myqrcode-box-middle:before{
    left: -3.3rem;
}
.myqrcode-box-middle:after{
    right: -3.3rem;
}

原文链接:https://www.lervor.com/archives/72/

正文完
要饭中,多少给点吧(支付宝)
post-qrcode
 
评论(2条评论)
验证码
wlz
2023-03-29 21:18:21 回复

为何我用你的代码做不出镂空的圆孔效果?可以把文件发给我吗?我想研究下

 Windows  Chrome  中国北京北京市电信