background-clip与box-shadow

background-clip

背景裁剪,默认属性值为border-box,常用属性值包括border-boxcontent-boxpadding-boxtext等;background-clip:text用于进行包含文字的背景裁剪;要实现下图中外边框和内容间的透明效果,可以通过设置以下代码实现:

.box {
	border: 5px solid lightblue;
	background-clip: content-box;	// 透明区域实质上是padding区域
	padding: 1em;
}

在这里插入图片描述

box-shadow

box-shadow: x-label/y-label/blur/spread/color;
box-shadow可以伪造多个border(不止2个),默认的border为outer类型,位于border外部;使用属性值inset伪造位于border内部的边框;此时需要注意的是,inset类型的box-shadow会占据padding及内容本身的宽度;下图代码实现为:

.target {
	width: 300px;
	height: 200px;
	padding: 20px;
	border: 5px solid #e98522;
	box-shadow: 0 0 0 10px rgb(218, 5, 22), inset 0 0 0 10px rgb(115, 187, 21);
}

在这里插入图片描述

根据box-shadow的特性,为了实现background-clip中的样式,我们可以借助box-shadow

.box {
	width: 100px;
	height: 100px;
	padding: 20px;
	border: 10px solid transparent;
	margin: 10px;
	box-shadow: 0 0 0 10px lightblue, inset 0 0 0 10px lightskyblue;
}

效果图如下:
在这里插入图片描述

靶心图

使用background-imagerepeat-radial-gradient属性,指定特殊的起止点即可;

.circle {
	width: 500px;
	height: 500px;
	border-radius: 50%;
	background: repeating-radial-gradient(#000 -30px, #000 30px, transparent 30px, transparent 90px);
}

结果如下:
在这里插入图片描述

此时可以看到边缘锐化明显,并不光滑过度;可以继续结合background-clipbox-shadow属性进行实现:
构造过程如下:使用border-radius使内容框变为圆,并设置background: black content-box,这样实现的是靶心的小圆;设置border:60px transparent为实现小圆外层的透明圆弧;此时添加属性box-shadow: 0 0 0 60px black, inset 0 0 0 60px black;可以在外层继续添加一个黑色的圆弧;最后添加padding: 120px,将border往外撑开,使inset属性的box-shadow顶替上一步outer属性的box-shadow,padding未被inset属性的box-shadow占据的部分成为透明的圆弧,这样多出两层,并且边缘相对较为平滑;

.circle {
	width: 60px;
	height: 60px;
	margin: 100px;
	padding: 120px;
	border: 60px solid transparent;
	border-radius: 50%;
	box-shadow: 0 0 0 60px black, inset 0 0 0 60px black;
	background: black content-box;
}

在这里插入图片描述

demos

实现如下金属旋钮,实现代码具体参考参考文献2
在这里插入图片描述

参考文献

  1. The background-clip Property and its Use Cases
  2. 金属旋钮实现
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Neil-

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

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

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

打赏作者

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

抵扣说明:

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

余额充值