CSS表格
表格边框
使用border
属性可以指定CSS表格边框:
1 | table,th,td{ |
由于表格和th/td
元素有独立的边界,故会显示有双边框。
折叠边框
使用border-collapse
属性可以设置表格的边框是否被折叠成一个单一的边框或隔开:
1 | table{ |
表格宽度和高度
使用width
和height
属性定义表格的宽度和高度:
1 | table{ |
表格文字对齐
表格中的文字对齐可分为水平对齐和垂直对齐。
使用text-align
属性设置水平对齐方式,如向左对齐left
、向右对齐right
或居中对齐center
:
1 | td{ |
使用vertical-align
属性设置垂直对齐方式,如顶部top
、底部bottom
或中间center
:
1 | td{ |
表格填充
使用padding
属性控制内容与边框之间的距离:
1 | td{ |
表格颜色
使用border
属性指定边框的颜色,使用color
属性控制文本颜色,使用background-color
属性控制背景颜色:
1 | table,td,th{ |
盒子模型
CSS盒子模型本质上是一个盒子,封装周围的HTML元素,包括边距、边框、填充和实际内容。盒模型允许在其他元素和周围元素边框之间的空间放置元素。
标准盒子模型如下图所示:
- Margin(外边距):盒子与其他盒子的距离。Margin没有背景颜色,其完全透明
- Border(边框):盒子的厚度和它的颜色或材料。边框颜色会受到盒子的背景颜色影响
- Padding(内边距):盒子里与盒中内容的填充物。会受到框中填充的背景颜色影响
- Content(内容):盒子里装的东西,显示文本和图像
元素的宽度和高度
当指定一个CSS元素的宽度和高度属性时,实质上只是设置内容区域的宽度和高度,除此之外,还需要添加填充、边框和边距:
1 | a{ |
则该元素的总宽度为250px(宽)+20px(左右填充)+10px(左右边框)+20px(左右边距=300px。
因此,元素的总宽度计算公式为:
元素的总宽度=元素自身宽度+左填充+右填充+左边框+右边框+左边距+右边距
同理可得,元素的总高度计算公式为:
元素的总高度=元素自身高度+顶部填充+底部填充+上边框+下边框+上边距+下边距
网页的宽度一般为1920px,高度不限。有限可视区在:950px~1200px的宽度之间。
边框
边框样式
使用border-style
属性可以定义边框的样式。
border-style有以下属性值:
- none:默认无边框
- dotted:定义一个点线框
- dashed:定义一个虚线框
- solid:定义实线边界
- double:定义两个边界。两个边界的宽度和
border-width
的值相同 - groove:定义3D沟槽边距。效果取决于边界的颜色值
- ridge:定义3D脊边界。效果取决于边界的颜色值
- inset:定义一个3D的嵌入边框。效果取决于边界的颜色值
- outset:定义一个3D的突出边框。效果取决于边界的颜色值
边框宽度
使用border-width
属性可以为边框指定宽度。可以指定长度值,比如2px或0.1em;或使用3个关键字之一:thin、medium(默认值)和thick。
1 | p{ |
边框颜色
使用border-color
属性可以设置边框的颜色,一次最多可以接受4个颜色值,使用border-color
必须得先使用border-style
来设置边框样式:
1 | p{ |
单独设置各边
可以指定不同的侧面不同的边框:
1 | p{ |
border-style 属性可以有 1-4 个值:
border-style:dotted solid double dashed;
- 上边框是 dotted
- 右边框是 solid
- 底边框是 double
- 左边框是 dashed
border-style:dotted solid double;
- 上边框是 dotted
- 左、右边框是 solid
- 底边框是 double
border-style:dotted solid;
- 上、底边框是 dotted
- 左、右边框是 solid
border-style:dotted;
- 四面边框是 dotted
透明边框
透明样式的定义如下:
1 | a:link,a:visited{ |
简写边框属性
可以在border
属性中设置以下属性:
- border-width
- border-style
- border-color
1 | border:5px solid red; |
CSS伪类
伪类可以用来添加一些选择器的特殊效果。
伪类用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化的。伪类的名称不区分大小写,伪类的语法如下:
1 | selector:pseudo-class{ |
CSS类中也可以使用伪类:
1 | selector.class:pseudo-class{ |
anchor伪类
在支持CSS的浏览器中,链接的不同状态可以以不同的方式显示。
1 | a:link{ |
伪类和CSS类
伪类可以与CSS类配合使用:
1 | a.red:visited{ |
first-child
伪类
可以使用first-child
伪类来选择元素的第一个子元素。
注意:在IE8之前是版本必须声明<!DOCTYPE>
,first-child
才会生效。
如用来匹配第一个<p>
元素:
1 | <html> |
运行结果如下:
如用来匹配所有<p>
元素中的第一个<i>
元素:
1 | <html> |
运行结果如下:
如用来匹配所有作为第一个子元素的<p>
元素中的所有<i>
元素:
1 | <html> |
运行结果如下:
lang伪类
lang伪类可以为不同的语言定义特殊的规则。
注意:在IE8之前是版本必须声明<!DOCTYPE>
才能支持lang伪类。
如lang类为属性值为no的q元素定义引号的类型:
1 | <html> |
运行结果如下: