Border(边框)是 CSS 盒模型中的一个重要组成部分,它位于内边距(padding)和外边距(margin)之间,为元素提供可视化的边界。虽然看似简单,但 border 具有许多值得深入探索的特性。
一、基础概念
CSS Border 是围绕元素内容和内边距的一条或多条线,用于在视觉上区分不同元素或为元素增添装饰效果。每条边框均有三个核心属性构成:宽度(width)、样式(style)和颜色(color),共同定义其外观表现。
基本语法:
/* 基本语法 */
border: [width] [style] [color];
二、 边框的基本属性(三要素)
2.1 border-width
定义边框的粗细,可以使用长度单位(px, em, rem等)或关键字(thin, medium, thick)。
示例:
border-width: 2px;
border-width: 0.5em;
border-width: thin medium thick; /* 上 左右 下 */2.2 border-style
定义边框的样式,这是边框可见的必要条件(默认值为 none,边框不可见)。常用样式包括:
属性值 | 描述 |
|---|---|
solid | 实线 |
dotted | 点线 |
dashed | 虚线 |
double | 双线 |
groove | 3D凹槽 |
ridge | 3D凸脊 |
inset | 3D内嵌 |
outset | 3D外凸 |
none | 默认值,无边框。 |
hidden | 隐藏边框(与none类似,但在表格中有不同表现) |
示例:
border-style: solid; /* 实线 */
border-style: dotted; /* 点线 */
border-style: dashed; /* 虚线 */
border-style: double; /* 双线 */
border-style: groove; /* 3D凹槽 */
border-style: ridge; /* 3D凸脊 */
border-style: inset; /* 3D内嵌 */
border-style: outset; /* 3D外凸 */
border-style: none; /* 无边框 */
border-style: hidden; /* 隐藏边框(与none类似,但在表格中有不同表现) */
2.3 border-color
定义边框颜色,可以使用任何 CSS 颜色值。如果省略,默认为当前文本颜色。
关键字:如 red、green、blue等。
十六进制值:如 #ff0000、#00ff00、#0000ff等。
RGB/RGBA:如rgb(255, 0, 0)、rgba(255, 0, 0, 0.5)等。
HSL/HSLA:如 hsl(0, 100%, 50%)。
默认值:继承元素的 color 属性值
示例:
border-color: #ff0000;
border-color: rgb(255, 0, 0);
border-color: rgba(255, 0, 0, 0.5);
border-color: transparent; /* 透明边框 */三、边框的简写属性
3.1 全边框简写
border 属性可以同时设置宽度、样式和颜色,例如:
border: 2px solid red;
/*或*/
border: 2px solid;
/*或*/
border: solid;注意:样式是必填项,其他属性可以省略并使用默认值。
3.2 单边边框简写
可以为单独的边设置边框,例如:
border-top: 1px dashed blue;
border-right: 2px solid green;
border-bottom: 3px dotted yellow;
border-left: 4px double purple;3.3 特定属性的单边设置
也可以只为所有边或单边设置特定属性,例如:
border-width: 1px 2px 3px 4px; /* 上 右 下 左 */
border-style: solid dashed dotted double;
border-color: red blue yellow purple;border-top-width: 2px;
border-right-style: dashed;
border-bottom-color: green;3.4 逻辑属性(CSS Logical Properties)
在 RTL(从右到左)布局或垂直书写模式下,可以使用逻辑属性:
border-block-start: 2px solid red; /* 块起始边(通常是上边) */
border-block-end: 2px solid blue; /* 块结束边(通常是下边) */
border-inline-start: 2px solid green; /* 内联起始边(通常是左边) */
border-inline-end: 2px solid yellow; /* 内联结束边(通常是右边) */四、边框圆角 (border-radius)
border-radius 属性用于创建圆角边框,可以创建圆形、椭圆形或自定义形状,是现代UI设计中常用的效果。
4.1 基本用法
同时设置所有border的圆角半径
/* 所有角的半径都为10px */
border-radius: 10px;4.2 控制单个角
示例:
border-top-left-radius: 10px;
border-top-right-radius: 20px;
border-bottom-right-radius: 30px;
border-bottom-left-radius: 40px;4.3 简写形式
示例:
/* 示例1:统一设置 */
.box1 {
border-radius: 10px; /* 四个角都是10px */
}
/* 示例2:对角相等 */
.box2 {
border-radius: 10px 20px; /* 左上=右下=10px, 右上=左下=20px */
}
/* 示例3:三个值 */
.box3 {
border-radius: 10px 20px 30px; /* 左上=10px, 右上=左下=20px, 右下=30px */
}
/* 示例4:四个值 */
.box4 {
border-radius: 10px 20px 30px 40px; /* 左上=10px, 右上=20px, 右下=30px, 左下=40px */
}CSS border-radius 简写形式的记忆方法
核心原则:遵循顺时针方向(左上→右上→右下→左下)
数值规则:
1个值:四角相等;
2个值:对角相等,第一值对应左上和右下,第二值对应右上和左下。
3个值:第一值对应左上,第二值对应右上和左下,第三值对应右下。
4个值:依次对应四个角;
这种模式与 margin 和 padding 的简写规则一致,所以如果你已经熟悉了它们的规则,那么 border-radius 的记忆就会更容易。
4.4 椭圆圆角
可以为每个角设置水平和垂直半径,用斜杠分隔:
示例:
/*示例一*/
border-radius: 10px / 20px; /* 水平半径/垂直半径 */
/*示例二*/
border-top-left-radius: 10px 30px; /* 上左角的水平/垂直半径 */
/*示例三*/
border-radius: 50% 20% / 10% 40%; /* 水平半径 / 垂直半径 */五、透明边框与特殊效果
5.1 透明边框
使用 transparent 值可以创建透明边框,常用于布局技巧:
示例:
border: 1px solid transparent;5.2 边框图像 (border-image)
border-image 是 CSS 中一个强大的复合属性,它突破了传统纯色或渐变边框的限制,允许开发者使用图像来渲染元素的边框,从而打造出更具视觉冲击力的设计效果。该属性本质上是一个简写形式,可同时定义多个子属性,实现对边框图像的全面控制。border-image 各个子属性详解如下:
border-image-source:指定用作边框的图像源。可以是 URL 地址、渐变或其他图像资源。
border-image-slice:定义图像的哪一部分被用作边框图像。该属性将图像分割成九个部分(四个角、四条边和中心区域),并决定哪些部分用于边框。
border-image-width:定义边框图像的宽度。如果省略,则默认为 border-width 的值。
border-image-outset:定义边框图像超出边框盒的量。这使边框图像可以延伸到元素的内容区域之外。
border-image-repeat:定义边框图像在边框上的重复方式。可选值包括 stretch(拉伸)、repeat(重复)、round(平铺且缩放以避免部分图像)和 space(平铺且留空隙以避免部分图像)。
注意:border-image是一个高级特性,需要考虑浏览器兼容性。
示例:
.fancy-border {
width: 200px;
height: 100px;
border: 12px solid transparent;
border-image: url('frame.png') 25 / 15px round;
/* 等价于:
border-image-source: url('frame.png');
border-image-slice: 25;
border-image-width: 15px;
border-image-repeat: round;
*/
}图例:border-image-slice 将图像分割成九个部分:

四个角、四条边和中心区域的用途:
四个角区域(角1,角2,角3,角4)
- 直接用于元素的四个角落。
- 不会被拉伸或重复,保持原始形状。
- 确保角落装饰的一致性和美观性。四条边区域(边1,边2,边3,边4)
- 用于元素的四条边框。
- 会根据 border-image-repeat 属性设置被拉伸、重复或平铺。
- 适应元素边框的长度,确保边框连续。中心区域(中心)
- 默认情况下不显示(除非使用 fill 关键字)
- 当使用 fill 关键字时,会填充元素的内容区域。
- 可用于背景图案或内容区域的装饰。
六、边框与盒模型
边框会影响元素的总宽度和高度,除非使用 IE盒模型,即:box-sizing: border-box。
示例:标准盒模型
.box {
width: 200px;
padding: 20px;
border: 5px solid red;
/* 总宽度:200 + 20*2 + 5*2 = 250px */
}示例:IE盒模型
.box-border-box {
width: 200px;
padding: 20px;
border: 5px solid red;
box-sizing: border-box;
/* 总宽度:200px(包含内边距和边框) */
}七、边框的特殊应用
7.1 三角形绘制
利用透明边框可以创建三角形。
示例:
.triangle {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 100px solid blue;
}若需欣赏更多三角形示例,请点击 《CSS伪元素之三角形实现》博文。
7.2 边框动画
边框支持 CSS 过渡和动画:
示例:
.animated-border {
border: 2px solid blue;
transition: border-color 0.3s, border-width 0.3s;
}
.animated-border:hover {
border-color: red;
border-width: 4px;
}7.3 多边框效果
使用伪元素或 box-shadow 创建多边框:
示例一:使用伪元素
/* 方法1:使用伪元素 */
.multi-border {
position: relative;
border: 5px solid blue;
}
.multi-border::before {
content: '';
position: absolute;
top: -10px;
left: -10px;
right: -10px;
bottom: -10px;
border: 5px solid red;
z-index: -1;
}示例二:使用 box-shadow
.multi-border-shadow {
border: 5px solid blue;
box-shadow:
0 0 0 5px red,
0 0 0 10px green;
}7.4 表格边框合并
控制表格边框的显示方式:
table {
border-collapse: collapse; /* 边框合并为单一边框 */
/* 或 */
border-collapse: separate; /* 边框分开(默认) */
border-spacing: 5px 10px; /* 仅separate时有效:水平 垂直间距 */
}八、实践示例
示例一,综合展示 border 的各种应用,点击《CSS Border 深入理解》。
示例二,通俗易懂地理解 border-image-slice,点击《CSS Border Image Slice 通俗解释》。
总结
CSS Border 是一个功能强大且多用途的属性,它不仅提供了基本的边框样式,还可以用于:
视觉装饰:为元素添加各种样式的边框。
形状创建:通过透明边框创建三角形等形状。
布局辅助:调试时快速查看元素边界。
交互反馈:通过边框变化提供视觉反馈。
创意设计:结合 border-radius 和 border-image 创建独特设计。
掌握 border 的各个方面,可以帮助你更好地控制页面元素的外观和行为,创造出更丰富、更有趣的界面效果。