找回密码
 注册

[CSS] CSS border技巧之将border-color边框颜色设置为当前文本颜色

php 发表于 2015/3/29 23:47 | 显示全部楼层 |阅读模式
CSS中如何将盒子的边框颜色设置为盒子的当前文本色呢?
CSS的border属性是用来给盒子设置边框的,border属性是一个复合属性,是border-width, border-style, border-color三个属性复合以后的属性。
border还可以拆分成四个方向上的边框,分别是border-top, border-right, border-bottom, border-left, 这四个方向上的设置和border属性一样,每个属性都可以拆分成3个属性,分别是:
border-top-width, border-top-style, border-top-color
border-right-width, border-right-style, border-right-color
border-bottom-width, border-bottom-style, border-bottom-color
border-left-width, border-left-style, border-left-color
border: 1px solid #ff0000; 相当于同时设置 border-width: 1px; border-style: solid; border-color: #ff0000;
当直接使用border属性设置边框时,没有指定是上右下左哪个方向上的边框时,是指同时为所有方向设置相同的边框。

以上代码就可以拆散成:
border-top-width: 1px;
border-top-style: solid;
border-top-color: #ffff00;
border-right-width: 1px;
border-right-style: solid;
border-right-color: #ffff00;
border-bottom-width: 1px;
border-bottom-style: solid;
border-bottom-color: #ffff00;
border-left-width: 1px;
border-left-style: solid;
border-left-color: #ffff00;

由上面代码可以看到,通常情况下都需要手动给边框设置一个颜色,有没有办法能够使用当前元素的文本颜色来充当盒子边框颜色呢?
技巧就是,在设置边框时不设置边框颜色,只设置边框宽度(粗细度)和边框的样式,没有设置边框颜色的边,边框颜色就是当前盒子的文本色,这种方法在所有浏览器中都能够得到支持,不存在兼容性问题。

另外,对于支持CSS3的浏览器,除了不定义边框颜色外,还可以直接用currentColor代表当前文本颜色。比如:
border: 1px solid currentColor;

需要注意的是,如上写法,对于不支持currentColor的浏览器(比如IE8及更低版本的IE)来说,整个设置都不会生效,如果是拆分来写,是会生效的,因为浏览器不认为currentColor,拆开来写以后失效的只是边框颜色这一属性,失效后自动变成了默认设置,相当于没有设置。

手机版|轻松E站

轻松E站

快速回复 返回顶部 返回列表