技巧1:半透明边框

本文介绍了一种实现CSS半透明边框的方法,通过使用background-clip属性将背景颜色的绘制区域改为padding-box,从而避免白色背景遮挡半透明边框效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面的话

从今天起,每天更新一个css技巧,每个技巧都是来自《css揭秘》。

半透明边框

现在我们要得到一个div,它的背景颜色是白色,边框10px实线,并且是半透明的。该如何实现呢?

当我们看到半透明边框时,首先想到应该就是将border直接使用半透明颜色rgba或者hsla。比如:

        border: 10px solid hsla(0,0%,100%,.5);
        background: white;

得到结果:
在这里插入图片描述
从图中看出,这样做并没有得到半透明边框。

为什么会这样呢?

实际上,background设置颜色默认是从border开始绘制,这里设置背景颜色为白色后,这个白色会遮住border设置的半透明色,所以现实中看不到半透明边框的效果。

如何得到半透明边框呢?

这里我们就需要用到background-clip属性,它规定了背景的绘制区域。

语法:

 background-clip: border-box|padding-box|content-box;
描述
border-box背景被裁剪到边框盒。
padding-box背景被裁剪到内边距框。
content-box背景被裁剪到内容框。

有了这个属性就简单了,既然上面的代码中,白色的背景挡住了border的半透明颜色,现在利用 background-clip属性,将背景颜色的绘制区域改为padding-box,从内边距(padding)开始绘制,这个问题就解决了。

完整demo

css:

            body {
                background: url('http://csssecrets.io/images/stone-art.jpg');
            }
            div {
                max-width: 20em;
                padding: 2em;
                margin: 2em auto 0;
                font: 100%/ 1.5 sans-serif;
    
                border: 10px solid hsla(0,0%,100%,.5);
                background: white;
    
                background-clip: padding-box;
    
            }

html:

         <div>
                Can I haz semi-transparent borders?
                Pretty please?
            </div>

效果展示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

crazy的蓝色梦想

如果对你有帮助,就鼓励我一下吧

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

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

打赏作者

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

抵扣说明:

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

余额充值