-webkit- chrome,safari
-moz- firefox
-ms- IE
-o- opera
rem 根元素字体大小的倍数
vw 视口宽度的百分比
vh 视口高度的百分比
vmax 视口宽高中的大百分比
vmin 视口宽高中小的百分比
rgba() 在rgb基础上添加了不透明度,a:opacity
hsl() h:色相(0~360),s:饱和度(0%~100%), l:亮度(0%~100%)
hsla() 在hsla基础上添加不透明度
不透明度取值范围0~1,值越大越不透明,1表示完全不透明,0表示完全透明
选择器1 选择器2 {}
选择器1 > 选择器2 {}
选择器1 + 选择器2 {}
选择器1 ~ 选择器2 {}
[attr] 选择包含属性是attr的元素
[attr="val"] 选择attr的值是val的元素
[attr^="val"] 选择attr的值是val开头的元素
[attr$="val"] 选择attr的值是以val结尾的元素
[attr*="val"] 选择attr的值包含val的元素
:link,:visited,:hover,:active,:focus 获取焦点的状态
:target 选择当前锚点指向的元素
:lang(语言)
:disabled 选择不可用的表单控件
:enabled 选择可用的表单控件
:checked 选择选中状态下的单选框,复选框,下拉选项
:first-child 兄弟元素中第一个
:last-child 兄弟元素中最后一个
:nth-child(n) 兄弟元素中第n个
:nth-last-child 兄弟元素中倒数第n个
:only-chlid() 没有兄弟的元素
:first-of-type 同标签名兄弟元素中第一个
:last-of-type 同标签名兄弟元素中最后一个
:nth-of-type(n) 同标签名兄弟元素中第n个
:nth-last-of-type(n)同标签名兄弟元素中倒数第n个
:only-of-type 没有同标签名兄弟元素
:root 根元素
:empty 没有后代元素也没有文本内容的元素
:not(选择器)
::after 动态的创建最后一个子元素
::before 动态的在最前面插入一个子元素
::first-line 选择到元素中的第一行文字
::first-letter 选择到元素中的第一个文字
::placeholder 设置输入框placeholder的样式
::selection 设置被选中文字的演示
1. ::before和 ::after 必须设置content属性
2. after,before,first-line,first-letter 使用单冒号也可以
id选择器 > 类选择器,伪类选择器,属性选择器 > 标签名选择器,伪元素选择器 > 全局选择器
1.行内式大于所有选器
2.!important可以无限提高该样式的优先级
该属性用于设置盒子模块尺寸的解析反式
content-box 默认值,width和height设置的是内容的尺寸
border-box width和height设置的是盒子总的尺寸
该属性用于设置盒子的阴影,属性值可以设置阴影偏移位置,阴影颜色,阴影模糊,内阴影
/* */
box-shadow:阴影水平偏移位置 阴影垂直偏移位置 阴影的模糊值 阴影外延
/*内阴影*/
box-shadow:inset ...
/*给一个元素设置多个阴影*/
box-shadow:xx,xx,xx;(各阴影用逗号分开)
该属性可以设置元素的不透明度,值是0~1,数字越大越不透明,0表示完全透明,1表示完全不透明
该属性设置背景图像位置的参考原点
padding-box 默认值,原点在内边距上
content-box 原点在内容区域
border-box 原点在边框上
该属性设置哪些区域背景图像可见
border-box 默认值,边框以及以内背景图像可见
padding-box 只有内边距以及以内背景图像可见
content-box 只有内容区域背景图像可见
text 只有文字上背景图像可见,需要加私有前缀
-webkit-background-clip:text
设置背景图像尺寸,值可以是长度或关键字
1.使用两个长度,分别设置图像宽高
2.如果使用一个长度,设置图像宽,高度根据比例自动计算
3.使用百分比,宽高参照父元素宽高
4.contain:图像自适应元素,优先保证图像全部显示在元素上
5.cover:图像自适应元素,优先保证元素每个区域都有背景图像
1.origin和clip的值是一样,若复合属性中只有一个关键字,则同时设置origin和clip;若有两个关键字,第一个是origin,第二个是clip
2.size和position都可以设置1到2个长度,复合属性中使用/进行区分,position/size
background:url(../images/xx.jpg) 0 0/250px 250px content-box padding-box
css3可以给元素设置多个背景图像
background:url(../images/xx.png) no-repeat left top,
url(../images/xx.png) no-repeat right top,
url(../images/xx.png) no-repeat left bottom,
url(../images/xx.png) no-repeat right bottom;
多个图像位置冲突时,前面的图像显示在上面
css属性名 | 含义 | 值 |
---|---|---|
border-radius | 多个角 | |
border-top-left-radius | 左上角 | 1~2个长度 |
border-top-right-radius | 右上角 | 1~2个长度 |
border-bottom-left-radius | 左下角 | 1~2个长度 |
border-bottom-right-radius | 右下角 | 1~2个长度 |
单个圆角属性设置规则
border-bottom-right-radius:xxpx;
border-bottom-right-radius:xxpx xxpx;
border-bottom-right-radius:xx%;
1.设置一个长度,正圆圆角
2.两个长度分别是x半径和y半径,椭圆圆角
3.使用百分比,x半径参照元素宽度,y半径参照元素高度
复合属性使用:
/* 4个角 */
border-radius:xxpx;
/* 左上和右下 左下和右上*/
border-radius:50px 100px;
/*左上 左下和右上 右下*/
border-radius:50px 100px 150px;
/*左上 右上 右下 左下*/
border-radius:50px 100px 150px 20px;
/* /左边是x半径, /右边是y半径 */
border-radius:50px/100px;
/* x半径和y半径各自按照各自规则*/
border-radius:50px 80px/100px 150px 40px 20px;
css属性名 | 含义 | 值 |
---|---|---|
outline | 同时设置style,width,color | 多个值 |
outline-style | 外轮廓风格 | none 无风格 solid 实线 dashed 虚线 dotted 顶线 double 双实线 |
outline-width | 外轮廓宽度 | 长度 |
outline-color | 外轮廓颜色 | 颜色 |
outline-offset | 外轮廓与边框的距离 不是outline的子属性 |
长度,可以是负值 |
外轮廓与边框的区别:
1.边框是盒子的一部分,影响盒子的大小;外轮廓在文档流中不占位置
2.外轮廓默认在边框外面, 可以调整位置,如果与边框位置重合,会显示在边框上面
css属性名 | 含义 | 值 |
---|---|---|
text-align-last | 设置最后一行文字的水平对齐方式 | start:开始方向,默认值 end:结束方向 left:左 right:右 center:居中 justify:两端对齐 |
text-decoration-line | 文本修饰线的形式 | none:没有修饰线默认值 underline:下划线 overline:上划线 line-thougth:删除线 |
text-decoration-style | 文本修饰线的风格 | solid:实线,默认值 dashed:虚线 dotted:点线 double:双实线 wavy:波浪线 |
text-decoration-color | 文本修饰线的颜色 | 颜色 |
text-decoration | 文本修饰线复合属性 | 多个值 |
white-space | 设置文本换行方式 | normal:默认值 pre:原样显示 pre-wrap:pre+自动换行 pre-line:normal+识别换行符 nowrap:强制所有文本在一行显示 |
text-overflow | 设置文本溢出方式 | clip:溢出部分裁剪 ellipsis:显示省略号 |
text-shadow | 设置文本阴影 | 偏移位置,模糊值和颜色 |
单行长文本显示省略号:
使用text-overflow,需要overflow和white-space一起使用:
overflow: hidden;
white-space: nowrap;
text-overflow:ellipsis;
text-shadow 文本阴影设置规则:
1.最多设置3个长度,水平偏移位置,垂直偏移位置,模糊值
2.支持多阴影
创建出来的渐变被认为是图像,需要与使用图像的css属性配合,如background-image,list-style-image
linear-gradient(方向,颜色1 位置,颜色2 位置...)
设置方向:
1.使用关键字:to left,to top,to right,to bottom...
2.使用角度:0deg~360deg,0 deg是从下到上,90deg是从左到右,180deg是从上到下
设置颜色的位置:
1.使用长度设置颜色的位置,可类比为坐标
2.如果不设置每个颜色位置,平均分布
radial-grdient(半径 at 圆心坐标,颜色1 位置, 颜色2 位置...)
设置圆心位置:
1.默认在元素的正中心
2.使用两个长度设置圆心坐标
设置半径:
1.默认半径从圆心到元素的边界
2.使用一个长度设置半径,正圆
3.使用两个长度设置半径分别表示x半径和y半径,椭圆
设置颜色位置:
1.使用长度设置颜色的位置
2.如果不设置每个颜色的位置,平均分布
repeating-linear-gradient() 重复线性渐变
repeating-radial-gradient() 重复径向渐变
css属性名 | 含义 | 值 |
---|---|---|
transform | 设置变换 | 一个或多个方法 |
transform-origin | 设置变换原点 | 使用长度或者关键字设置坐标 |
transform-style | 开启3d空间 | flat:默认值,子元素在平时。 preserve-3d:子元素在3d空间 |
perspective | 景深(观察者与屏幕距离) | 长度 |
perspective-origin | 观察者位置(原点) | 使用长度或者关键字设置坐标 |
backface-visibility | 元素背面面向用户是否可见 | visible:可见,默认值 hidden:不可见 |
注意
1.可以给元素设置多种变换,一个transform可以设置多个变换方式,使用空格分隔。
2.设置多种变换,变换方法的顺序对于最终显示效果有影响。
3.行内元素设置变换无效。
4.需要设置给变换的元素属性:transform,transform-origin,backface-visibility
需要设置给变换(3d)元素的父元素:transform-style,perspective,perspective-origin
translateX() 设置水平方向位移
translateY() 设置垂直方向位移
translate() 同时设置水平和垂直方向位移,一个长度默认水平位移
- 百分比作为长度,水平位移参照元素本身宽度,垂直位移参照元素本身高度
scaleX() 设置水平方向缩放
scaleY() 设置垂直方向缩放
scale() 设置整体缩放,一个值默认为水平和垂直都按照该比例
-缩放比例为负数,会造成元素翻转
rotate() 设置旋转角度,沿元素中心旋转
-设置角度,单位是deg
translateZ() 设置沿z轴位移,值越大元素越大
translate3D() 同时设置沿x轴,y轴,z轴,需设置3个长度
scaleZ() 沿z轴缩放,无效果
scale3D() 同时设置沿x轴,y轴,z轴,需设置3个值
rotateX() 沿x轴旋转,指定角度
rotateY() 沿y轴旋转,指定角度
rotateZ() 沿z轴旋转,指定角度;等同于totate()2D旋转
rotate3D() 设置沿多个轴旋转;需要4个参数,前3个表示对应轴转或者不转,第4个设置角度
transform: rotate3D(1,1,0,45deg);
css属性名 | 含义 | 值 |
---|---|---|
transition-property | 设置哪些属性参与过渡 | all:默认值,所有能过渡的且发生了改变的属性过渡 指定具体属性,多个属性用逗号分隔 |
transition-duration | 设置过渡持续时间 | 时间,单位是s,ms |
transition-delay | 设置过渡延迟时间 | 时间,单位是s,ms |
transition-timing-function | 设置过渡的运动轨迹 | ease:平滑,默认值 linear:匀速运动 ease-in:加速运动 ease-out:减速运动 ease-in-out:先加速再减速 cubic-bezier(n1,n2,n3,n4):塞尔曲线 steps():分步运动 step-start:等同于steps(1,start) step-end:等同于steps(1,end) |
transition | 复合属性 |
可以过渡的属性
1.属性值是长度,如width,height,padding,margin,left,top,border-radius
2.属性值是颜色,如background-color,color
3.属性是纯数字,如opacity,font-weight
4.变换属性transform
注
要在样式变化之前,设置好过渡相关属性
1.动态伪类选择器 :hover,:active,:focus
2.js事件
3.媒体查询@media
@keyframes 关键帧名字{
from{
}
to{
}
}
@keyframes 关键帧名字{
from{
}
40%{
}
80%{
}
to{
}
}
@keyframes关键帧名字{
100%{
}
}
元素和关键帧之间是多对多关系:
1.一个元素可以设置多个关键帧
2.一个关键帧也可以设置给多个元素
css属性名 | 含义 | 值 |
---|---|---|
animation-name | 设置关键帧 | 关键帧名字,多个使用逗号分隔 |
animation-duration | 设置动画持续时间 | 时间,单位是s,ms |
animation-delay | 设置动画延迟时间 | 时间,单位是s,ms |
animation-timing-function | 设置动画运动轨迹 | ease:平滑。默认值 linear:匀速运动 ease-in:加速运动 ease-out:减速运动 ease-in-out:先加速再减速 cubic-bezier(n1,n2,n3,n4):塞尔曲线 steps():分步运动 step-start:等同于steps(1,start) step-end:等同于steps(1,end) |
animation-iteration-count | 设置动画运行的次数 | 数字:指定次数,默认值是1 infinite:无数次 |
animation-direction | 设置动画的运动方向 | normal:正常方向,默认值 reverse:反方向 alternate:交替运动 alternate-reverse:反向交替运动 |
animation-play-state | 设置动画运动状态 | running:默认值,运动中 paused:暂停 |
animation-fill-mode | 设置动画之外的状态 | none:动画之外默认样式,默认值 forwards:设置动画结束之后处在结束帧状态, backwards:设置动画开始之前处在起始帧状态 both:同时forwards和backwards |
animation | 动画复合属性 |
css属性名 | 含义 | 值 |
---|---|---|
column-count | 设置列数 | |
column-width | 设置列宽 | |
columns | 同时设置列数和列宽 | |
column-rule-style | 列分隔线风格 | none,solid,dashed,dotted,double |
column-rule-width | 列分隔线宽度 | |
column-rule-color | 列分割线颜色 | |
column-rule | 列分割线复合属性 | |
column-gap | 设置列间距 |
column-count和column-width:
1.二者都可实现多列布局
2.如果同时设置列宽和列数,按照最终列数较少的进行布局
css属性名 | 含义 | 值 |
---|---|---|
column-span | 设置是否跨列 | none:不跨列,默认值 all:跨所有的列 |
-webkit-column-before | 设置元素前面断列方式 | auto:自动,默认值 always:前面总是开启新列 avoid:前面避免开启新列 |
-webkit-column-after | 设置元素后面的断列方式 | auto:自动,默认值 always:后面总是开启新列 avoid:后面避免开启新列 |
-webkit-column-inside | 设置元素内部的断列方式 | auto:自动,默认值 avoid:后面避免内部断列 |
伸缩容器:
display:flex/inline-flex;
-特点:
1.flex是块级元素的特点
2.inline-flex是行内块元素的特点
**伸缩项目:**伸缩容器的子元素自动变为伸缩项目。
1.只有伸缩容器的子元素才能变为伸缩项目,其他后代元素不可以
2.一个元素既可以是伸缩项目,也可以是伸缩容器。
3.不论任何显示模式的元素,变为伸缩项目就遵循伸缩项目的特点
4.伸缩项目会水平排列
5.伸缩项目默认宽度被内容撑开,可以设置宽高,内外边距,不会有外边距塌陷合并
**主轴:**伸缩项目会沿着主轴进行排列,默认主轴方向是水平从左到右
**侧轴:**侧轴永远与主轴垂直,主轴方向改变,侧轴方向也改变。
给伸缩容器设置css属性flex-direction可以修改主轴方向。
row 水平从左到右,默认值
row-reverse 水平从右到左
column 垂直从上到下
column-reverse 垂直从下到上
给伸缩容器设置css属性flex-wrap,可以修改伸缩项目的换行方式,属性如下
nowrap 强制不换行,默认值
wrap 自动换行
wrap-reverse 自动换行且翻转
flex-flow是flex-direction和flex-wrap组成的复合属性,可以同时设置主轴方向和换行方式
给伸缩容器设置css属性justify-content可以设置伸缩项目在主轴上的对齐方式
flex-start 靠主轴起始方向
flex-end 靠主轴结束方向
center 居中
space-between 两端没有间距,中间有间距,两端对齐
space-around 两端的间距是中间间距的一半
space-evenly 两端的间距与中间间距一致
给伸缩容器设置css属性align-items可以设置伸缩项目在侧轴上的对齐方式
stretch 伸缩项目如果没有设置侧轴上的长度,拉伸,默认值
flex-start 靠侧轴起始方向对齐
flex-end 靠侧轴结束方向对齐
center 居中对齐
baseline 基线对齐
给伸缩容器设置css属性align-content可以设置伸缩项目在侧轴上对齐方式(发生换行的前提下)
stretch 伸缩项目如果没有设置侧轴上的长度,拉伸,默认值
flex-start 靠侧轴起始方向
flex-end 靠侧轴结束方向
center 居中
space-between 两端没有间距,中间有间距,两端对齐
space-around 两端的间距是中间间距的一半
space-evenly 两端的间距与中间间距一致
伸缩项目在主轴上可以进行伸缩
1.flex-basis的值是个长度,表示伸缩项目在主轴上的长度
2.如果没有设置flex-basis或设置为auto(默认值),伸缩项目在主轴上的长度按照与主轴对应的width或者height
3.如果flex-basis,width,height都没设置,被内容撑开
flex-basis > width/height >默认大小
伸缩项目扩展的前提
1.当伸缩容器在主轴方向有富余空间
2.伸缩项目的扩展比例flex-grow不为0,flex-grow的默认值是0
伸缩项目扩展的规则:
伸缩项目根据自己的扩展比率,瓜分伸缩容器的富余空间
伸缩项目收缩的前提:
1.伸缩容器在主轴上的长度小于伸缩项目在主轴上的长度和
2.伸缩项目的收缩比率flex-shrink不为0,flex-shrink的默认值是1
伸缩项目收缩的规则:
伸缩项目进行收缩,不但要考虑各自收缩比率flex-shrink,还要考虑各自在主轴上的长度
伸缩项目不会无限收缩,当伸缩项目中只剩下内容,不会挤压内容
同时设置扩展比例,收缩比例,基准长度
flex:grow shrink basis;
flex:1; /*flex:1 1 0*/
flex:auto;/*flex:1 1 auto*/
flex:none;/*flex:0 0 auto*/
flex:0 auto;/*flex:0 1 auto 默认值*/
给伸缩项目设置css属性order可以调整伸缩项目的排序,值是一个数字
数字越大排序越靠后,数字越小排序越靠前,可以是负数
给伸缩项目设置css属性align-self可以单独设置该伸缩项目在侧轴上的对齐方式
auto 按照伸缩容器中的align-items设置,默认值
stretch 伸缩项目如果没有设置侧轴上的长度,拉伸
flex-start 靠侧轴起始方向对齐
flex-end 靠侧轴结束方向对齐
center 居中对齐
baseline 基线对齐
css属性 | 含义 | 值 |
---|---|---|
display | 设置伸缩容器 | flex:块级伸缩容器 inline-flex:行内伸缩容器 |
flex-direction | 设置主轴方向 | row:水平从左到右,默认值 row-reverse:水平从右到左 column:垂直从上到下 column-reverse:垂直从下到上 |
flex-wrap | 设置换行方式 | nowrap:不换行,默认值 wrap:自动换行 wrap-reverse:自动换行且翻转 |
flex-flow | 同时设置主轴方向和换行方式 | direction和wrap的值 |
justify-content | 设置在主轴上的对齐方式 | flex-start:靠主轴起始方向,默认值 flex-end:靠主轴结束方向 center:居中 space-between:两端对齐,两端无间距,中间有间距 space-around:两端间距是中间间距的一半 space-evenly:两端间距与中间距相等 |
align-items | 设置在侧轴上的对齐方式(一条主轴线,不换行) | stretch:侧轴拉伸,默认值 flex-start:侧轴起始方向 flex-end:侧轴结束方向 center:居中 baseline:基线对齐 |
align-content | 设置在侧轴上的对齐方式(多条主轴线,发生换行) | stretch:侧轴拉伸,默认值 flex-start:侧轴起始方向 flex-end:侧轴结束方向 center:居中 space-between:两端对齐,两端无间距,中间有间距 space-around:两端间距是中间间距的一半 space-evenly:两端间距与中间距相等 |
css属性名 | 含义 | 值 |
---|---|---|
flex-basis | 设置伸缩项目在主轴上的基准长度 | auto:默认值 |
flex-grow | 伸缩项目的扩展比例 | 数字,默认值是0 |
flex-shrink | 伸缩项目的收缩比率 | 数字,默认值是1 |
flex | 同时设置basis,grow,shrink | |
order | 伸缩项目排序 | 数字 |
align-self | 单独设置伸缩项目侧轴对齐方式 | auto:根据伸缩容器的设置,默认值 stretch:侧轴拉伸,默认值 flex-start:侧轴起始方向 flex-end:侧轴结束方向。 center:居中 baseline:基线对齐 |
视口:
1.视口就是页面的可视区域
2.视口是根元素的包含块
完美视口:
1.设备屏幕宽度与视口宽度保存一致,就是完美视口
2.PC端默认就是完美视口,移动端默认不是完美视口
--设置完美视口:
<meta name="viewport" content="width=device-width,initial-scale=1.0">
all 默认值,所有的设置
screen 屏幕
print 打印设置
@media print{
h1{
css样式
}
}
width 设置固定视口宽度
max-width 设置最大视口宽度,小于等于
min-width 设置最小视口宽度,大于等于
device-width 设备宽度
max-device-width 最大设备宽度
min-device-width 最小宽度
完美视口下,视口宽度=设备宽度
运算符:
and 两个媒体查询条件同时生效,并且
, 多个媒体查询条件只要满足一个即可,或者
only 只能用于媒体查询,肯定
not 只能用于媒体查询,否定
/* 视口宽度大于等于 600 并且小于等于 900 */
@media (min-width: 600px) and (max-width: 900px) {
body {
background-color: #333;
}
h1 {
color: #fff;
}
}
/* 视口宽度大于等于 1100 或者小于等于 400 */
@media (min-width: 1100px), (max-width: 400px) {
body {
background-color: #f00;
}
h1 {
color: #00f;
}
}
@media 媒体查询{}
<link rel="stylesheet" href="style-screen.css" media="screen">
方案一: 640px 1024px
**方案二:**768px 992px 1200px
1.默认写最小屏幕的样式
2.以min-width作为媒体查询条件,逐次增大
BFC:跨级格式上下文
创建BFC的方式:
创建BFC可以解决的问题
给浮动元素的父元素创建BFC,清除掉子元素浮动的影响
给父元素创建BFC,第一个和最后一个子元素的外边距不会塌陷