《css揭秘》--【1】半透明边框

383 阅读1分钟

‘半透明边框’真的是你想的那样就实现了吗?

提到半透明的颜色你会想到 rgba() hsla(),给一个div加一个半透明的边框你可能会这样实现:

border:10px solid rgba(0,0,0,0.1);
background:red;

然后在浏览器中运行,你会发现是这样的:

半透明边框初次尝试图片
注:

  1. 整个body的背景是纯白色;
  2. border的半透明是纯黑色,0.1透明;
  3. div宽度是100px,background是red;

其实我们想实现处理的效果可能是这样的:

最终效果

怎么让border透明的后面是父级的元素的背景色,不是自身的背景色?

面试中可能会有面试官问你,background属性渲染的是盒模型的哪一部分,会渲染border吗?

解释上面问题的方案就是给div再加一个属性:background-clip,它是设置元素的背景是否延伸到边框下面的属性;默认值是border-box表示延伸到边框下面;另外还有padding-box表示延伸到内边距(此例子设置这个值),content-box表示剪切到内容区;text表示剪切到前景文本区

注:最终的例子可在这里查看。 本文是Lea Verou编写的《css secrets》47个css问题中的第一个。侵权可删!