htmlcss
HTML4
超链接
超链接内部可以嵌套任何元素,除了超链接
主要作用:从当前页面进行跳转。
可以实现:①跳转到指定页面、②跳转到指定文件(也可触发下载)、③跳转到锚点位置、④唤起指定 应用
跳转到页面
1 | <!-- 跳转其他网页 --> |
跳转到文件
1 | <!-- 浏览器能直接打开的文件 --> |
注意1:若浏览器无法打开文件,则会引导用户下载。
注意2:若想强制触发下载,请使用 download 属性,属性值即为下载文件的名称。
跳转到锚点
第一步 设置锚点
1 | <!-- 第一种方式:a标签配合name属性 --> |
第二步 跳转锚点
1 | <!-- 跳转到test1锚点--> |
唤起指定应用
通过 a 标签,可以唤起设备应用程序。
1 | <!-- 唤起设备拨号 --> |
列表
有序列表
1 | <h2>要把大象放冰箱总共分几步</h2> |
无序列表
1 | <h2>我想去的几个城市</h2> |
表格
表格标签
table
:表格
caption
:表格标题
thead
:表格头部
tbody
:表格主体
tfoot
:表格注脚
tr
:每一行
th 、td
:每一个单元格(备注:表格头部中用 th ,表格主体、表格脚注中用:td
具体编码
1 | <table border="1"> |
常用属性
标签名 | 标签语义 | 常用属性 | 单/双标签 |
---|---|---|---|
table |
表格 | width :设置表格宽度。height :设置表格最小高度。border :设置表格边框宽度。cellspacing :设置单元格之间的间距。 |
双 |
thead |
表格头部 | height :设置表格头部高度。align :设置单元格的水平对齐方式。valign :设置单元格的垂直对齐方式。 |
双 |
tbody |
表格主体 | 常用属性与 thead 相同。 |
双 |
tr |
行 | 常用属性与 thead 相同。 |
双 |
tfoot |
表格脚注 | 常用属性与 thead 相同。 |
双 |
td |
普通单元格 | width :设置单元格的宽度。height :设置单元格的高度。align :设置单元格的水平对齐方式。valign :设置单元格的垂直对齐方式。rowspan :指定要跨的行数。colspan :指定要跨的列数。 |
双 |
th |
表头单元格 | 常用属性与 td 相同。 |
双 |
常用标签补充
标签名 | 标签含义 | 单/双标签 |
---|---|---|
br |
换行 | 单 |
hr |
分隔 | 单 |
pre |
按原文显示(一般用于在页面中嵌入大段代码) | 双 |
表单
常用表单控件
序号 | 标签类型 | 常用属性及注意事项 | 示例代码 |
---|---|---|---|
① | 文本输入框 | name 属性:数据的名称。value 属性:输入框的默认输入值。maxlength 属性:输入框最大可输入长度。 |
<input type="text" name="username" value="默认值" maxlength="20"> |
② | 密码输入框 | name 属性:数据的名称。value 属性:输入框的默认输入值(一般不用,无意义)。maxlength 属性:输入框最大可输入长度。 |
<input type="password" name="password" maxlength="20"> |
③ | 单选框 | name 属性:数据的名称,注意:想要单选效果,多个 radio 的 name 属性值要保持一致。value 属性:提交的数据值。checked 属性:让该单选按钮默认选中。 |
<input type="radio" name="sex" value="female"> 女<br><input type="radio" name="sex" value="male" checked> 男 |
④ | 复选框 | name 属性:数据的名称。value 属性:提交的数据值。checked 属性:让该复选框默认选中。 |
<input type="checkbox" name="hobby" value="smoke" checked> 抽烟<br><input type="checkbox" name="hobby" value="drink"> 喝酒 |
⑤ | 隐藏域 | name 属性:指定数据的名称。value 属性:指定的是真正提交的数据。 |
<input type="hidden" name="tag" value="100"> |
⑥ | 提交按钮 | 注意: 1. button 标签 type 属性的默认值是 submit 。2. button 不要指定 name 属性。3. input 标签编写的按钮,使用 value 属性指定按钮文字。 |
<input type="submit" value="点我提交表单"><br><button>点我提交表单</button> |
⑦ | 重置按钮 | 注意点: 1. button 不要指定 name 属性。2. input 标签编写的按钮,使用 value 属性指定按钮文字。 |
<input type="reset" value="点我重置"><br><button type="reset">点我重置</button> |
⑧ | 普通按钮 | 注意点:普通按钮的 type 值为 button ,若不写 type 值是 submit 会引起表单的提交。 |
<input type="button" value="普通按钮"><br><button type="button">普通按钮</button> |
⑨ | 文本域 | 常用属性如下: 1. rows 属性:指定默认显示的行数,会影响文本域的高度。2. cols 属性:指定默认显示的列数,会影响文本域的宽度。3. 不能编写 type 属性,其他属性与文本框一致。 |
<textarea name="msg" rows="22" cols="3">我是文本域</textarea> |
⑩ | 下拉框 | 常用属性及注意事项: 1. name 属性:指定数据的名称。2. option 标签设置 value 属性,提交的数据是 value 的值(建议设置 value 属性)。3. option 标签设置了 selected 属性,表示默认选中。 |
<select name="from"><option value="黑">黑龙江</option><option value="辽">辽宁</option><option value="粤" selected>广东</option></select> |
禁用表单控件
给表单控件的标签设置 disabled 既可禁用表单控件
input 、 textarea 、 button 、 select 、 option 都可以设置
label标签
label
标签可与表单控件相关联,关联之后点击文字,与之对应的表单控件就会获取焦点。
两种与 label
关联方式如下:
- 让
label
标签的for
属性的值等于表单控件的id
- 把表单控件套在
label
标签的里面。
CSS2
CSS编写位置
行内样式
写在标签的style
属性中,(又称:内联样式)。
1 | <h1 style="color:red;font-size:60px;">用例</h1> |
内部样式
写在html 页面内部,单独放在style
标签中
1 | <style> |
外部样式
写在单独的.css
文件中,随后在html
中引入使用
新建一个扩展名为
.css
的样式文件1
2
3
4h1 {
color: red;
font-size: 40px;
}在
HTML
文件中引入1
<link rel="stylesheet" href="./xxx.css">
优先级
优先级规则:行内样式 > 内部样式 = 外部样式
- 内部样式、外部样式,这二者的优先级相同,且:后面的 会覆盖 前面的(简记:“后来 者居上”)。
- 同一个样式表中,优先级也和编写顺序有关,且:后面的 会覆盖 前面的(简记:“后来 者居上”)。
CSS选择器
基本选择器
通配选择器
作用:选中所有元素
1 | * { |
元素选择器
作用: 为某种元素设统一样式
1 | h1 { |
类选择器
作用:根据元素的class
值,来选中某些元素
1 | .active { |
id
选择器
作用:根据元素的id
属性值,选中某个元素
1 | #earthy { |
复合选择器
交集选择器
作用:选中同时符合多个条件的元素
1 | button.active { |
并集选择器
作用:多个条件,符合一个即可的元素
1 | .rich, |
后代选择器
作用:选中指定元素中,符合要求的后代元素
1 | /* 选中ul中的所有li */ |
子代选择器
作用: 选中指定元素中,符合要求的子元素
1 | /* div中的子代a元素 */ |
兄弟选择器
相邻兄弟选择器
作用:选中紧挨着的下一个
1 | div+p { |
通用兄弟选择器
作用:选中下面的所有符合要求兄弟
1 | div~p { |
属性选择器
作用:选中属性值符合一定要求的元素。
语法:
[属性名]
选中具有某个属性的元素。[属性名="值"]
选中包含某个属性,且属性值等于指定值的元素。[属性名^="值"]
选中包含某个属性,且属性值以指定的值开头的元素。[属性名$="值"]
选中包含某个属性,且属性值以指定的值结尾的元素。[属性名*=“值”]
选择包含某个属性,属性值包含指定值的元素。
1 | /* 选中具有title属性的元素 */ |
伪类选择器
动态伪类
:link
- 表示超链接未被访问的状态。
:visited
- 表示超链接已经被访问过的状态。
:hover
- 表示鼠标悬停在元素上的状态。
:active
- 表示元素被激活的状态。
- 激活:按下鼠标但不松开。
- 注意:遵循
LVHA
的顺序,即:link
->visited
->hover
->active
。
:focus
- 表示获取焦点的元素。
- 通常表单类元素才能使用
:link
、:visited
、:hover
、:focus
伪类。 - 当用户点击元素、触摸元素,或通过键盘(如按
tab
键)选择元素时,元素会获得焦点。
结构伪类
:first-child
- 选中所有兄弟元素中的第一个。
:last-child
- 选中所有兄弟元素中的最后一个。
:nth-child(n)
- 选中所有兄弟元素中的第
n
个。
- 选中所有兄弟元素中的第
:first-of-type
- 选中所有同类型兄弟元素中的第一个。
:last-of-type
- 选中所有同类型兄弟元素中的最后一个。
:nth-of-type(n)
- 选中所有同类型兄弟元素中的第
n
个。
- 选中所有同类型兄弟元素中的第
0
或不写:什么都选不中 —— 几乎不用。
n
:选中所有子元素 —— 几乎不用。
1
到正无穷的整数:选中对应序号的子元素。
2n
或even
:选中序号为偶数的子元素。
2n+1
或odd
:选中序号为奇数的子元素。
n+3
:选中前 3 个子元素。
否定伪类
:not(选择器)
排除满足括号中条件的元素。
UI伪类
:checked
被选中的复选框或单选按钮。:enable
可用的表单元素(没有disabled
属性)。:disabled
不可用的表单元素(有disabled
属性)。
伪元素选择器
::first-letter
- 选中元素中的第一个文字。
::first-line
- 选中元素中的第一行文字。
::selection
- 选中被鼠标选中的内容。
::placeholder
- 选中输入框的提示文字。
::before
- 在元素最开始的位置创建一个子元素(必须用
content
属性指定内容)。
- 在元素最开始的位置创建一个子元素(必须用
::after
- 在元素最后的位置创建一个子元素(必须用
content
属性指定内容)。
- 在元素最后的位置创建一个子元素(必须用
选择器优先级
行内样式 > ID选择器 > (伪)类选择器 > (伪)元素选择器 > 通配选择器
!important
权重最高(跟在值后面)
复合选择器的优先级
优先级由四个部分组成,用“A, B, C,
”表示,具体计算规则如下:
A
: ID选择器的数量。B
: 类选择器、属性选择器、伪类选择器的数量。C
: 元素选择器、伪元素选择器的数量。
从左到右,一位一位比较,一旦比出胜负,不再比较
CSS三大特性
层叠性(Cascade)
层叠性指的是当多个样式同时作用于一个元素时,CSS会按照一定的规则来决定哪个样式最终生效。这些规则包括样式的来源(如外部样式表、内联样式等)、选择器的优先级、以及样式的定义顺序。具体层叠规则包括:
- 样式来源优先级:浏览器默认样式 < 外部样式表 < 内部样式表 < 内联样式。
- 选择器的权重(具体选择器比通用选择器优先级高)。
- 后定义的样式优先。
继承性(Inheritance)
继承性指的是某些CSS属性可以从父元素传递给子元素。例如,color
(字体颜色)和font-family
(字体类型)等属性是可以继承的。而像padding
(内边距)和margin
(外边距)这样的属性则不会被继承。继承性帮助减少样式重复设置,提高代码可维护性。
优先级(Specificity)
优先级决定了当多个选择器作用于同一元素时,哪个选择器的样式会生效。优先级的计算规则根据选择器的类型来决定,越具体的选择器优先级越高。具体规则如下:
- ID选择器(
#id
)优先级最高。 - 类选择器(
.class
)、伪类选择器等次之。 - 元素选择器(
div
、p
等)优先级较低。
CSS颜色
表示方式一:颜色名
编写方式:直接使用颜色对应的英文单词
表示方式二:rgb或rgba
使用 红、黄、蓝 这三种光的三原色进行组合。
- r 表示 红色
- g 表示 绿色
- b 表示 蓝色
- a 表示 透明度
举例:
1 | /* 使用 0~255 之间的数字表示一种颜色 */ |
表达方式三: HEX或HEXA
HEX 的原理同与 0~255 的数字,要么都是 rgb 一样,依然是通过:红、绿、蓝色 进行组合,只不过要用 6位(分成3组) 来 表达, 格式为:#rrggbb
每一位数字的范围是
0~f
所以每一种光的最小值是 00 最大值是ff
示例
1 | color: #ff0000;/* 红色 */ |
表达方式四: HSL或HSLA
HSL
是通过:色相、饱和度、亮度,来表示一个颜色的,格式为: hsl(色相,饱和度,亮度)
- 色相(Hue): 范围是 0° ~ 360°,例如:
- 0°: 红色
- 60°: 黄色
- 120°: 绿色
- 180°: 青色
- 240°: 蓝色
- 300°: 紫色
- 饱和度(Saturation): 0% ~ 100%,代表颜色的纯度,0% 是灰色,100% 是完全纯色。
- 亮度(Lightness): 0% ~ 100%,0% 是黑色,100% 是白色,50% 为正常亮度。
- 透明度(Alpha): 0 表示完全透明,1 表示完全不透明。
例如:
1 | hsla(120, 50%, 50%, 0.7) |
CSS字体属性
字体大小(Font Size)
在 HSL 的基础上,HSLA 添加了透明度属性,用于控制颜色的透明度。
属性名:
font-size
作用:
控制字体的大小。
语法:
1 | div { |
- Chrome 浏览器支持的最小文字为 12px ,默认的文字大小为 16px ,并且 0px 会自动 消失。
- 不同浏览器默认的字体大小可能不一致,所以最好给一个明确的值,不要用默认大 小。
- 通常以给 body 设置 font-size 属性,这样 body 中的其他元素就都可以继承了。
字体类型(Font Family)
属性名:
font-family
作用:
控制字体的类型。
语法:
1 | div { |
使用字体的英文名字会有更好的兼容性,具体的英文名称可以自行查询,或者在电脑的设置中寻找。
如果字体名称中包含空格,必须使用引号包裹起来。
可以设置多个字体,浏览器会按照从左到右的顺序逐个查找,找到的字体就会被使用,如果没有找到会继续使用后面的字体,通常在最后写上
serif
(衬线字体)或sans-serif
(无衬线字体)作为兜底字体。在 Windows 系统中,默认的字体为微软雅黑(Microsoft YaHei)。
字体风格 ( font style)
属性名:font-style
作用:
控制字体是否为斜体。
常用值:
normal
:正常(默认值)italic
:斜体(使用字体自带的斜体效果)oblique
:斜体(强制倾斜产生的斜体效果)
实现斜体时,推荐使用 sans-serif
(非衬线字体)。
例如:
1 | div { |
字体粗细 (font weight)
属性名:font-weight
作用:
控制字体的粗细。
常用值:
- 关键词:
lighter
:细normal
:正常bold
:粗bolder
:很粗(多数字体不支持)
- 数值:
- 100 ~ 300 等同于 100 ~ 1000 且无单位,数值越大,字体越粗(具体效果取决于字体设计)。
- 400 ~ 500 等同于
normal
,600 ~ 700 等同于bold
。
字体复合属性
属性名:font
(复合属性)
作用:
同时设置字体的样式、粗细、大小、行高和字体类型。
语法:
1 | font: font-style font-weight font-size/line-height font-family; |
例如:
1 | div { |
这段代码同时设置了:
- 字体为斜体 (
italic
) - 字体为粗体 (
bold
) - 字体大小为 16px,行高为 24px
- 字体类型为
Arial
,如果找不到就使用sans-serif
CSS文本属性
文本颜色
属性名:color
作用:
控制文字的颜色。
可选值:
- 颜色名
- rgb 或 rgba
- HEX 或 HEXA(十六进制)
- HSL 或 HSLA
开发中常用的是:rgb/rgba
或
举例:
1 | div { |
文本间距
字母间距:letter-spacing
单词间距:word-spacing
(通过空格识别词)
属性值:
使用像素(px)作为单位,正值增加间距,负值缩小间距。
举例:
1 | p { |
文本修饰
属性名:text-decoration
作用:
控制文本的各种装饰线。
可选值:
none
:无装饰线(常用)underline
:下划线(常用)overline
:上划线line-through
:删除线
可搭配如下值使用:
dotted
:虚线wavy
:波浪线- 也可以指定颜色
举例:
1 | a { |
文本缩进
属性名:text-indent
作用:
控制文本首字母的缩进。
属性值:
CSS 中的长度单位,例如:px
举例:
1 | div { |
文本对齐—水平
属性名:text-align
作用:
控制文本的水平对齐方式。
常用值:
left
:左对齐(默认值)right
:右对齐center
:居中对齐
举例:
1 | div { |
行高
属性名:line-height
作用:
控制一行文字的高度。
可选值:
normal
:由浏览器根据文字大小决定的一个默认值。- 像素(px)。
- 数字:参考自身
font-size
的倍数(很常用)。 - 百分比:参考自身
font-size
的百分比。
举例:
1 | div { |
行高注意事项
line-height
过小会怎样?——文字产生重叠,且最小值是 0,不能为负数。
line-height
是可以继承的,且为了更好的呈现文字,建议使用数值。
line-height
和height
是什么关系?
- 设置了
height
,那么高度就是height
的值。- 不设置
height
的时候,会根据line-height
计算高度。
应用场景
对于多行文字:控制行与行之间的距离。
对于单行文字:让
height
等于line-height
,可以实现文字垂直居中。
文本对齐-垂直
顶部:
无需任何属性,在垂直方向上,默认就是顶部对齐。居中:
对于单行文字,让height = line-height
即可。
问题: 多行文字垂直居中怎么办?——定位底部:
对于单行文字,目前一个临时的方式:
让line-height = (height × 2) - font-size - x
。
备注:x
是根据字体族动态决定的一个值。
问题: 垂直方向上的底部对齐,更好的解决办法是什么?——定位。****
vertical-align
属性名:vertical-align
作用:
用于指定同一行元素之间,或表格单元格内文字的垂直对齐方式。
常用值:
baseline
(默认值):使元素的基线与父元素的基线对齐。top
:使元素的顶部与其所在行的顶部对齐。middle
:使元素的中部与父元素的基线加上父元素字母 x 的一半对齐。bottom
:使元素的底部与其所在行的底部对齐。
特别注意:
vertical-align
不能控制块元素 。
CSS列表属性
列表相关的属性:
可以作用在 ul
、ol
、li
元素上。
CSS 属性名及功能:
list-style-type
作用: 设置列表符号
常用值如下:none
:不显示前面的标识(很常用!)square
:实心方块disc
:圆形decimal
:数字lower-roman
:小写罗马字upper-roman
:大写罗马字lower-alpha
:小写字母upper-alpha
:大写字母
list-style-position
作用: 设置列表符号的位置
常用值如下:inside
:在li
的里面outside
:在li
的外边
list-style-image
作用: 自定义列表符号
常用值:url(图片地址)
list-style
作用: 复合属性,允许没有数量、顺序的要求。
举例:
1 | ul { |
CSS表格属性
表格元素通用属性
CSS 属性名及功能:
border-width
作用: 设置边框宽度
属性值: CSS 中可用的长度值(如px
,em
, 等)border-color
作用: 设置边框颜色
属性值: CSS 中可用的颜色值(如red
,#000000
,rgb()
等)border-style
作用: 设置边框风格
常用值如下:none
:无边框(默认值)solid
:实线dashed
:虚线dotted
:点线double
:双实线
border
作用: 边框复合属性,允许同时设置宽度、颜色和样式,没有数量和顺序的要求。
举例:
1 | div { |
表格专属属性
CSS 属性名及功能:
table-layout
作用: 设置列宽度
常用值:auto
:自动,列宽根据内容计算(默认值)fixed
:固定列宽,平均分配
border-spacing
作用: 设置单元格间距
属性值: CSS 中可用的长度值
生效前提: 单元格边框不能合并。border-collapse
作用: 合并单元格边框
常用值:collapse
:合并separate
:不合并
empty-cells
作用: 隐藏没有内容的单元格
常用值:show
:显示(默认值)hide
:隐藏
生效前提: 单元格不能合并。
caption-side
作用: 设置表格标题位置
常用值:top
:在表格上方(默认值)bottom
:在表格下方
举例:
1 | table { |
CSS背景属性
CSS 属性名及功能:
background-color
作用: 设置背景颜色
属性值: 符合 CSS 中颜色规范的值
默认值:transparent
background-image
作用: 设置背景图片
属性值:url(图片的地址)
background-repeat
作用: 设置背景重复方式
常用值如下:repeat
:重复,铺满整个元素(默认值)repeat-x
:只在水平方向重复repeat-y
:只在垂直方向重复no-repeat
:不重复
background-position
作用: 设置背景图片的位置
通过关键字设置位置:- 水平:
left
、center
、right
- 垂直:
top
、center
、bottom
- 如果只写一个值,另一个方向的值取
center
通过长度指定坐标位置:
以元素左上角为坐标原点,设置图片左上角的位置。- 两个值,分别为 x 坐标和 y 坐标
- 只写一个值,表示 x 坐标,y 坐标取
center
- 水平:
background
作用: 复合属性,允许同时设置背景颜色、图片、重复方式、位置等,没有数量和顺序要求。
举例:
1 | div { |
CSS鼠标属性
CSS 属性名:cursor
作用:
设置鼠标光标的样式。
常用值:
pointer
:小手move
:移动图标text
:文字选择器crosshair
:十字架wait
:等待help
:帮助
举例:
1 | div { |
CSS盒子模型
CSS 长度单位
- px:像素。
- em:相对元素(即当前元素或父元素) font-size 的倍数。
- rem:相对根字体大小,html标签就是根。
- %:相对父元素计算。
vw
和vh
视口的%,10vw即窗口宽度的10%
注意:CSS中设置长度,必须加单位,否则样式无效!
元素的显示模式
块元素(block)
特点
- 在页面中独占一行,不会与任何元素共用一行
- 默认宽度: 撑满父元素
- 默认高度: 由内容撑开
- 可以通过
css
设置宽高
块元素常见有哪些
- 主体结构标签:
html
body
- 排版标签:
h1
~`h6,
hr,
p,
pre,
div`- 列表标签:
ul
,ol
,li
,dl
,dt
,dd
- 表格相关标签:
table
,tbody
,thead
,tfoot
,tr
,caption
form
与option
行内元素(inline)
特点
- 在页面中不独占一行,一行中不能容纳下的行内元素,会在下一行继续排列
- 默认宽度: 由内容撑开
- 默认高度: 由内容撑开
- 无法通过
css
设置宽高
行内元素常见有哪些
- 文本标签:
br
,em
,strong
,sup
,sub
,del
,ins
a
与label
行内块元素 (inline-block)
特点:
- 在页面中不独占一行,一行中不能容纳下的行内元素,会在下一行继续排列
- 默认宽度: 由内容撑开
- 默认高度: 由内容撑开
- 可以通过
css
设置狂高
行内块元素常见有哪些?
- 图片:
img
- 单元格:
td
,th
- 表单控件:
input
,textarea
,select
,button
- 框架标签:
iframe
修改元素的显示模式
通过修改css
中的display
的属性可以修改元素的默认显示模式
值 | 描述 |
---|---|
none |
隐藏 |
block |
块级元素 |
inline |
内联元素 |
inline-block |
行内块元素 |
盒子模型
css
会把所有的html
元素堪称一个盒子,所有的样式都是基于这个盒子
- **margin(外边距)**: 盒子与外界的距离
- **border(边框)**: 盒子的边框
- padding(内边距): 紧贴内容的补白区域
- content(内容):元素中的文本或者后代元素都是它的内容
图示如下:
盒子的大小 = content
+ 左右padding
+ 左右border
外边距
margin
不会影响盒子的大小,但会影响盒子的位置
盒子内容区(content)
css属性 | 功能 |
---|---|
width |
内容区宽度 |
max-width |
内容区最大宽度 |
min-width |
内容区最小宽度 |
height |
内容去高度 |
max-height |
内容区最大高度 |
min-height |
内容区最小高度 |
注意:
max-width
,min-width
一般不与width
一起使用
max-height
,min-height
一般不与height
一起使用
默认宽度就是不设置width属性时,元素呈现的宽度
总宽度 = 父的content
- 自身的左右margin
内容区的宽度 = 父的content
- 自身的左右margin
- 自身的左右border
- 自身的左右padding
盒子内边距(padding)
css属性 | 功能 |
---|---|
padding-top |
上内边距 |
padding-right |
右内边距 |
padding-bottom |
下内边距 |
padding-left |
左内边距 |
padding |
复合属性 |
padding
复合属性的使用规则:
padding: 10px;
四个方向内边距都是10px
padding:10px 20px;
上下10px
左右20px
padding:10px 20px 30px;
上10px
左右20px
下30px
padding:10px 20px 30px 40px;
上10px
右20px
下30px
左40px
盒子边框(border)
border
属性在 CSS 中用于定义元素边框的样式、宽度和颜色。可以为各个方向的边框单独设置,也可以使用简写属性同时设置四个方向的边框。
border-style
- 用于定义边框线的样式。
- 可以为四个方向统一设置,也可以分别设置。
- 常见的属性值:
none
– 无边框(默认值)。solid
– 实线。dashed
– 虚线。dotted
– 点线。double
– 双实线。
border-width
- 指定边框的宽度。
- 可以统一设置四个方向的宽度,也可以分别设置。
- 默认值通常为
medium
,也可以使用长度单位如px
、em
、%
等。
border-color
- 指定边框的颜色。
- 可以为四个方向统一设置颜色,也可以分别设置。
- 默认颜色通常为黑色。
**border
**
- 将
border-width
、border-style
和border-color
合并到一行中。 - 语法:
border: <宽度> <样式> <颜色>;
- 示例:
border: 2px solid red;
- 该简写属性的值顺序灵活,但必须至少包含一个样式值。
属性名称 | 功能 | 属性值 |
---|---|---|
border-style |
设置边框线风格 | none ,solid ,dashed ,dotted ,double |
border-width |
设置边框宽度 | 长度单位(px , em , % ),默认 medium |
border-color |
设置边框颜色 | 颜色值,默认 black |
border |
边框简写属性 | <宽度> <样式> <颜色> |
border-top |
设置上边框 | 包含 style ,width ,color |
border-right |
设置右边框 | 包含 style ,width ,color |
border-bottom |
设置下边框 | 包含 style ,width ,color |
border-left |
设置左边框 | 包含 style ,width ,color |
border-top-style |
上边框线风格 | 与 border-style 相同 |
border-right-style |
右边框线风格 | 与 border-style 相同 |
border-bottom-style |
下边框线风格 | 与 border-style 相同 |
border-left-style |
左边框线风格 | 与 border-style 相同 |
border-top-width |
上边框宽度 | 与 border-width 相同 |
border-right-width |
右边框宽度 | 与 border-width 相同 |
border-bottom-width |
下边框宽度 | 与 border-width 相同 |
border-left-width |
左边框宽度 | 与 border-width 相同 |
border-top-color |
上边框颜色 | 与 border-color 相同 |
border-right-color |
右边框颜色 | 与 border-color 相同 |
border-bottom-color |
下边框颜色 | 与 border-color 相同 |
border-left-color |
左边框颜色 | 与 border-color 相同 |
盒子外边距(margin)
CSS属性名 | 功能 | 属性值 |
---|---|---|
margin-left |
左外边距 | CSS 中的长度值 |
margin-right |
右外边距 | CSS 中的长度值 |
margin-top |
上外边距 | CSS 中的长度值 |
margin-bottom |
下外边距 | CSS 中的长度值 |
margin |
复合属性,可以写1-4个值,规律同padding |
CSS 中的长度值 |
margin注意事项
- 子元素的
margin
,是参考父元素的content
计算的。(因为子元素出于父元素的content
中)margin-left
,margin-top
影响自己的位置;margin-bottom
,margin-right
:影响后面兄弟的位置block
,inline-block
,均可以完美设置四个方向的margin
;但inline
,只能完美设置左右的margin
,上下margin
无效margin
的值可以是auto
,如果给一个有宽度的块级元素设置左右margin
都为auto
,该块级元素会在父元素水平居中margin
的值可以是负值
margin塌陷问题
什么是margin
塌陷?
第一个元素的margin-top
会作用在父元素上,最后一个元素的margin-bottom
会作用在父元素上
如何解决
- 方案一: 给父元素设置不为0的
padding
- 方案二: 给父元素设置宽度不为0的
border
- 方案三: 给父元素设置css样式
overflow: hidden
margin合并问题
什么是margin
合并
上面兄弟元素的margin-bottom
会和下面兄弟元素的margin-top
合并,取一个最大的值,而不是相加
如何解决
无需解决,布局时上下兄弟元素,只给一个设置上下外边距即可
处理内容溢出
css属性名 | 功能 | 属性值 |
---|---|---|
overflow |
溢出内容的处理方式 | visible :显示,默认值 hidden :隐藏scroll : 显示滚动条,不论内容是否溢出auto :自动显示滚动条,内容不溢出不显示 |
overflow-x |
水平方向溢出内容的处理方式 | 同overflow |
overflow-y |
垂直方向溢出内容的处理方式 | 同overflow |
隐藏元素的方式
visibility属性
visibility
属性默认值是show
,如果设置为hidden
,元素会隐藏
元素看不见了,还占有原来的位置
display属性
设置display:none
,就可以让元素隐藏
彻底地隐藏
元素继承
如果元素本身没有某个样式,则会继承父元素的样式
会继承的css属性
字体属性、文本属性(除了vertical-align)、文字颜色等
不会继承的css属性
边框,背景,内边距,外边距,宽高,溢出方式等
能继承的属性,往往都是不影响布局的
布局居中的技巧
水平居中
- 若子元素为(有宽度)块元素,给父元素加上:
margin: 0 auto
- 若子元素为行内元素、行内块元素,给父元素加上:
text-align: center
垂直居中
- 若子元素为块元素,给子元素加上:
margintop: (值为:父元素content - 子元素盒子高) / 2
- 若子元素为行内元素,行内块元素,让父元素的
height
等于父元素的line-height
,每个子元素加上vertical-align: middle
行内(块)元素之间的空白问题
问题1
行内元素、行内块元素,彼此之间的换行会被浏览器解析为一个空白字符。
解决方案:
给父元素设置font-size: 0
,再给需要显示文字的元素,单独设置字体大小
问题2
行内块元素默认与文本的基线对齐,而文本的基线与文本最底端有一定距离
解决方案:
- 行内块元素设置
vertical-align
,值不为baseline
即可 - 给父元素设置
font-size: 0
。如果行内块内部还有文本,则需单独设置font-size
浮动
元素浮动后的特点
- 脱离文档流
- 无论浮动前,元素的显示模式是什么,浮动后,默认内容由宽高撑开,且可以设置宽高
- 不会独占一行,可以与其他元素共用一行
- 不会出现
margin
合并和margin
塌陷问题,能够有效设置margin
和padding
- 不会像行内(块)元素一样被当作文本处理(没有行内块的空白问题)
元素浮动产生的影响
对兄弟元素的影响:后面的兄弟元素,会占据浮动元素之前的位置,在浮动元素的下面,对前面的兄弟无影响
对父元素的影响:不能撑起父元素的高度,导致父元素高度塌陷,但父元素的宽度依然束缚浮动的元素
解决浮动产生的影响(清除浮动)
方案1:所有浮动元素后面添加块级元素,并为该块级元素设置
clear: both
方案2: 给浮动元素的父元素设置伪元素,通过伪元素清除浮动,原理与1相同
1
2
3
4
5.father::after {
content: '';
display: block;
clear: both
}
布局规则,父元素中的元素要么全部浮动,要么全部不浮动
浮动相关属性
CSS属性 | 功能 | 属性值 |
---|---|---|
float |
设置浮动 | left :设置左浮动right : 设置右浮动none : 不浮动,默认值 |
clear |
清除浮动,清楚前面兄弟元素浮动元素的响应 | left : 清除前面左浮动的影响right : 清除前面右浮动的影响both : 清楚前面左右浮动的影响 |
定位
相对定位
如何设置相对定位?
给元素设置
position: relative
可以使用
left
,right
,top
,bottom
四个属性调整位置left: 20px
距离参考点左端20px (即向右移动20px)left: -20px
距离参考点左端-20px (即向左移动20px)right: 20px
距离参考点右端20px (即向左移动20px)right: -20px
距离参考点右端-20px (即向右移动20px)
相对定位的参考点在哪里?
- 相对自己原来的位置
相对定位的特点:
不脱离文档流
有定位属性的元素的显示层级比普通元素高,无论什么定位,显示层级都是一样的
默认规则是:
- 有定位属性的元素会盖在普通元素之上
- 都发生定位的两个元素,后写的元素会盖在先写的元素之上
left
和right
不能一起设置,top
和bottom
不能一起设置相对定位的元素可以继续设置浮动和
margin
,但不建议
绝大多数情况下,相对定位会和绝对定位配合使用
绝对定位
设置绝对定位
- 给元素设置
position: absolute
- 可以使用
left
,right
,top
,bottom
四个属性调整位置,用法同相对定位
绝对定位的参考点在哪里?
- 参考该元素的包含块
什么是包含块?
- 对于没有脱离文档流: 包含块就是父元素
- 对于脱离文档流的元素: 包含块是第一个拥有定位属性的祖先元素(如果所有祖先都没定位,那包含块就是整个页面)
绝对定位元素的特点:
- 脱离文档流,会对后面的兄弟元素、父元素有影响
left
不能和right
一起设置,top
不能和bottom
一起设置- 绝对定位、浮动不能一起设置,如果同时设置,浮动失效,以定位为主
- 绝对定位的元素,也能通过
margin
调整位置,但不推荐 - 无论什么类型的元素(行内、行内块、块级) 设置为绝对定位之后,都变成了定位元素
何为定位元素? –默认宽高被内容撑开,且能自由设置宽高
固定定位
如何设置固定定位
- 给元素设置
position: fixed
- 可以使用
left
,right
,top
,bottom
固定定位的参考点在哪里
- 参考它的视口
什么是视口? ——对于
pc
浏览器而言,即浏览器窗口
固定定位元素的特点
- 脱离文档流,对之后的父亲兄弟元素有影响
left
不能和right
一起设置,top
和bottom
不能一起设置- 固定定位和浮动不能一起设置,一起设置后浮动失效,以固定定位为主
- 固定定位的元素,也能通过
margin
调整设置,不推荐 - 固定定位后的元素会变成定位元素
粘性定位
如何设置为粘性定位?
- 给元素设置
position: sticky
即可粘性定位 - 可以使用
left
,right
,top
,bottom
四个属性调整位置,不过最常用的是top
值
粘性定位的参考点在哪里?
- 离它最近的一个拥有”滚动机制”的祖先元素
粘性定位元素特点
- 不脱离文档流,专门用于滚动窗口时的新的定位方式
- 最常用的值是
top
- 粘性定位和浮动可以同时设置,但不推荐
- 粘性定位和
margin
可以同时设置,但不推荐
定位层级
- 具有定位属性的元素的显示层级比普通元素高,无论什么定位,显示层级都是一样的
- 如果发生重叠,后面的元素会显示在前面元素上
- 可以通过
css
属性z-index
调整元素的层级 z-index
的属性是数字,没有单位,值越大显示层级越高- 只有定位的元素设置
z-index
才有效 - 如果
z-index
值大的元素,依然没有覆盖掉z-index
小的元素,可能是因为其包含块的层级问题
定位的特殊应用
注意:
- 发生固定定位、绝对定位后,元素变成了定位元素,默认宽高被内容撑开,且依然可以设置宽高
- 发生相对定位后,元素依然是之前的显示模式
- 以下所说的特殊应用,只针对绝对定位和固定定位的元素
让定位元素充满包含块
- 块宽想与包含块一致,可以给定位元素设置
left
和right
为0
- 高度想与包含块一致,
top
和bottom
设置为0
让定位元素在包含块中居中
方案一
1
2
3
4
5left:0;
right:0;
top:0;
bottom:0;
margin:auto;方案二
1
2
3
4left: 50%;
top: 50%;
margin-left: 负的宽度一半;
margin-top: 负的高度一半;
注意: 该定位的元素必须设置宽高
HTML5
新增语义化标签
布局标签
标签名 | 语义 | 单/双标签 |
---|---|---|
header |
整个页面,或部分区域的头部 | 双 |
footer |
整个页面,或部分区域的底部 | 双 |
nav |
导航 | 双 |
article |
文章、帖子、杂志、新闻、博客、评论等 | 双 |
section |
页面中的某段文字,或文章中的某段文字(里面文字通常会包含标题) | 双 |
aside |
侧边栏 | 双 |
关于article
和section
- article里面可以有多个section。
- section强调的是分段或分块,如果你想将一块内容分成几段的时候,可使用section元 素。
- article比section更强调独立性,一块内容如果比较独立、比较完整,应该使用 article元素
状态标签
meter
标签
语义:定义已知范围内的标量测量。也被称为 gauge
(尺度),双标签,例如:电量、磁盘用量等。
属性值描述:
high
:数值规定高值low
:数值规定低值max
:数值规定最大值min
:数值规定最小值optimum
:数值规定最优值value
:数值规定当前值
常用属性如下:
属性 | 值 | 描述 |
---|---|---|
high |
数值 | 规定高值 |
low |
数值 | 规定低值 |
max |
数值 | 规定最大值 |
min |
数值 | 规定最小值 |
optimum |
数值 | 规定最优值 |
value |
数值 | 规定当前值 |
progress
标签
语义:显示某个任务完成的进度的指示器,一般用于表示进度条,双标签,例如:工作完成进度等。
常用属性如下:
属性 | 值 | 描述 |
---|---|---|
max |
数值 | 规定目标值 |
value |
数值 | 规定当前进度 |
列表标签
标签名 | 语义 | 单/双标签 |
---|---|---|
datalist |
用于搜索框的关键字提示 | 双 |
details |
用于展示问题和答案,或对专有名词进行解释 | 双 |
summary |
写在 details 的里面,用于指定问题或专有名词 |
双 |
datalist
示例:
1 | <input type="text" list="mydata"> |
details
和 summary
示例:
1 | <details> |
文本标签
文本注音
标签名 | 语义 | 单/双标签 |
---|---|---|
ruby |
包裹需要注音的文字 | 双 |
rt |
写注音,rt 标签写在 ruby 的里面 |
双 |
示例代码:
1 | <ruby> |
文本标记
标签名 | 语义 | 单/双标签 |
---|---|---|
mark |
标记 | 双 |
注意:W3C 建议 mark
用于标记搜索结果中的关键字。
新增表单功能
表单控件新增属性
属性名 | 功能 |
---|---|
placeholder |
提示文字(不是默认值value ),适用于文字输入类的表单控件 |
required |
表示该输入项必填,适用于除按钮外其他表单控件 |
autofocus |
自动获取表单焦点,适用于所有控件。设置多个时生效第一个 |
autocomplete |
自动补全,可设置为on 和off ,适用于文字输入类的表单控件密码输入框,多行输入框不可用 |
pattern |
填写正则表达式,适用于于文本输入类表单控件 多行输入框不可用;输入空不验证,需与 required 配合 |
input 新增属性值
属性名 | 功能描述 |
---|---|
email |
邮箱类型的输入框,表单提交时会验证格式,输入为空则不验证格式。 |
url |
URL 类型的输入框,表单提交时会验证格式,输入为空则不验证格式。 |
number |
数字类型的输入框,表单提交时会验证格式,输入为空则不验证格式。 |
search |
搜索类型的输入框,表单提交时不会验证格式。 |
tel |
电话类型的输入框,表单提交时不会验证格式,在移动端使用时,会唤起数字键盘。 |
range |
范围选择框,默认值为 50,表单提交时不会验证格式。 |
color |
颜色选择框,默认值为黑色,表单提交时不会验证格式。 |
date |
日期选择框,默认值为空,表单提交时不会验证格式。 |
month |
月份选择框,默认值为空,表单提交时不会验证格式。 |
week |
周选择框,默认值为空,表单提交时不会验证格式。 |
time |
时间选择框,默认值为空,表单提交时不会验证格式。 |
datetime-local |
日期 + 时间选择框,默认值为空,表单提交时不会验证格式。 |
新增多媒体标签
视频标签
<video>
用来定义视频
属性值 | 描述 |
---|---|
src |
URL 地址,视频地址 |
width |
像素值,设置视频播放器的宽度 |
height |
像素值,设置视频播放器的高度 |
controls |
向用户显示视频控件(比如播放/暂停按钮) |
muted |
视频静音 |
autoplay |
视频自动播放 |
loop |
循环播放 |
poster |
URL 地址,视频封面 |
preload |
预加载选项,auto / metadata / none 。视频预加载,如果使用 autoplay ,则忽略该属性。 |
音频标签
<audio>
用来定义音频
属性值 | 描述 |
---|---|
src |
URL 地址,音频地址 |
controls |
向用户显示音频控件(比如播放/暂停按钮) |
autoplay |
音频自动播放 |
muted |
音频静音 |
loop |
循环播放 |
preload |
预加载选项,auto / metadata / none 。音频预加载,如果使用 autoplay ,则忽略该属性。 |
none |
不预加载音频。 |
metadata |
仅预先获取音频的元数据(例如长度)。 |
auto |
可以下载整个音频文件,即使用户不希望使用它。 |
HTML5 兼容性处理
- 添加元信息,让浏览器处于最优渲染模式。
1 | <!-- 设置IE总是使用最新的文档模式进行渲染 --> |
使用 html5shiv 让低版本浏览器认识 H5 的语义化标签。
- 使用
html5shiv
让低版本浏览器认识 HTML5 的语义化标签。
1 | <!--[if lt IE 9]> |
扩展条件注释符号:
lt
小于lte
小于等于gt
大于gte
大于等于!
逻辑非
CSS3
私有前缀
W3C
新提出的CSS
特性,在被浏览器正式支持前,需要用浏览器的私有前缀来测试,正式支持后则不需要查询CSS3兼容性的网站 [caniuse](Can I use… Support tables for HTML5, CSS3, etc)
举例
1
2
3
4
5
6
7
8
9
10
11
12-webkit-border-radius: 20px;
-moz-border-radius: 20px;
-ms-border-radius: 20px;
-o-border-radius: 20px;
border-radius: 20px;
Chrome 浏览器:-webkit
Safari 浏览器: -webkit
Firefox 浏览器:-moz
Edge 浏览器:-webkit
旧 Opera 浏览器:-o
旧 IE 浏览器:-ms-
新增盒模型相关属性
box-sizing
怪异盒模型
可选值 | 含义 |
---|---|
content-box |
width 与height 设置的是盒子内容区的大小 (默认值) |
border-box |
width 与height 设置的是盒子的总大小 (怪异盒模型) |
resize
用户调整元素大小
resize
属性控制是否允许用户调节元素尺寸
值 | 含义 |
---|---|
none |
不允许用户调整元素大小。(默认) |
both |
用户可以调节元素的宽度和高度。 |
horizontal |
用户可以调节元素的宽度。 |
vertical |
用户可以调节元素的高度。 |
box-shadow
盒子阴影
- 使用
box-shadow
属性为盒子添加阴影 - 语法
1 | box-shadow: h-shadow v-shadow blur spread color inset; |
- 各个值的含义
值 | 含义 |
---|---|
h-shadow |
水平阴影的位置,必须填写,可以为负值。 |
v-shadow |
垂直阴影的位置,必须填写,可以为负值。 |
blur |
可选,模糊距离。 |
spread |
可选,阴影的外延值。 |
color |
可选,阴影的颜色。 |
inset |
可选,将外部阴影改为内部阴影。 |
none |
默认值,表示没有阴影。 |
示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17/* 写两个值,含义:水平位置、垂直位置 */
box-shadow: 10px 10px;
/* 写三个值,含义:水平位置、垂直位置、颜色 */
box-shadow: 10px 10px red;
/* 写三个值,含义:水平位置、垂直位置、模糊值 */
box-shadow: 10px 10px 10px;
/* 写四个值,含义:水平位置、垂直位置、模糊值、颜色 */
box-shadow: 10px 10px 10px red;
/* 写五个值,含义:水平位置、垂直位置、模糊值、外延值、颜色 */
box-shadow: 10px 10px 10px 10px blue;
/* 写六个值,含义:水平位置、垂直位置、模糊值、外延值、颜色、内阴影 */
box-shadow: 10px 10px 20px 3px blue inset;
opacity
不透明度
opacity
属性能为整个元素添加透明效果,值是0
到1
之间的小数,0
完全透明,1
完全不透明
opacity
与rgba
的区别
opacity
是一个属性,设置的是整个元素的不透明度
rgba
是颜色设置方式,用于设置颜色,它的透明度,仅仅是调整颜色的透明度
新增背景属性
background-origin
作用:设置背景图原点
语法:
padding-box
:从padding区域开始显示背景图像 –默认值border-box
:从border区域开始显示背景图像。content-box
:从content区域开始显示背景图像
background-clip
- 作用: 设置背景图的向外裁剪的区域
- 语法
padding-box
:超出padding区域不再显示背景图像 –默认值、border-box
:超出border区域不再显示背景图像。content-box
:超出content区域不再显示背景图像text
:背景图只呈现在文字上,文字得是透明的
background-size
作用: 设置背景图的尺寸
语法:
用长度指定背景图片的大小
1
background-size: 300px 200px;
用百分比指定背景图片的大小
1
background-size: 100% 100%
auto
背景图片的真实大小。 ——默认值contain
等比缩放,可能会造成元素内部分区域没有背景图片cover
等比缩放,背景图片显示可能不完整 ——用的相对较多
多背景图
1 | /* 添加多个背景图 */ |
新增边框属性
边框圆角
在CSS3中,使用
border-radius
属性可以将盒子变为圆角设置圆角
1
border-radius:10px
新增文本属性
文本阴影
语法
1 | text-shadow: h-shadow v-shadow blur color; |
属性 | 是否必需 | 描述 | 允许负值 |
---|---|---|---|
h-shadow |
必需 | 水平阴影的位置 | 是 |
v-shadow |
必需 | 垂直阴影的位置 | 是 |
blur |
可选 | 模糊的距离 | 否 |
color |
可选 | 阴影的颜色 | 否 |
文本换行white-space
属性 | 含义 |
---|---|
normal |
文本超出边界自动换行,文本中的换行被浏览器识别为一个空格。(默认值) |
pre |
原样输出,与 pre 标签的效果相同。 |
pre-wrap |
在 pre 效果的基础上,超出元素边界自动换行。 |
pre-line |
在 pre 效果的基础上,超出元素边界自动换行,且只识别文本中的换行,空格会忽略。 |
nowrap |
强制不换行 |
文本溢出
text-overflow
属性设置文本内容溢出时的呈现方式常用值如下:
属性 含义 clip
当内联内容溢出时,将溢出部分裁切掉。(默认值) ellipsis
当内联内容溢出块容器时,将溢出部分替换为 ...
。
注意:要使得
text-overflow
属性生效,块容器必须显式定义overflow
为非visible
值,white-space
为nowrap
值。
新增渐变
线性渐变(Linear Gradient)
线性渐变是CSS3的一种效果,它允许你在元素的背景中创建由一种颜色逐渐过渡到另一种颜色的效果,而不需要使用图像。你可以定义渐变的方向、起点颜色、终点颜色,以及中间的颜色过渡。
基本语法
1 | background: linear-gradient(direction, color-stop1, color-stop2, ...); |
direction
:指定渐变的方向,可以是角度(如 45deg
)、关键词(如 to right
)等。
color-stop1, color-stop2, ...
:渐变过程中使用的颜色,可以指定多个颜色值。你还可以为每个颜色值设置一个百分比,表示颜色出现在渐变的某个点。
示例
1 | 基本渐变:从红色到蓝色 |
径向渐变(Radial Gradient)
径向渐变是从中心点向四周扩展的颜色渐变,通常以圆形或椭圆形的方式扩展。
语法
1 | background: radial-gradient(shape size at position, color-stop1, color-stop2, ...); |
shape:渐变的形状(默认 ellipse
)。
size:渐变的大小,可以是 closest-side
、farthest-corner
等。
position:渐变的中心位置(默认 center
)。
color-stop1, color-stop2:定义渐变颜色。
示例
1 | /* 默认从中心开始的圆形径向渐变 */ |
重复渐变(Repeating Gradient)
重复渐变可以让颜色以特定的模式重复,这适用于线性和径向渐变。
1 | 线性重复渐变语法: |
2D变换
二维坐标系如下图所示
2D位移
2D 位移可以改变元素的位置,具体使用方式如下:
- 先给元素添加
transform
属性 - 可选值及其含义
- translateX:设置水平方向位移,需指定长度值;若指定的是百分比,参考的是自身宽度的百分比。
- translateY:设置垂直方向位移,需指定长度值;若指定的是百分比,参考的是自身高度的百分比。
- translate:一个值代表水平方向,两个值代表水平和垂直方向。
位移与相对定位很相似,都不脱离文档流,也不影响到其他元素
与相对定位的区别: 相对定位的百分比值,参考的是父元素;位移的百分比值,参考的是自身
浏览器对位移有优化,与定位相比,浏览器处理位移效率更高
transform
可以链式编写,例如transform: translateX(30px) translateY(40px);
位移对行内元素无效
位移配合定位实现元素水平垂直居中
1
2
3
4
5
6 .box {
position: absolute;
left: 50%;
right: 50%;
transform: translate(-50%, -50%)
}
2D缩放
2D缩放可以让元素放大或缩小,具体使用方式如下:
先给元素添加
transform
属性可选值及其含义:
scaleX
: 水平方向的缩放比例,值为数字,1不变,小于1缩小,大于1放大scaleY
: 垂直方向的缩放比例,同上scale
: 水平垂直同时缩放
2D旋转
具体使用方式:
添加属性
transform
可选值及其含义
rotate
: 设置旋转角度,需指定一个角度值(deg
),正顺时针,负逆时针
多重变换
实现多种变换,放到同一个transform
里
1 | transform: translate(-50%, -50%) rotate(45deg); |
建议最后写旋转,因为旋转会导致坐标系的变化
变换原点
- 原点变换时,默认原点是元素的中心,使用
transform-origin
可以设置变换的原点 - 修改变换原点对位移没有影响,但对旋转和缩放会有影响
- 提供两个值,则第一个横坐标,第二个纵坐标
transform-origin: 50% 50%
,变换原点在元素的中心位置,百分比是相对于自身的。—— 默认值
transform-origin: left top
,变换原点在元素的左上角。
transform-origin: 50px 50px
,变换原点距离元素左上角 50px。
transform-origin: 0
,只写一个值的时候,第二个值默认为50%
的位置。
3D变换
开启3D空间
元素要进行3D变换,父元素必须开启3D空间
使用transform-style
开启3D
空间,可选值如下:
flat
:2Dpreserve-3d
:3D
设置景深
景深–观察者与z=0
平面的距离,有透视效果,更立体
使用perspective
设置景深,可选值如下:
none
:不指定透视——(默认值)长度值
:指定观察者距离z=0
平面的距离,不允许负值
景深也是设置给3D变换元素的父元素
透视点位置
(通常不改)所谓透视点位置,就是观察者的位置,默认透视点为元素中心
使用perspective-origin
设置观察者位置
3D位移
3D
位移是在2D
位移的基础上,让元素能够沿z轴位移,元素会离屏幕越来越近,越来越大
- 属性
transform
- 值
translateZ
设置z轴位移,只能写像素,不能写%translate3d
,3个参数对应x,y,z轴位移
3D旋转
3D
旋转是在2D
旋转的基础上,可以让元素沿x
轴和y
轴旋转,具体使用方式如下:
- 属性
transform
- 值
rotateX
:按x轴旋转,给定角度rotateY
:按y轴旋转,给定角度rotate3d
:前三个参数表示x,y,z,第四个表示旋转的角度
3D缩放
3D
缩放是在2D
缩放的基础上,可以让元素沿z轴缩放
- 属性
transform
- 值
scaleZ
,其实是在改景深,1表示不缩放,大于1表示放大,即景深除该数字,小于1表示缩小,scaleZ
一般不用scale3d
,三个参数分别对应x,y,z,参数不能省略
背部可见性
使用backface-visibility
指定元素背面,在面向用户时是否可见,常用值如下
visible
:指定元素背面可见hidden
:指定元素背面不可见
过渡
transition-property
定义哪个属性需要过渡,例如宽、高、颜色
值:
none
不过渡all
过渡所有能过渡的- 具体某个属性,用逗号分割
transition-duration
设置过渡的持续时间
单位s
或ms
transition-delay
开始过渡的延迟时间
单位s
或ms
transition-timing-function
设置过渡的类型
值:
ease
:平滑过渡linear
:线性过渡
transition复合属性
如果设置了一个时间,则是duration
,两个时间,则是duration
delay
其他值无顺序要求
1 | transition:1s 1s linear all; |
动画
动画的基本使用
第一步 :定义关键帧
简单方式
1
2
3
4
5
6
7
8
9@keyframes 动画名 {
from {
/*property1:value1*/
/*property2:value2*/
}
to {
/*property1:value1*/
}
}完整定义方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20@keyframes 动画名 {
0% {
/*property1:value1*/
}
20% {
/*property1:value1*/
}
40% {
/*property1:value1*/
}
60% {
/*property1:value1*/
}
80% {
/*property1:value1*/
}
100% {
/*property1:value1*/
}
}给元素应用动画
animation-name
:给定具体动画名animation-duration
:动画所需时间animation-delay
:动画延迟1
2
3
4
5
6
7
8.box {
/* 指定动画 */
animation-name: testKey;
/* 设置动画所需时间 */
animation-duration: 5s;
/* 设置动画延迟 */
animation-delay: 0.5s;
}
动画的其他属性
animation-timing-function
,设置动画类型,常用值如ease
,linear
animation-iteration-count
指定动画播放次数,常用值如具体的数字或者无限循环infinite
animation-direction
,指定动画的方向,常用值如下normal
:正常方向(默认)reverse
:反方向运行alternate
:动画先正常运行再反方向运行,交替alternate-reverse
:先反再正,交替
animation-fill-mode
,设置动画之外的状态forwards
:保持在动画结束时backwards
:保持在动画开始时
animation-play-state
,设置动画的播放状态,常用值如下running
:运动paused
: 暂停
animation
,复合属性,只设置一个时间则表示duration,两个时间则分别表示duration
和delay
,其他属性没有数量和顺序要求1
2
3.inner {
animation: atguigu 3s 0.5s linear 2 alternate-reverse forwards;
}
过渡和动画的区别
特性 | 过渡(transition) | 动画(animation) |
---|---|---|
触发方式 | 需要事件触发,例如 hover |
无需触发,可自动播放 |
复杂度 | 简单变化,只支持起点和终点 | 复杂变化,可设置多个关键帧 |
循环性 | 仅在状态切换时运行一次 | 支持循环播放 |
定义方式 | 基于 CSS 属性,直接定义 | 需结合 @keyframes 定义动画阶段 |
多列布局
作用:专门用于实现类似报纸的布局,多列布局也可以用来放图片
column-count
:指定列数column-width
:指定列宽columns
:同时指定列宽和列数column-gap
:列边距column-rule-style
:列的边框风格column-rule-width
: 列的宽度column-rule-color
: 列的颜色column-rule
:列边框,复合属性column-span
:是否跨列,none
或者all
伸缩盒模型
伸缩容器、伸缩项目
伸缩容器: 开启了
flex
的元素,就是:伸缩容器给元素设置
flex
、inline-flex
,该元素就变为了伸缩容器。伸缩项目:伸缩容器所有子元素自动成为 伸缩项目
- 仅伸缩容器的子元素是伸缩项目,其孙子元素及其他后代不是伸缩项目。
- 无论原来是哪种元素(块、行内块、行内),伸缩项目都会使其成为块元素
主轴与侧轴
主轴:伸缩项目沿主轴排列,默认是从左到右
侧轴(交叉轴):与主轴垂直的就是侧轴,默认从上到下
主轴方向
属性名:flex-direction
常用值:
row
从左到右(默认值)row-reverse
从右到左column
从上到下column-reverse
从下到上
主轴换行方式
属性名:flex-wrap
常用值:
nowrap
:默认值,不换行wrap
:自动换行123456
789
wrap-reverse
789
123456
flex-flow
复合属性,复合了flex-direction
和flex-wrap
,值没有顺序要求
1 | flex-flow:row wrap; |
主轴对齐方式
属性名:justify-content
常用值:
flex-start
:主轴起点对齐。(默认值)flex-end
:主轴终点对齐。center
:居中对齐。space-between
:均匀分布,两端对齐,与边框没有距离,元素距离相等space-around
: 元素与元素之间的距离是元素与边框距离两倍space-evenly
:元素与元素之间的距离与元素与边框距离相等
侧轴对齐方式
一行的情况
属性名:align-items
常用值:
flex-start
:侧轴的起点对齐flex-end
:侧轴的终点对齐center
:侧轴的中点对齐baseline
:第一行文字的基线对齐stretch
:未设置高度时,占满整个容器
多行的情况
属性名:align-content
常用值:
flex-start
flex-end
center
space-between
space-around
space-evenly
stretch
flex实现水平垂直居中
方法一:父容器开启flex
布局,使用justify-content
和align-items
实现水平垂直居中
方法二:父容器开启flex
布局,随后子元素 margin:auto
伸缩性
flex-basis
主轴的基准长度,会让元素的宽度或高度失效
主轴横向,宽度失效,主轴纵向,高度失效
默认值
auto
flex-grow
定义伸缩项目的放大比例,默认是
0
,即:主轴存在剩余空间也不放大规则
- 若所有伸缩项目的 flex-grow 值都为1,则:它们将等分剩余空间(如果有空间的话)。
- 若三个伸缩项目的 flex-grow 值分别为:1、2、3,则:分别瓜分到: 1/6 、 2/6、3/6 的空间。
flex-shrink
定义伸缩项目的缩小比例,默认为1,空间不足将会缩小
收缩后项目的比例为
宽度 * flex-shrink值
flex复合属性
flex
是复合属性,复合了:flex-grow
、flex-shrink
、flex-basis
三个属性,默认为0 1 auto
- 如果写
flex: 1
,实际上是flex:1 1 0
即可以放大、可以缩小、同时宽度(默认)平分容器 flex:auto
,实际上是flex:1 1 auto
即可以放大、缩小、同时宽度为设置的值flex: none
,实际上是flex:0 0 auto
,不可放大缩小,按设置的宽度来flex: 0 auto
,实际上是flex0 1 auto
即初始值
项目排序
order
属性定义项目的排列顺序。数值越小,排列越靠前,默认为0
单独对齐
通过align-self
属性,可以单独调整某个伸缩项目的对齐方式(只能调侧轴)
默认值为auto
,表示继承父元素的align-items
属性。
响应式布局
媒体查询
查媒体类型(分辨正常屏幕和打印机)
all
检测所有设备screen
检测屏幕print
检测打印机
媒体特性
width
视口宽度
min-width
视口最小宽度
max-width
视口最大宽度
height
视口高度
min-height
视口最小高度
max-height
视口最大高度
device-width
设备宽度
max-device-width
设备最大宽度
min-device-width
设备最小宽度
orientation
检测视口的旋转方向
portrait
纵向 landscape
横向
媒体查询的样式放在其他样式后面,以免被覆盖
运算符
and
且
,
或or
或
not
非
only
肯定
实际开发中的阈值
768 992 1200
用法
1 | <link rel="stylesheet" media="具体的媒体查询" href="mystylesheet.css"> |
1 | @media screen and (max-width:768px) { |
BFC
BFC
是Block Formatting Context
(块级格式上下文),元素的一个独特功能,平时关闭,特定情况下激活,激活能够解决一定问题
能解决什么问题?
- 元素开启
BFC
后,其子元素不会再产生margin
塌陷问题 - 元素开启
BFC
后,自己不会被其他浮动元素所覆盖 - 元素开启
BFC
后,子元素浮动,自身高度也不会塌陷
如何开启BFC
- 根元素
html
- 浮动元素
- 绝对定位、固定定位的元素
- 行内块元素
- 表格单元格
table
等元素 overflow
值不为visible
- flex
- 多列容器
column-span
为all
display
的值为flow-root