CSS盒模型、边框和背景、表格和列表、颜色和透明度、阴影和轮廓及长度单位rem
1、CSS 盒模型
元素尺寸
CSS 盒模型中最基础的就是设置一个元素的尺寸大小。有三组样式来配置一个元素的尺寸大小,样式表如下:
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
width | auto、长度值或百分比 | 设置元素的宽度 | 1 |
height | auto、长度值或百分比 | 设置元素的高度 | 1 |
min-width | auto、长度值或百分比 | 设置元素最小宽度 | 2 |
min-height | auto、长度值或百分比 | 设置元素最小高度 | 2 |
max-width | auto、长度值或百分比 | 设置元素最大宽度 | 2 |
max-height | auto、长度值或百分比 | 设置元素最大高度 | 2 |
// 设置元素尺寸
div {width: 200px;height: 200px;
}
解释:设置元素的固定尺寸。
// 限制元素尺寸
div {min-width: 100px;min-height: 100px;max-width: 300px;max-height: 300px;
}
解释:这一组主要是应对可能动态产生元素尺寸变大变小的问题,从而限制它最大和最小的值。
// auto 自适应
div {width: auto;height: auto;
}
解释:auto 是默认值,width 在 auto 下是 100%的值,height 在 auto 下是自适应。
// 百分比方式
#a {background: silver;width: 200px;height: 200px;
}
#b {background: gray;width: 80%;height: 80%;
}
<div id="a">
<div id="b">我是 html5</div>
</div>
解释:百分比就是相对于父元素长度来衡定的。
元素内边距
CSS 盒模型中可以设置元素内部边缘填充空白的大小,我们称为内边距。样式表如下:
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
padding-top | 长度值或百分比 | 设置顶部内边距 | 1 |
padding-bottom | 长度值或百分比 | 设置底部内边距 | 1 |
padding-left | 长度值或百分比 | 设置左边内边距 | 1 |
padding-right | 长度值或百分比 | 设置右边内边距 | 1 |
padding | 1 ~ 4 个长度值或百分比 | 简写属性 | 1 |
// 设置四个内边距
div {padding-top: 10px;padding-bottom: 10px;padding-left: 10px;padding-right: 10px;
}
// 简写形式,分别为上 10px、右 10px、下 10px、左 10px
div {padding: 10px 10px 10px 10px;
}
// 简写形式,分别为上 10px,左右 50px,下 200px
div {padding: 10px 50px 200px;
}
// 简写形式,分别是上下 10px,左右 20px
div {padding: 10px 20px;
}
// 简写形式:上下左右均 10px
div {padding: 10px;
}
元素外边距
CSS 盒模型中可以设置元素外部边缘填充空白的大小,我们称为外边距。样式表如下:
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
margin-top | 长度值或百分比 | 设置顶部外边距 | 1 |
margin-bottom | 长度值或百分比 | 设置底部外边距 | 1 |
margin-left | 长度值或百分比 | 设置左边外边距 | 1 |
margin-right | 长度值或百分比 | 设置右边外边距 | 1 |
margin | 1 ~ 4 长度值或百分比 | 简写属性 | 1 |
// 设置四个外边距
div {margin-top: 10px;margin-bottom: 10px;margin-left: 10px;margin-right: 10px;
}
// 简写形式,分别为上 10px、右 10px、下 10px、左 10px
div {margin: 10px 10px 10px 10px;
}
// 简写形式,分别为上 10px,左右 50px,下 200px
div {margin: 10px 50px 200px;
}
// 简写形式,分别是上下 10px,左边 20px
div {margin: 10px 20px;
}
// 简写形式:上下左右均 10px
div {margin: 10px;
}
处理溢出
当设置了元素固定尺寸且内容过大时,就会出现溢出的问题。溢出主要朝两个方向:右侧和底部。我们可以通过 overflow 系列样式来控制它。
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
overflow-x | 溢出值 | 设置水平方向的溢出 | 3 |
overflow-y | 溢出值 | 设置垂直方向的溢出 | 3 |
overflow | 溢出值 | 简写属性 | 2 |
溢出处理主要有四种处理值:
值 | 说明 |
---|---|
auto | 浏览器自行处理溢出内容。如果有溢出内容,就显示滚动条,否则就不显示滚动条 |
hidden | 如果有溢出的内容,直接剪掉 |
scroll | 不管是否溢出,都会出现滚动条。但不同平台和浏览器显示方式不同 |
visible | 默认值,不管是否溢出,都显示内容 |
// 设置溢出为 auto 值
div {overflow-x: auto;
}
元素可见性
使用 visibility 属性可以实现元素的可见性,这种样式一般可以配合JavaScript来实现效果。样式表如下:
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
visibility | visible | 默认值,元素在页面上可见 | 2 |
hidden | 元素不可见,但会占据空间 | 2 | |
collapse | 元素不可见,隐藏表格的行与列,如果不是表格,则和 hidden 一样 | 2 |
// 设置元素隐藏,但占位
div {visibility: hidden;
}
// 隐藏表格的行或列,但不占位,Chrome 和 Opera 不支持
table tr:first-child {visibility: collapse;
};
元素盒类型
CSS 盒模型中的 display 属性,可以更改元素本身盒类型。那么元素有哪些盒类型呢?主要有:1. 块级元素(区块);2. 行内元素(内联);3. 行内-块级元素(内联块);4. 隐藏元素。
- 块级元素
所谓块级元素,就是能够设置元素尺寸、隔离其他元素功能的元素。比如:<div>、<p>
等文档元素。 - 行内元素
所谓行内元素,不能够设置元素尺寸,它只能自适应内容、无法隔离其他元素,其它元素会紧跟其后。比如:<span>、<b>
等文本元素。 - 行内-块元素
所谓行内-块元素,可以设置元素尺寸,但无法隔离其他元素的元素。比如<img>
。
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
display | block | 盒子为块级元素 | 1 |
inline | 盒子为行内元素 | 1 | |
inline-block | 盒子为行内-块元素 | 2 | |
none | 盒子不可见,不占位 | 1 |
// 将行内元素转成块级元素
span {background: silver;width: 200px;height: 200px;display: block;
}
// 将块级元素转换成行内元素
div {background: silver;width: 200px;height: 200px;display: inline;
}
// 将块级元素转化成行内-块元素
div {background: silver;width: 200px;height: 200px;display: inline-block;
}
// 将元素隐藏且不占位
div {display: none;
}
元素的浮动
CSS 盒模型有一种叫浮动盒,就是通过 float 属性建立盒子的浮动方向,样式表如下:
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
float | left | 浮动元素靠左 | 1 |
right | 浮动元素靠右 | 1 | |
none | 禁用浮动 | 1 |
// 实现联排效果
#a {background: gray;float: left;
}
#b {background: maroon;float: left;
}
#c {background: navy;float: left;
}
// 实现元素右浮动
#c {background: navy;float: right;
}
// 取消元素的浮动
#c {background: navy;float: none;
}
刚才的浮动有一个问题:当一个元素盒子被浮动后,下面的元素会自动堆叠处理,导致元素不可见或部分不可见。我们可以使用 clear 属性来处理。
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
clear | none | 允许两边均可浮动 | 1 |
left | 左边界不得浮动 | 1 | |
right | 右边界不得浮动 | 1 | |
both | 两边都不得浮动 | 1 |
// 两边均不可浮动
#c {background: navy;clear: both;
}
2、边框和背景
声明边框
边框的声明有三个属性设置,样式表如下:
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
border-width | 长度值 | 设置边框的宽度,可选 | 1 |
border-style | 样式名称 | 设置边框的样式,必选 | 1 |
border-color | 颜色值 | 设置边框的颜色,可选 | 1 |
这三个属性值,只有 border-style 是必须声明,才可以出现边框。而其他两个属性会出现默认值。
// 最简单的边框,边框长度默认 3px,边框颜色为黑色
div {border-style: solid;
}
// 配置完整的边框
div {border-style: solid;border-width: 2px;border-color: red;
}
如果元素长和高均为 200px 时,四个边框均为 2 时,元素的长高总尺寸均为 204px。
边框样式
边框的样式主要有三种,分别是边框长度取值、边框的颜色和边框的线条类型。颜色是通用的颜色代码,和所有其他颜色取值一下。而长度和线条类型,边框有自己独到的部分。
边框宽度取值表如下:
值 | 说明 |
---|---|
长度值 | CSS长度值:比如 px、em 等 |
百分数 | 直接设置百分数:1、2、3 等 |
thin | |
medium | 使用长度名称的预设宽度,这三个值的具体意义由浏览器来定义,从小到大依次增大 |
thick |
一般来说,边框为了更加精准,还要计算元素盒子的总尺寸,使用长度值的比较多。而定义边框线条的样式如下样式表:
值 | 说明 |
---|---|
none | 没有边框 |
dashed | 破折线边框 |
dotted | 圆点线边框 |
double | 双线边框 |
groove | 槽线边框 |
inset | 使元素内容具有内嵌效果的边框 |
outset | 使元素内容具有外凸效果的边框 |
ridge | 脊线边框 |
solid | 实线边框 |
// solid 实线使用频率最高
div {border-style: solid;border-width: 10px;border-color: red;
}
如果想对四条边中某一条边单独进行设置,可以使用如下样式表:
属性 | 说明 | CSS版本 |
border-top-width | 定义顶端 | 1 |
border-top-style | ||
border-top-color | ||
border-bottom-width | 定义底部 | 1 |
border-bottom-style | ||
border-bottom-color | ||
border-left-width | 定义左侧 | 1 |
border-left-style | ||
border-left-color | ||
border-right-width | 定义右边 | 1 |
border-right-style | ||
border-right-color |
// 只设置顶端
div {border-top-style: solid;border-top-width: 10px;border-top-color: red;
}
如果四条边都一致,那么没必要分写成三句样式,直接通过简写即可:
属性 | 值 | 说明 | CSS版本 |
border | <宽度> <样式> <颜色> | 设置四条边的边框 | 1 |
border-top | 只设置上边框 | ||
border-bottom | 只设置下边框 | ||
border-left | 只设置左边框 | ||
border-right | 只设置右边框 |
// 简写形式四条边设置
div {border: 10px solid red;
}
圆角边框
CSS3 提供了一个非常实用的圆角边框的设置。使用 border-radius 属性,就可以达到这种效果,样式表如下:
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
border-radius | 长度值或百分数 | 四条边角 | 3 |
border-top-left-radius | 长度值或百分数 | 左上边角 | 3 |
border-top-right-radius | 长度值或百分数 | 右上边角 | 3 |
border-bottom-left-radius | 长度值或百分数 | 左下边角 | 3 |
border-bottom-right-radius | 长度值或百分数 | 右下边角 | 3 |
// 设置圆角矩形
div {border: 10px solid red;border-radius: 10px;
}
// 四条边分别设置
div {border: 10px solid red;border-radius: 10px 20px 30px 40px;
}
设置背景
盒模型的尺寸可以通过两种方式实现可见性,一种就是之前的边框,还有一种就是背景。CSS 背景设置的样式表如下:
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
background-color | 颜色 | 背景的颜色 | 1 |
background-image | none 或 url | 背景的图片 | 1/3 |
background-repeat | 样式名称 | 背景图片的样式 | 1/3 |
background-size | 长度值或其他 | 背景图像的尺寸 | 3 |
background-position | 位置坐标 | 背景图像的位置 | 1 |
background-attachment | 滚动方式 | 背景图片的滚动 | 1/3 |
background-clip | 裁剪方式 | 背景图片的裁剪 | 3 |
background-origin | 位置坐标 | 背景图片起始点 | 3 |
background | 复合值 | 背景图片简写方式 | 1 |
background-color
值 | 说明 | CSS版本 |
---|---|---|
颜色 | 设置背景颜色为指定色 | 1 |
transparent | 设置背景颜色为透明色 | 1 |
div {background-color: silver;
}
解释:设置元素的背景颜色。属性值是颜色值。
div b {background-color: transparent;
}
解释:默认值为 transparent,为透明的意思。这样<div>
内部的元素就会继承<div>
的背景色。一般来说这个属性使用频率很低,原因是不需要改变色彩时就默认,需要改变色彩时又是颜色值。
body {background-color: silver;
}
解释:在<body>
元素下可以设置整个页面的背景色。
background-image
值 | 说明 | CSS版本 |
---|---|---|
none | 取消背景图片的设置 | 1 |
url | 通过 URL 设置背景图片 | 1 |
body {background-image: url(loading.gif);
}
解释:url 里面是图片的路径,设置整个页面以这个图片为背景,如果图片不足以覆盖,则复制扩展。
div {background-image: none;
}
解释:如果多个 div 批量设置了背景,而其中某一个不需要背景,可以单独设置 none值取消背景。
在 CSS3 中,背景图片还设置了比如线性、放射性等渐变方式。
background-repeat
值 | 说明 | CSS版本 |
---|---|---|
repeat-x | 水平方向平铺图像 | 1 |
repeat-y | 垂直方向平铺图像 | 1 |
repeat | 水平和垂直方向同时平铺图像 | 1 |
no-repeat | 禁止平铺图像 | 1 |
body {background-image: url(loading.gif);background-repeat: no-repeat;
}
解释:让背景图片只显示一个,不平铺。
background-position
值 | 说明 | CSS版本 |
---|---|---|
top | 将背景图片定位到元素顶部 | 1 |
left | 将背景图片定位到元素左部 | 1 |
right | 将背景图片定位到元素右部 | 1 |
bottom | 将背景图片定位到元素底部 | 1 |
center | 将背景图片定位到元素中部 | 1 |
长度值 | 使用长度值偏移图片的位置 | 1 |
百分数 | 使用百分数偏移图片的位置 | 1 |
body {background-image: url(loading.gif);background-repeat: no-repeat;background-position: top;
}
解释:将背景图片置于页面上方,如果想置于左上方则值为:top left。
body {background-image: url(loading.gif);background-repeat: no-repeat;background-position: 20px 20px;
}
解释:使用长度值或百分数,第一值表示左边,第二个值表示上边。
background-size
值 | 说明 | CSS版本 |
---|---|---|
auto | 默认值,图像以本尺寸显示 | 3 |
cover | 等比例缩放图像,使图像至少覆盖容器,但有可能超出容器 | 3 |
contain | 等比例缩放图像,使其宽度、高度中较大者与容器横向或纵向重合 | 3 |
长度值 | CSS 长度值,比如 px、em | 3 |
百分数 | 比如:100% | 3 |
body {background-image: url(loading.gif);background-size: cover;
}
解释:使用 cover 相当于 100%,全屏铺面一张大图,这个值非常实用。在等比例放大缩小的过程中,可能会有背景超出。
div {background-image: url(loading.gif);background-size: contain;
}
解释:使用 contain 表示,尽可能让图片完整的显示在元素内。
body {background-image: url(loading.gif);background-size: 240px 240px;
}
解释:长度值的用法,分别表示长和高。
background-attachment
值 | 说明 | CSS版本 |
---|---|---|
scroll | 默认值,背景固定在元素上,会随着内容一起滚动 | 1 |
fixed | 背景固定在视窗上,内容滚动时背景不动 | 1 |
body {background-image: url(loading.gif);background-attachment: fixed;
}
解释:fixed 属性会导致背景产生水印效果,拖动滚动条而背景不动。
background-origin
值 | 说明 | CSS版本 |
---|---|---|
border-box | 在元素盒子内部绘制背景 | 3 |
padding-box | 在内边距盒子内部绘制背景 | 3 |
content-box | 在内容盒子内部绘制背景 | 3 |
div {width: 400px;height: 300px;border: 10px dashed red;padding: 50px;background-image: url(img.png);background-repeat: no-repeat;background-origin: content-box;
}
解释:设置背景起始位置。
background-clip
值 | 说明 | CSS版本 |
---|---|---|
border-box | 在元素盒子内部裁剪背景 | 3 |
padding-box | 在内边距盒子内部裁剪背景 | 3 |
content-box | 在内容盒子内部裁剪背景 | 3 |
div {width: 400px;height: 300px;border: 10px dashed red;padding: 50px;background-image: url(img.png);background-repeat: no-repeat;background-origin: border-box;background-clip: padding-box;
}
解释:在内边距盒子内部裁剪背景。
background
div {width: 400px;height: 300px;border: 10px dashed red;padding: 50px;background: silver url(img.png) no-repeat scroll left top/100%border-box content-box;
}
解释:完整的简写顺序如下:
[background-color]
[background-image]
[background-repeat]
[background-attachment]
[background-position] / [ background-size]
[background-origin]
[background-clip];
3、表格和列表
表格样式
表格有五种独有样式,样式表如下:
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
border-collapse | 边框样式 | 相邻单元格的边框样式 | 2 |
border-spacing | 长度值 | 相邻单元格边框的间距 | 2 |
caption-side | 位置名称 | 表格标题的位置 | 2 |
empty-cells | 显示值 | 空单元格是否显示边框 | 2 |
table-layout | 布局样式 | 指定表格的布局样式 | 2 |
border-collapse
值 | 说明 | CSS版本 |
---|---|---|
separate | 默认值,单元格边框独立 | 2 |
collapse | 单元格相邻边框被合并 | 2 |
table {border-collapse: collapse;
}
解释:单元格相邻的边框被合并。
border-spacing
值 | 说明 | CSS版本 |
---|---|---|
长度值 | 0 表示间距,其他使用 CSS 长度值 | 2 |
table {border-spacing:10px;
}
解释:border-collapse: separate;的状态下才有效,因为要设置间距,不能合并。
caption-side
值 | 说明 | CSS版本 |
---|---|---|
top | 默认值,标题在上方 | 2 |
bottom | 标题在下方 | 2 |
table {caption-side: bottom;
}
解释:设置表格标题。
empty-cells
值 | 说明 | CSS版本 |
---|---|---|
show | 默认值,显示边框 | 2 |
hide | 不显示边框 | 2 |
table {empty-cells: hide;
}
解释:单元格内容为空时隐藏边框。
table-layout
值 | 说明 | CSS版本 |
---|---|---|
auto | 默认值,内容过长时,拉伸整个单元格 | 2 |
fixed | 内容过长时,不拉伸整个单元格 | 2 |
table {table-layout: fixed;
}
解释:内容过长后,不会拉伸整个单元格。
列表样式
列表有四种独有样式,样式表如下:
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
list-style-type | 类型值 | 列表中的标记类型 | 1/2 |
list-style-image | none或url | 图像作为列表标记 | 1 |
list-style-position | 位置值 | 排列的相对位置 | 1 |
list-style | 简写属性 | 列表的简写形式 | 1 |
list-style-type
值 | 说明 | CSS版本 |
---|---|---|
none | 没有标记 | 1 |
disc | 实心圆 | 1 |
circle | 空心圆 | 1 |
square | 实心方块 | 1 |
decimal | 阿拉伯数字 | 1 |
lower-roman | 小写罗马数字 | 1 |
upper-roman | 大写罗马数字 | 1 |
lower-alpha | 小写英文字母 | 1 |
upper-roman | 大写英文字母 | 1 |
ul {list-style-type: square;
}
解释:列表前缀的标记类型,这里是 CSS1 版本的。CSS2 版本还包含比如日文、亚美尼亚数字、希腊文等前缀。
list-type-position
值 | 说明 | CSS版本 |
---|---|---|
outside | 默认值,标记位于内容框外部 | 1 |
inside | 标记位于内容框内部 | 1 |
ul {width: 120px;list-style-position: inside;
}
解释:标记位于内容框的内部。
list-type-image
值 | 说明 | CSS版本 |
---|---|---|
none | 不使用图像 | 1 |
url | 通过 url 使用图像 | 1 |
ul {list-style-image: url(bullet.png);
}
解释:使用图片作为前缀的标记。
list-style
ul {list-style: lower-alpha inside url(bullet.png);
}
解释:简写形式。
垂直对齐
在<table>
中<td>
单元格,我们可以使用 text-align 属性水平对齐,但是垂直对齐就无法操作了。CSS 提供了 vertical-align 属性用于垂直对齐。
值 | 说明 | CSS版本 |
---|---|---|
baseline | 内容对象与基线对齐 | 1 |
top | 内容对象与顶端对齐 | 1 |
middle | 内容对象与中部对齐 | 1 |
bottom | 内容对象与底部对齐 | 1 |
table tr td {vertical-align: bottom;
}
解释:将单元格内的内容对象实现垂直对齐。
值 | 说明 | CSS版本 |
---|---|---|
sub | 垂直对齐文本的下标 | 1 |
super | 垂直对齐文本的上标 | 1 |
b {vertical-align: super;
}
解释:文本上下标设置。
值 | 说明 | CSS版本 |
---|---|---|
长度值 | 设置上下的偏移量,可以是负值 | 1 |
百分比 | 同上 | 1 |
div span {vertical-align: -200px;
}
解释:负值往下,正值往上。如果默认基线在上面,用负数。如果默认基线在下面,用正值。
4、颜色和透明度
颜色包括字体颜色、背景颜色、边框颜色,设置字体颜色也称为文本块的前景色。
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
color | 颜色值 | 设置文本前景色 | 1 |
p {color: red;
}
解释:设置文本颜色。
CSS3 提供了一个属性 opacity,可以设置元素的透明度。
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
opacity | 0 ~ 1 | 设置元素的透明度 | 3 |
p {color: red;opacity: 0.5;
}
解释:设置元素的透明度。
5、盒子阴影和轮廓
box-shadow
CSS3 提供了一个非常实用的效果样式,就是阴影效果。通过 box-shadow 属性来实现,样式表如下:
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
box-shadow | hoffset | 阴影的水平偏移量,是一个长度值,正值表示阴影向右偏移,负值表示阴影向左偏移 | 3 |
voffset | 阴影的垂直偏移量,是一个长度值,正值代表阴影位于元素盒子的下方,负值代表阴影位于元素盒子上方 | 3 | |
blur | (可选)指定模糊值,是一个长度值,值越大盒子的边界越模糊。默认值为 0,边界清晰 | 3 | |
spread | (可选)指定阴影延伸半径,是一个长度值,正值代表阴影向盒子各个方向延伸扩大,负值代表阴影沿相反方向缩小 | 3 | |
color | (可选)设置阴影的颜色,如果省略,浏览器会自行选择一个颜色 | 3 | |
inset | (可选)将外部阴影设置为内部阴影 | 3 |
div {width: 200px;height: 200px;border: 10px solid silver;box-shadow: 5px 4px 10px 2px gray;
}
解释:给元素盒子增加阴影效果。
box-shadow: 5px 4px 10px 2px gray inset;
解释:实现内部阴影。
outline
CSS3 还提供了轮廓样式,它和边框一样,只不过它可以在边框的外围再加一层。样式表如下:
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
outline-color | 颜色 | 外围轮廓的颜色 | 3 |
outline-offset | 长度 | 轮廓距离元素边框边缘的偏移量 | 3 |
outline-style | 样式 | 轮廓样式,和 border-style 一致 | 3 |
outline-witdh | 长度 | 轮廓宽度 | 3 |
outline | 简写 | <颜色> <样式> <宽度> | 3 |
div {width: 200px;height: 200px;border: 10px solid silver;outline: 10px double red;
}
解释:在边框的外围再增加一圈轮廓。
6、光标样式
我们不但可以指定页面上的元素样式,就连光标的样式也可以指定。样式表如下:
属性 | 值 | 说明 | CSS版本 |
---|---|---|---|
cursor | 光标样式 | auto,default,none,context-menu,help,pointer,progress,wait,cell,crosshair,text,vertical-text,alias,copy,move,no-drop,not-allowed,e-resize,n-resize,ne-resize,nw-resize,s-resize,se-resize,sw-resize,w-resize,ew-resize,ns-resize,nesw-resize,nwse-resize,col-resize,row-resize,all-scroll | 1 |
div {cursor: move;
}
解释:设置当前元素的光标为移动光标。
7、CSS3 前缀
在 CSS3 的很多新属性推出时,这些属性还处在不太稳定的阶段,随时可能被剔除。而此时的浏览器厂商为了实现这些属性,采用前缀方法。各大厂商前缀列表如下:
浏览器 | 厂商前缀 |
---|---|
Chrome、Safari | -webkit- |
Opera | -o- |
Firefox | -moz- |
Internet Explorer | -ms- |
我们之前学习过几个 CSS3 的新属性,比如:box-shadow、border-radius、opacity等。这几个属性我们在前面的使用中,并没有添加所谓的浏览器厂商前缀。那是因为,这些属性已经在主流浏览器或版本成为了标准。具体进化步骤如下:
- 属性尚未提出,这个属性所有浏览器不可用;
- 属性被提出,但未列入标准,浏览器厂商通过私有前缀来支持该属性;
- 属性被列入标准,可以使用前缀或不使用前缀来实现属性特性;
- 属性不需要再使用前缀,所有浏览器都稳定支持。
我们就拿 border-radius 举例,它是 CSS3 的标准属性。早期的时候处于实验阶段,尚未列入标准时,需要使用厂商前缀。具体浏览器支持度如下:
属性 | 浏览器 | 带前缀版本 | 不带前缀版本 | 标准/实验 |
---|---|---|---|---|
border-radius | IE | 不支持 | 9.0+ | 标准 |
Firefox | 3.0 需带-moz- | 4.0+ | 标准 | |
Safari | 3.1 需带-webkit- | 5.1+ | 标准 | |
Chrome | 4.0 | 5.0+ | 标准 | |
Opera | 不支持 | 10.5+ | 标准 |
如果是手机等移动端一般采用的是 IOS 或安卓系统,那么基本上它的引擎是 webkit,直接参考-webkit-即可。
在 CSS3 手册上,Chrome 支持 border-radius 的版本为 13.0,而部分教材和文章上写到只要 5.0。当然,这里可能表达的含义可能不同。而截至到 2015 年 4 月份最新的 Chrome 版本已经到 41.0 了,所以,不管是 5.0 还是 13.0 都是老古董了,没必要深究。Opera 支持 border-radius 版本为 11.5,而目前的版本是 28.0,也无伤大雅了。而被列入标准的 box-shadow 和 opacity 基本与 border-radius 前缀版本一致。
// 因为目前处在标准阶段,没必要写前缀了
div {border-radius: 50px;
}
// 实验阶段的写法
div {-webkit-border-radius: 50px;-moz-border-radius: 50px;border-radius: 50px;
}
实验阶段的写法有三句,分别解释一下:-webkit-表示 Chrome 浏览器的私有属性前缀、-moz-表示 Firefox 私有属性前缀,如果是处于实验阶段的旧版本浏览器,那么不支持 border-radius,从而通过厂商前缀的方式来支持。如果是新版浏览器,已经是处于标准阶段,那么又有两种说法:1.如果新版浏览器废弃了前缀,那么前缀写法就不支持了,仅支持标准写法;2.如果新版浏览器没有废弃前缀,那么两种写法都可以,但要注意顺序,且属性值要保持一致。
如果同时出现四个前缀+一个标准写法,四个前缀是当实验阶段时让四种引擎的浏览器厂商支持自己的私有属性,一个标准写法表示当这个属性列入标准后,使用新版浏览器运行时直接执行这个标准属性。
// 前缀写法写在标准后面,且值不一样,就会出现问题
div {border-radius: 50px;-webkit-border-radius: 100px;
}
特别注意:1. IE 的前缀-ms-,和 Opera 的前缀-o-,在 border-radius 中不存在;2. 现在的Opera浏览器也支持-webkit-前缀,-webkit-border-radius就能支持;3. Safari for Windows 已被苹果公司在 2012 年放弃,遗留版本为 5.1.7。
最后说明:W3C 官方的立场表示实验阶段的属性仅为了测试,未来有可能修改或删除。而大量的开发者也认为在实际项目中不应该使用前缀,而使用一种优雅降级保证一定的用户体验,而通过渐进增减的方式让新版高级浏览器保证最高的效果。
8、长度单位 rem
CSS3 引入了一些新的尺寸单位,这里重点推荐一个:rem 或者称为(根 em)。目前主流的现代浏览器都很稳定的支持。它和 em、百分比不同的是,它不是与父元素挂钩,而是相对于根元素<html>
的文本大小来计算的,这样能更好的统一整体页面的风格。
// 首先,来一段 HTML
<h1>标题<em>小标题</em></h1>
<p>我是一个段落,我是一段<code>代码</code></p>
// 其次来一段 CSS
html {font-size: 62.5%;
}
h1 {font-size: 3em;
}
p {font-size: 1.4em;
}
这里做几个解释,我们在之前的 Web 设计中大量使用了 px 单位进行布局。因为,早期的固定布局使用 px 较为方便,逐渐养成了这种习惯。而使用 em 单位其实更加灵活,尤其是在修改样式时,只需要修改一下挂钩元素的那个大小即可,无须每个元素一个个修改。
但就算是 em,还是有一定问题。网页默认的字号大小为 16px,然后通过<html>
设置62.5%,将网页基准设置为 10px。而<h1>
设置为 3em,就是自身大小的 3 倍;<p>
设置为1.4em,就是 10px 的 1.4 倍,即 14px。
现在问题来了,<code>
里面的文本想设置 11px,怎么办呢?设置 1.1em 吗?不对,因为它挂钩的父元素不是<html>
而是<p>
变成了 14px 的 1.1 倍了,而想设置 11px,则需要设置 0.786 倍才行。但是,这样的计算量太大了。所以,W3C 推出了直接基于根元素单位:rem。
// 直接基于<html>的单位
code {font-size: 1.1rem;
}
浏览器 | rem 单位支持 |
---|---|
Opera | 11.6+ |
Firefox | 3.6+ |
Safari | 5.0+ |
Chrome | 6.0+ |
IE | 9.0+ |
CSS盒模型、边框和背景、表格和列表、颜色和透明度、阴影和轮廓及长度单位rem相关推荐
- html盒模型中border的写法,CSS盒模型--边框设置:border: 1px solid red(像素 样式 颜色 ),border-bottom:1px dotted #ccc...
盒模型--边框(一) 盒子模型的边框就是围绕着内容及补白的线,这条线你可以设置它的粗细.样式和颜色(边框三个属性). 如下面代码为div来设置边框粗细为2px.样式为实心的.颜色为红色的边框: div ...
- CSS盒模型--边框设置:border: 1px solid red(像素 样式 颜色 ),border-bottom:1px dotted #ccc
盒模型--边框(一) 盒子模型的边框就是围绕着内容及补白的线,这条线你可以设置它的粗细.样式和颜色(边框三个属性). 如下面代码为div来设置边框粗细为2px.样式为实心的.颜色为红色的边框: div ...
- 视频教程-CSS3网页设计与制作(6-11):颜色特性/新型盒模型/边框/背景/渐变-HTML5/CSS
CSS3网页设计与制作(6-11):颜色特性/新型盒模型/边框/背景/渐变 知识传播美丽,分享传递快乐.作者主要从事Java服务器端技术.前端与移动开发技术的研究和授课,已有10多年从业经验. IT老 ...
- css --- [读书笔记] 盒模型(边框、内外边距)
说明 源代码 学习 盒子模型(css重点) css学习三大重点: css盒子模型. 浮动. 定位 目标: 能说出盒子模型由哪四部分组成: 内容.边框.内外边距 能说出内边距的作用,设置不同数值分别代表 ...
- css盒模型和元素绘制
转自:http://www.mysjtu.com/page/M0/S438/438952.html 一.什么是css盒模型? W3C组织就建议把所有网页上的对象都放在一个盒(box)中,设计师可以通过 ...
- CSS 盒模型与box-sizing
一.盒模型 一个web页面由许多html元素组成,而每一个html元素都可以表示为一个矩形的盒子,CSS盒模型正是描述这些矩形盒子的存在. MDN的描述: When laying out a docu ...
- html5 box sizing,CSS 盒模型与box-sizing
一.盒模型 一个web页面由许多html元素组成,而每一个html元素都可以表示为一个矩形的盒子,CSS盒模型正是描述这些矩形盒子的存在. MDN的描述: When laying out a docu ...
- 从零开始学前端 - 7. CSS盒模型 margin和padding详解
作者: 她不美却常驻我心 博客地址: https://blog.csdn.net/qq_39506551 微信公众号:老王的前端分享 每篇文章纯属个人经验观点,如有错误疏漏欢迎指正.转载请附带作者信息 ...
- 尖刀出鞘的display常用属性及css盒模型深入研究
一:diplay:inline-block 含义:指元素创建了一个行级的块级元素,该元素内部(内容)被格式化成一个块级元素,同时元素本身则被格式化成一个行内元素.更简单的说就是说inline-bloc ...
最新文章
- Python 无法安装PyAudio问题
- 数据结构树之二分查找树
- SQLite在C#的使用
- VTK:可视化之VectorText
- Mac 登陆 去掉 其他用户
- 性能压测工具选型对比
- 去哪儿-19-detail-ajax
- Python输入输出练习
- html range 样式,美化 input range 控制条
- 隐马尔可夫模型三个问题的求解(一)
- 27_文件上传—添加商品
- 数据分析报表使用指南
- 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON8 LCD1602液晶显示
- Spark核心之top、take和takeOrdered
- 他说他是具有文学气息的工科屌丝男(900字文言文,硕士论文致谢)
- 项目一:认识Linux操作系统
- 用电脑怎么打开pdf文件阅读
- java 字符串加密_如何用JAVA实现字符串简单加密解密?
- mpvue实现类似通讯录锚点
- AI遮天传 DL-深度学习在计算机视觉中的应用