一、复杂选择器web
一、兄弟选择器浏览器
一、相邻兄弟函数
选择器1+选择器2优化
二、通用兄弟动画
选择器1~选择器2url
二、属性选择器3d
语法:[]orm
[attr]:匹配附带attr属性的元素rem
elem[attr]:... ...字符串
elem[attr1][attr2]:
[attr=value]:
[class~=value]:
[attr^=value]:
[attr$=value]:
[attr*=value]:
三、伪类选择器
一、目标伪类
:target
二、元素状态伪类
:enabled,匹配被激活元素(表单控件)
:disabled,匹配被禁用元素(表单控件)
:checked,匹配被选中元素(radio,checkbox)
三、结构伪类
一、:first-child
二、:last-child
三、:nth-child(n)
四、:empty
五、:only-child
四、否认伪类
:not(选择器)
四、伪元素选择器
一、做用
匹配元素中的内容
二、语法
:first-letter,匹配元素的首字符
:first-line,匹配元素的首行
::selection,匹配用户选中的部分
注意: :与::的区别
二、内容生成
一、语法
一、伪元素选择器
一、:before,匹配元素内容区域以前
二、:after,匹配元素内容区域以后
二、属性
属性:content
取值:
一、字符串 :普通文本,""
二、url() , 生成一副图像
三、计数器
三、解决问题
一、浮动元素的父元素高度问题
div:after{
content:"";
display:block;
clear:both;
}
二、外边距溢出
div:before/div:after{
content:"";
display:table;
}
四、计数器
一、声明或复位一个计数器
属性:
counter-reset:名 值 名 值;
值,能够省略,默认为0
注意:
一、不能将计数器声明在使用的元素中
二、设置计数器增量
属性:counter-increment:名 值;
值,能够省略,默认为1
注意:
一、哪一个元素使用,就在哪一个元素上声明增量
三、使用计数器
属性:content
取值:counter(名);
注意:
配合着:before或:after一块儿使用
三、多列
一、属性
一、分隔列
属性:column-count
二、列间隔
属性:column-gap
三、列规则
属性:column-rule:width style color;
二、兼容性
添加浏览器前缀
四、CSS Hack
一、CSS Hack方式
一、CSS 类内部hack
经过 属性前缀或值后缀的方式来编写指定浏览器可以识别的样式
hack 写法
* *color IE6,IE7
+ +color IE6,IE7
# #color IE6,IE7
- -color IE6
_ _color IE6
\0 color:red\0; IE8,IE9,IE10
\9\0 color:red\9\0; IE9,IE10
注意:
顺序问题
IE8,IE9,IE10(\0)
IE9,IE10(\9\0)
IE6,IE7(+)
IE6(-)
二、选择器Hack
在选择器前加上浏览器可以识别的前缀
* : IE6
*body{
/*IE6中body的样式*/
}
*+ : IE7
*+body{
/*IE7中body的样式*/
}
三、HTML都不引用Hack
经过HTML的条件注释
条件注释语法:
<!--[if 条件 IE 版本]>
内容
<![endif]-->
条件:
一、gt :大于指定版本
二、gte :大于等于
三、lt :小于
四、lte :小于等于
五、!不是指定版本
******************************
一、转换
二、过渡
三、动画
四、CSS 优化
******************************
一、转换
一、转换简介
一、什么是转换
改变元素在页面中的大小,位置,角度和形状的一种方式
二、转换分类
一、2D转换
使元素在x轴和y轴上发生变化效果
二、3D转换
在2D转换基础上,增长 z轴的变化效果
三、转换属性
属性:transform
取值:
一、none
默认值,不进行任何转换
二、转换函数
表示一个或者多个转换函数,若是是多个函数的话,中间以空格分开
四、转换原点
属性:transform-origin
默认状况下,原点是在整个元素的中心位置处
取值:数值/百分比/关键字
两个值:表示 x轴 和 y轴的位置
三个值:表示 x轴 ,y轴 ,z轴的位置
二、2D转换
一、2D位移
一、属性 和 函数
属性:transform
函数:
translate(x) :元素在x轴上的位移距离,取值为正,向右移动,取值为负,向左移动
translate(x,y) :
x表示x轴位移距离
y表示y轴位移距离,取值为正,向下移动,取值为负,向上移动
translateX(x) :只改变元素在x轴上的位置
translateY(y) :只改变元素在y轴上的位置
取值:
一、数值
二、百分比
二、2D缩放
一、做用
改变元素在页面中的大小
二、属性和函数
属性:transform
函数:
scale(value),若是只给一个值,那么x轴和y轴将等比缩放
scale(x,y):改变 x轴和y轴的缩放比例
scaleX(x):只改变x轴的缩放比例
scaleY(y):只改变y轴的缩放比例
取值:
默认值 为1
缩小:0~1 之间的数值
放大:大于1的数值
三、2D旋转
一、做用
改变元素在页面中的角度
二、属性 和 函数
属性:transform
函数:rotate(ndeg)
n取值为正,则顺时针旋转
n取值为负,则逆时针旋转
三、注意
一、转换时,坐标轴会一块儿进行转换
二、转换原点能够影响转换效果
四、2D倾斜
一、做用
改变元素在页面上的形状
二、属性 和 函数
属性:transform
函数:
skew(xdeg) : x轴倾斜指定角度
实际上时改变 y轴的倾斜角度
取值为正:逆时针
取值为负:顺时针
skewX(xdeg) : 效果同上
skewY(ydeg) : y轴倾斜指定角度
其实是改变 x轴的倾斜角度
取值为正:顺时针
取值为负:逆时针
三、3D转换
一、3D转换
增长 z轴 转换效果
二、属性
属性:perspective
做用:模拟 人眼睛到 3D投射元素的距离
注意:该属性 须要加在 3D转换元素的父元素上
兼容性:
火狐:-moz-perspective:
Chrome,Safari:-webkit-perspective
Opera:-o-perspective
三、3D旋转
容许元素在 x轴,y轴,z轴上进行旋转操做
属性 和 函数
属性:transform
函数:
rotateX(xdeg):以x轴为中心轴进行元素的旋转
rotateY(ydeg)
rotateZ(zdeg)
rotate3D(x,y,z,ndeg)
x,y,z,若是取值为 0的话,说明该轴不参与旋转
x,y,z,若是取值为 1的话,说明该轴是参与旋转的
rotate3d(0,0,1,45deg)-- rotatez(45deg)
rotate3d(1,1,0,45deg)
四、3D位移
一、做用
改变元素在z轴上的位置
二、属性 和 函数
属性:transform
函数:
translateZ();
translate3D(x,y,z)
三、属性 : transform-style
做用:规范当前元素的子元素如何去排列3D位置
取值:
一、flat
默认值,不保留子元素的3D位置
二、preserve-3d
保留子元素3d位置
二、过渡
一、什么是过渡
使得CSS的属性值在一段时间内平滑过渡
二、过渡的 4个要素(属性)
一、指定过渡属性
属性:transition-property
做用:规定应用过渡效果的CSS属性名称
取值:
一、none
二、all
三、property-name : 具体使用过渡效果的属性名称
能够设置过渡的属性:
一、颜色属性
二、取值为数值的属性
三、转换属性
transform
四、渐变属性
五、visibility 属性
六、阴影属性
ex:
div{
transition-property:background;
}
二、指定过渡时间
属性:transition-duration
取值:以秒(s) 或 毫秒(ms) 做为单位的
默认值为0,即没有过渡效果
ex:
div{
transition-property:background;
transition-duration:300ms;
}
三、指定速度时间曲线函数
属性:transition-timing-function
取值:
一、ease : 默认值,慢速开始,快速变快,慢速结束
二、linear : 匀速
三、ease-in : 慢速开始,加速结束
四、ease-out: 快速开始,减速结束
五、ease-in-out:慢速开始和结束,中间先加后减
ex:
div{
transition-property:background;
transition-duration:300ms;
transition-timing-function:linear;
}
四、指定过渡延迟时间
属性:transition-delay
取值:ms 或 s 做为单位的数值
三、触发过渡效果
通常都是由用户行为触发
五、过渡属性-过渡子属性的简写模式
transition:property duration timing-function delay;
三、动画
一、什么是动画
使元素从一种样式逐渐变化为另外一种样式
其原理是经过 关键帧 控制动画的每一步
注意:浏览器兼容性
经过了浏览器前缀解决兼容性
-moz-
-webkit-
-o-
二、使用动画的步骤
一、声明动画
声明动画的名称,而且指定关键帧的信息
关键帧:
一、时间点
二、该时间点上的状态(样式)
二、使用动画
经过动画属性,将动画效果绑定到某个元素上
三、声明动画
语法
@keyframes 动画名称{
0%{
动画开始时元素的样式声明
}
... ...(1% ~ 99%)
100%{
动画结束时元素的样式声明
}
}
兼容 Chrome Safari
@-webkit-keyframes 动画名称{
0%{
动画开始时元素的样式声明
}
... ...(1% ~ 99%)
100%{
动画结束时元素的样式声明
}
}
兼容 Firefox
@-moz-keyframes 动画名称{
0%{
动画开始时元素的样式声明
}
... ...(1% ~ 99%)
100%{
动画结束时元素的样式声明
}
}
时间点:
0%(from) : 动画开始的时候
50% : 动画运行到一半的时候
100%(to) : 动画结束的时候
四、动画的调用
一、animation-name
要调用的动画名称
二、aniamtion-duration
动画完成一个周期须要用的时间
以s 或 ms 为单位
三、animation-timing-function
动画的 速度时间 曲线函数
ease
linear
ease-in
ease-out
ease-in-out
四、animation-delay
动画执行延迟时间
s|ms为单位
五、animation-iteration-count
动画播放次数
取值:
一、具体数值
二、infinite
无限次播放
六、animation-direction
动画播放方向
取值:
一、normal
默认值,正向播放,即从 0%~100%
二、reverse
逆向播放,即从100% ~ 0%
三、alternate
轮流播放,动画在奇数次数播放时,从 0% ~ 100%,动画在偶数次数播放时,从100% ~ 0%
七、animation属性
animation:name duration timing-function delay iteration-count direction;
八、animation-fill-mode
动画播放先后的填充方式
取值:
一、none
默认值,不改变默认行为
二、forwards
动画完成后,将保持在最后一个关键帧的状态上
三、backwards
动画播放前(在延迟时间内),将元素保持在第一个帧的状态上
四、both
动画播放先后的填充模式都应用
九、animation-play-state
动画的播放状态
取值:
一、paused
暂停
二、running
播放