神奇的CSS技巧探秘——关于边框特效

一、半透明的边框实现

加入我们有这样一个需求:在一个背景图片的区域中,定义一个带有半透明白色边框的白色div。这个的实现方法最先想到的就是可以为边框定义透明度,代码如下:

div{
background:white;
border:20px solidhsla(0,0%,100%,.5);
}

这里hsla为一种定义颜色的方法,它的各个参数含义如下:

H:Hue(色调)。0(或360)表示红色,120表示绿色,240表示蓝色,也可取其他数值来指定颜色。取值为:0
- 360

S:Saturation(饱和度)。取值为:0.0%
- 100.0%

L:Lightness(亮度)。取值为:0.0%
- 100.0%

A:Alpha透明度。取值0~1之间

在浏览器中运行上述的样式设定,发现其实并没有出现我们想要的结果。div还只是一个没有任何边框效果的纯白色div。

这个问题出现的原因是:白色的div挡住了半透明的白色边框。因为如果为一个div设定为白色,那么这个div的盒子模型整个颜色都是白色的。如果设定了半透明的白色边框,放到这个白色的div中是显示不出来的(被div的白色衬托的没有办法显示出边框)。

要想解决这个问题,需要用到CSS3中的新属性——background-clip。background-clip规定了背景的绘制区域:

border-box         背景被裁剪到边框盒

padding-box      背景被裁剪到内边距框

content-box       背景被裁剪到内容框

默认情况下,background-clip的值为border-clip,也就是说整个和模型都应用定义的背景,在我们上面的例子中也就是整个div一直到边框外围都是白色。所以如果我们将background-clip属性值设定为padding-box,即可将外部的边框不填充颜色,就能显示出设定的半透明边框了,代码如下:

div{
       background:white;
       border:20pxsolid hsla(0,0%,100%,.5);
       background-clip:padding-box;
}

这样设定的样式在浏览器中重新运行,就会出现预想的白色半透明边框效果了。

二、多重边框

有的时候为了元素的特别效果,可能需要为元素添加多重的边框,下面介绍两种添加多重边框的方法。

1.      box-shadow

box-shadow属性可以为盒模型设定投影。但是其实它还有设定边框的功能。

box-shadow可以传递五个参数,前两个参数表示投影的偏移量,第三个参数表示投影的模糊程度,第四个参数表示投影的扩张度,最后一个参数表示投影的颜色。然而我们平常很少用到第四个参数,在这里使用第四个参数,就可以让投影进行扩张,通过设定比较合适的值,就可以模拟出边框的效果了。

同样,box-shadow属性可以传入多个阴影的列表,用“,”分割即可。因此,只要我们定义一个阴影列表,并且递增的增加其扩张度参数的取值,就可以绘制出多重边框的效果了。

2.      outline

如果我们只需要绘制两层边框,使用outline也可以做到。outline是border外面的一层,和border原理一样。通过设定outline的样式可以为border外面再设定一层边框。

但是需要注意的是,outline属性设定的边框不会随着内部元素边界样式的变化而变化。也就是说,如果元素边框带了圆角,那么outline绘制出的最外层边框仍然是矩形的。这是outline绘制边框的一个缺憾。

时间: 2024-11-10 16:01:45

神奇的CSS技巧探秘——关于边框特效的相关文章

神奇的CSS技巧探秘——CSS绘制条纹背景

一.横向条纹 如下代码: background: linear-gradient(#fb3 20%, #58a 80%) 上面代码表示整个图片的上部分20%和下部分20%是对应的纯色,只有中间的部分是渐变色.如果让中间的部分逐渐缩小,当中间部分变为0即上下两种颜色的七点和终点相同是,就没有了渐变而变成了两种颜色的色条: background: linear-gradient(#fb3 50%, #58a 50%); 接下来可以通过设置背景的大小,让背景高度变小并且背景默认为repeat,从而出现

前端每日实战3.纯 CSS 创作一个容器厚条纹边框特效

原文地址:3.纯 CSS 创作一个容器厚条纹边框特效 没有啥好点子呀,不爽 HTML代码: <div class="box"> <div class="content"> <h2>What is Lorem Ipsum?</h2> <p>Mauris volutpat risus quis nisi tempus hendrerit. Nullam nisi urna, suscipit quis risu

H5特效动画中的CSS技巧

当下CSS3应用已经相当广泛,其中重要成员之一就是CSS3动画.并且,随着CSS动画的逐渐深入与普及,更复杂与细腻的动画场景也如雨后春笋般破土而出.例如上个月做的「企业QQ-新年祝福」活动: 感谢shirley帮忙录制上面的视频,虽然视频内容是手机上的显示效果,但是,这个"企业新年祝福活动"原本只针对桌面端,移动端是后来辅助增强(增加了相当于活动页面UV 5.7%的点击).而目前大多数类似页面只针对移动端,例如其他同事实现的QQ空间5.0预约页第二版: 扫码(需登录)或者链接二选一:

让IE和Firefox兼容的CSS技巧集合css hack

CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理方法并整理了一下.对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE 影响 CSS 处理,作为W3C的标准,一定要加 DOCTYPE声明. CSS技巧 1.div的垂直居中问题 vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了.缺点是要控制内容不

你应该知道的25个非常有用的CSS技巧

在我们的前端CSS编码当中,经常要设置特殊的字体效果,边框圆角等等,还要考虑兼容性的问题, CSS网页布局,说难,其实很简单. 说它容易,往往有很多问题困扰着新手,在中介绍了非常多的技巧,这些小技巧与知识能事半功倍的给大家以帮助,经验丰富的CSS程序员通常都知道这一点,但初学者不要错过了! 这里有25个非常有用的CSS技巧,将帮助你解决让你棘手的CSS代码问题.你可以直接使用到你现在的项目当中 1.更改文本突出显示颜色(Change Text Highlight Color) 您可能不知道!使用

CSS技巧-rgba函数的妙用

先简单介绍一下: rgba()函数是平时开发中经常遇到的,这篇文章也做了一个比较详细的解读以及一系列的应用. 对它的工作原理做一番分析:就是具有一定透明度的盒子: 还比较了rgba()函数和不透明度属性(opacity)的区别:使用 opacity,所有子元素都会受到影响: 在实际开发中,有些地方用rgba()函数也更加方便:为网站 header 定制主题.文章标题.按钮.渐变.子元素.调色盘中的深/浅效果.图像效果. 最后也指出使用rgba()需要注意的地方:比如兼容性.颜色对比检查等等. 原

css小案例:导航栏特效

css小案例:导航栏特效,实现如下图所示效果: 首先可以将html代码写出: 1 <nav class="cl-effect-1"> 2 <a href="#">Umbrella</a> 3 <a href="#">Ineffable</a> 4 <a href="#">Lilt</a> 5 <a href="#"&g

css技巧一

隐藏元素 display:none,隐藏元素,并删除其所在的位置. visiblity:hidden 隐藏元素,还占用其位置. 边框问题 img放入a元素里,img会出现边框问题.通过reset img的border样式即可解决. 影藏部分内容 可以通过设置height高度和overflow来实现.也可以通过display;:none来实现. 置换元素和非置换元素 置换元素(replaced element)主要是指 img, input, textarea, select, object 等这

20个很有用的CSS技巧

导语:下面这几个CSS技巧你可能不知道,1.彩色照片变黑白,2.所有元素垂直居中,3.禁用鼠标,4.模糊文字,小编学完能量满满的,觉得对CSS又充满了爱,你也来看看. 1. 黑白图像 这段代码会让你的彩色照片显示为黑白照片,是不是很酷? img.desaturate { filter: grayscale(100%); -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%); -ms-filter: grayscale(100%