CSS3新增属性
一、新增的选择器
1.属性选择器
属性选择器可以根据元素特定属性的来选择元素,这样就可以不用借助于类或者id选择器
属性选择器 | 说明 |
---|---|
E[att] | 选择具有att属性的E元素 |
E[att=“val] | 选择具有att属性且属性值等于val的E元素 |
E[att^ =“val”] | 匹配具有att属性且值以val开头的E元素 |
E[att$=“val”] | 匹配具有att属性且以val结尾的E元素 |
E[att*=“val”] | 匹配具有att属性且值中含有val的E元素 |
比如:
必须是input 但是同时具有value这个属性 选择这个元素
div input[value] {
color="red";
}
2.结构伪类选择器
2.1: nth-child(n)
E:nth-child(n)选择某个父元素的一个或多个特定的子元素
n可以是数字,关键字、公式
n如果是数字,就是选择第n个子元素,里面的数字从1开始
n可以是关键字:even偶数行,odd奇数行
n可以是公式:常见的公式如下(如果n是公式,则是从0开始计算的,但是第0 个元素或者超出了元素的个数会被忽略)
公式:
公式 | 说明 |
---|---|
2n | 偶数 |
2n+1 | 奇数 |
5n | 5 10 15 |
n+5 | 从第5个开始(包含第5个)到最后 |
-n+5 | 前5个(包含第5个) |
举例:
ul li:nth-child(even){
background-color:#ccc;
}
2.2: nth-of-type(n)
格式 | 说明 |
---|---|
E:first-of-type | 指定类型E的第一个 |
E:last-of-type | 指定类型E的最后一个 |
E:nth-of-type(n) | 指定元素的第几个 |
区别:执行顺序不同
E:nth-child(n)是先看nth-child(n)选的是第几个,然后再看E元素是哪一个。
E:nth-of-type(n) 先看E元素是哪一个,在看nth-of-type(n)选的是哪一个
3.伪元素选择器
1、定义:伪元素选择器:利用CSS创建新标签元素,而不需要HTML标签,
2、选择符:
元素 ::before{ } 再元素内部的前面掺入内容(盒子)
元素 ::after{ }在元素内部的后面插入内容(盒子)
3、注意:
1)before和after创建一个元素,但是属于行内元素
2)新创建的这个元素在文档树中是找不到的,所以我们称为伪元素
3)语法 element::before{ }
4)before和after必须有content属性
5)伪元素选择器和标签选择器一样,权重为1
4、解决的问题:
1)伪元素字体图标:利用字体图标和伪元素选择器搭配来设置特殊的符号,比如 > <
2)伪元素实现鼠标经过一个盒子,就让里面before遮罩层显示出来
3)伪元素清除浮动
二、盒子模型box-sizing
属性值为 content-box、border-box
1.盒子模型存在的问题
由于给盒子设置边框和padding值会造成塌陷的问题,使盒子的width变大
box-sizing:content-box 盒子大小为width+padding+border(以前默认的)会出现上面的问题。
2.解决方案
1)在通配符添加box-sizing:border-box后,盒子大小为width,padding 和border就不会撑大盒子了,但是border和padding不会超过width 宽度。
2)补充
外边距造成的垂直塌陷解决方案:可以为父元素定义上边框 border、可以为父元素定义上内边距padding、可以为父元素添加overflow:hidden
三、图片变模糊或颜色偏移filter
语法 filter:函数( );
例如filter:blur(5px);blur模糊处理 数值越大越模糊
四、盒子宽度计算calc
语法 width:calc (100%-80px);
比如:width:calc(100%-30px)表示子盒子永远比父盒子小30px
五、过度动画transition
过度动画:是从一个状态渐渐的过度到另外的状态
语法:语法 transition:要过度的属性 花费时间 运动曲线 何时开始;
属性:想变化的CSS属性 ,高、宽、背景颜色 内外边距、想要所有的属性都变化,写一个all就可以了。
在不使用Flash动画或Js的 情况下,当元素从一种样式变换为另一种样式时为元素添加效果。
经常和hover一起搭配使用,一般使用进度条或图片切换。
属性值 | 说明 |
---|---|
要过度的属性 | width、height、color,想要所有的属性都变化,写一个all就可以了 |
花费时间 | 单位是秒(必须写单位)0.5s |
运动曲线 | 默认是ease(可以省) |
何时开始 | 单位是秒(必须写单位)可以设置延迟触发时间 默认是0s(可省) |
谁做过度给谁加 如果给div加过度,就给div加transition
举例:
div{
width:200px;
height:100px;
transition:all 0.5s;
}
div:hover {
width:400px;
height:200px;
}