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+ |
- 如何重置Hue用户密码
- 如何使用R连接Hive与Impala
- Equation Group泄露工具之vBulletin无文件后门分析
- 如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业
- 如何使用Beeline连接Impala
- 微软公式编辑器系列漏洞分析(一):CVE-2017-11882
- 预警揭秘:倒计时炸弹11.2.0.4前版本DB Link必须在2019年4月升级真相
- RPO攻击技术浅析
- 渗透技巧 | Windows上传并执行恶意代码的N种姿势
- 如何通过Cloudera Manager配置Spark1和Spark2的运行环境
- 从CPU漏洞Meltdown&Spectre看侧信道攻击
- 如何使用Java连接Kerberos的Kafka
- 隐藏在Chrome插件商店中的恶魔——恶意插件User-Agent Swither分析
- 如何使用CDSW在CDH中分布式运行所有R代码
- HTML 教程
- HTML 简介
- html div 标签介绍
- html span 标签介绍
- html a 超链接标签
- HTML Br换行标签介绍
- HTML P段落标签介绍
- HTML br与p标签区别
- Html H 标题标签
- html px em pt长度单位
- HTML form 标签
- HTML radio 单选框
- HTML B 加粗标签
- HTML strong加粗粗体标签
- HTML em 强调标签
- HTML i 斜体标签
- HTML u下划线标签
- HTML s 删除线标签
- Html img 图片标签
- Html上标注sup与下标注sub标签
- HTML nobr 禁止换行标签
- HTML hr 水平线标签
- HTML label 标签
- HTML input 标签
- HTML textarea 标签
- HTML select下拉列表标签
- HTML checkbox 多选框
- HTML font color 标签
- HTML iframe 框架标签
- HTML Table 表格
- HTML dl dt dd 标签
- HTML ol li有序列表标签
- HTML ul li 无序列表标签
- HTML 注释
- CSS 教程
- CSS 简介
- CSS 语法
- CSS Id 和 Class选择器
- CSS 样式的创建
- CSS background 背景介绍
- CSS 文本样式
- CSS font 字体
- CSS A 链接
- CSS ul ol列表样式
- CSS TABLE 样式
- CSS 框模型
- CSS border 边框
- CSS Outlines 轮廓
- CSS 外边距 Margin
- CSS Padding 内边距
- CSS 分组和嵌套选择器
- CSS 尺寸 (Dimension)
- CSS Display 属性
- CSS Position 定位
- CSS Float 浮动
- CSS 水平对齐(Horizontal Align)
- CSS 组合选择符
- CSS 伪类
- CSS 伪元素
- CSS 导航栏
- CSS 下拉菜单
- CSS 图片廊
- CSS 图像透明/不透明
- CSS sprite 图像拼合技术
- CSS 媒体类型
- CSS 属性选择器
- CSS 实例
- 用斗地主的实例学会使用java Collections工具类
- Command PhaseScriptExecution failed with a nonzero exit code问题解决
- Effective Java中构建器Builder的理解
- Java的位运算符详解实例。
- 用一个测试类简化排序算法时间复杂度的研究
- R语言之可视化(33)绘制差异基因分析统计图
- Java transient不被持久化的原因
- 举一个有趣的例子,让你轻松搞懂JVM内存管理
- gulp的使用
- SpringBoot中 使用[info]日志级别打印mybatis sql语句
- Spring Boot 使用策略模式指定Service实现类
- 55. Vue webpack的基本使用
- ajax无刷新页面切换,历史记录后退前进解决方案
- 一起来学演化计算-SBX模拟二进制交叉算子和DE差分进化算子
- 通过与C++程序对比,彻底搞清楚JAVA的对象拷贝