揭秘CSS(第 1 版)
4.4.1 线条边框
阅读(

概述

CSS选择器

字体和文本

盒模型

概述

内边距

外边距

边框

在CSS1中,就支持为元素添加边框,并可以设置边框的样式、颜色、及粗细。不过,当时的边框太过单一,只支持简单的线条边框。

在CSS3中,为了实现丰富的边框效果,对边框属性进行了扩展,除了线条边框外,也可以把图像作为边框,同时还可以创建圆角边框,也可以使用盒阴影来为元素添加一个或多个边框阴影。

线条边框使用 border属性定义,图像边框使用 border-image 属性来定义,圆角边框使用 border-radius 属性定义,盒阴影使用 box-shadow 属性定义。

线条边框

为元素定义线条边框,最简单的办法就是使用 border属性。border为复合属性,语法格式为:

border: <border-style> || <border-width> || < border-color>

也就是说,border属性可以分解为边框样式(border-style)、边框宽度(border-width)、边框颜色(border-color)这 3 个属性,接下来分别进行介绍。

border-style

border-style属性是一个非常重要的边框属性,如果没有显式定义 border-style属性,或把 border-style属性设置为 none,元素将没有边框,并忽略 border-color属性 和 border-width属性。

border-style属性的取值为预定义关键字,CSS内置了 10 种不同的边框样式,每个样式都由一个预定义关键字来定义。

表 4‑1 border-style属性的取值及含义
属性值样式说明
none无边框,不占据页面空间,同时忽略 border-color属性和 border-width属性
hidden隐藏边框,它有边框,只是不可见
dotted点状线
dashed虚线
solid实线
double双线,两条单线与其间隔的和等于指定的 border-width属性的值
groove3D凹槽
ridge3D凸槽
inset3D凹边
outset3D凸边

如果一个元素的边框、背景、内容发生重叠,则边框绘制在元素的背景之上,内容之下。这 10 种不同的边框样式,在浏览器中的渲染效果如图 4‑4 所示:

不同边框的样式
图4-4 不同边框的样式

如果border-width属性设置为0,则忽略border-style属性。可以为给定的边框定义多个样式。如,以下规则定义的上边框为点状线、右边框为单实线、下边框为双实线、左边框为虚线:

border-style: dotted solid double dashed;

可以看出,border-style属性的 4个参数值也采用 top-right-bottom-left 的顺序,其作用规则与 padding 相同。

有时候,你可能只想为元素的一边设置边框样式,而不是同时设置所有的 4 个边。这就要用到单边边框的样式属性,按上、右、下、左的顺序,对应的属性依次为border-top-style、border-right-style、border-bottom-style、border-left-style。

border-width

border-width属性用来设置边框的粗细程度,可以使用长度值或预定义关键字 thin | medium | thick,默认值为 medium。长度值表示具体的数值,如2px 或 0.5em,不允许负值。

如果未显式声明 border-width属性,则边框的宽度或者为零(使用reset css时),或者为浏览器的默认值(很可能不是零,尤其是那些通常没有重置的表单元素)。

如果 border-style属性的值为 none,则无论是否显式定义边框的宽度,其宽度都会被自动设置为 0。由于 border-style属性的默认值是 none,因此,如果希望边框出现,就必须显式声明一个边框样式。

border-width属性需要 4 个参数值,也采用 top-right-bottom-left 的顺序。如:

border-width: 1px 2px 3px 4px;

上述规则就表示上边框的宽度为 1px、右边框的宽度为 2px、下边框的宽度为 3px、左边框的宽度为 4px。

也可以使用单边属性,按上、右、下、左的顺序,border-width对应的属性依次为border- top-width、border- right-width、border-bottom-width、border-left-width。

border-color

border-color属性用来设置边框的颜色,其值可以是任意合法CSS的颜色,如预定义的颜色名、十六进制数值、RGB、RGBA、HSL、HSLA。在CSS2中, 还引入了边框颜色值 transparent,这个值使边框透明,用于创建有宽度但不可见的边框。

如果 border-width属性的值等于 0 或 border-style属性的值为 none,则忽略该属性。border-color属性需要 4 个参数值,也采用 top-right-bottom-left 的顺序。如:

border-color: red black green blue;

上述规则就表示上边框的颜色为红色、右边框的样式为黑色、下边框的样式为绿色、左边框的样式为蓝色。

边框颜色按上、右、下、左的顺序,border-color属性对应的独立属性依次为 border-top-color、border-right-color、border-bottom-color、border-left-color。

默认情况下,一个元素的边框颜色为元素内容的前景色。因此,如果没有显式声明边框颜色,边框的颜色将与元素的文本颜色相同。如果该元素不包含任何文本,如只包含图像,那么它的边框颜色,就是其父元素的文本颜色(因为 color 属性具有继承性)。  

说明:单边复合属性

在定义单边属性时,如果每次都要使用诸如 border-top-width、border-top-color 这样的属性,就会带来诸多不便。

于是,CSS也专门为单边定义了复合属性,按上、右、下、左的顺序,对应的单边属性依次为 border-top、border- right、border-bottom、border-left,它们的语法相同,格式如下:

border-top: <border-style> || <border-width> || < border-color>

有了这些属性,就可以创建出一些复杂的边框。如,以下规则为容器的 4 个边创建了 4 种不同的边框:

div  {
   width: 200px;
   height: 60px; 
   border-top: 10px dotted #006dcc;  
   border-right: 10px solid #da4f49;
   border-bottom: 10px dashed #5bb75b;  
   border-left: 10px double #faa732;
}

上述代码的运行结果如图 4 所示:

图4

实际上,在声明单边属性时,具体值的顺序并不重要,浏览器可以根据值的类型自动识别,并应用到相应的属性。所以,以下三个规则会得到相同的边框效果:

div { border-top: 10px dotted #006dcc; }
div { border-top: dotted 10px #006dcc; }
div { border-top: #006dcc dotted 10px; }

并且,如果希望某个值使用默认值,也可以省略其值。如,以下规则就表示希望边框使用与容器中的文本相同的颜色:

div { border-top: 10px dotted; }

需要注意的是,这些单边属性只能应用到一个特定的边,因此,只需声明一个宽度值、一个颜色值和一个边框样式值。否则,将导致整个声明无效。

关于作者

歪脖先生,十五年以上软件开发经验,酷爱Web开发,精通 HTML、CSS、JavaScript、jQuery、JSON、Python、Less、Bootstrap等,著有《HTML宝典》、《揭秘CSS》、《Less简明教程》、《JSON教程》、《Bootstrap2用户指南》、《Bootstrap3实用教程》,并全部在 GitHub 上开源。

如果本教程对您帮助很大,请随意打赏。您的支持,将鼓励我写出更好的教程!

← 键盘方向键翻页 →
返回顶部 手机访问 关注微信 返回底部

扫码访问歪脖网

随时随地,想看就看

关注歪脖网微信

分享 web 知识、交流 web 经验