CSS3新特性
目录:
1、SS3现状
- 新增的CSS3特性有兼容性问题,基本上IE9以上才支持
- 重点突出方向在于移动端开发,移动端优于PC端
- 还处在完善中
- 应用相对比较广泛
- 目前主要学习的是新增的选择器和CSS3盒子模型以及个别其他特性
2、CSS3新增选择器
CSS3新增的选择器,可以更加便捷、自由的选择目标元素
2.1 属性选择器
使用:
- E[attr]:选择具有attr属性的E元素
- E[attr=“val”]:选择具有attr属性,并且属性值是val的E元素
- E[attr^=“val”]:选择具有attr属性,并且attr属性值是以val开头的E元素
- E[attr$=“val”]:选择具有attr属性,并且attr属性值是以val结尾的E元素
- E[attr*=“val”]:选择具有attr属性,并且attr属性值包含val的E元素
注意:
- 属性选择器,按照字面意思理解,根据元素标签中的属性来进行选择元素
- 属性选择器可以根据元素特定属性来选择元素,这样就不用借助class和id选择器
- 属性选择器也可以根据自定义属性来选择出元素
- 类选择器、属性选择器、伪类选择器,权重都为10
2.2 结构伪类选择器
结构伪类选择器主要根据文本结构来选择元素,常用于根据父级选择里面的子元素
使用:
- E:first-child:匹配父元素里面的第一个子元素E
- E:last-child:匹配父元素里面的最后一个子元素E
- E:nth-child(n):匹配父元素里面的第n个子元素E
- E:first-of-type:匹配指定类型E的第一个
- E:last-of-type:匹配指定类型E的最后一个
- E:nth-of-type(n):匹配指定类型E的第n个
n的妙用
- n=3:选择到第num个元素
- n=even:选择序号为偶数的元素
- n=odd:选择序号为奇数的元素
- 2n:选择序号为2的倍数的元素
- 2n+1:选择序号为2的倍数后的1个
- n+5:从第5个元素(包含第五个)后的所有元素
- -n+5:选择从第1个元素开始到第五个元素的所有元素,包含第5个
E:first-child和E:first-of-type的区别?
E:first-child:是先拿父元素中第一个子元素,然后判断这个元素是否是E元素,如果是则选择这个E元素,否则将无法选中元素。也就是说先将父元素中的所有子元素(不区分元素种类)拿到之后,从1开始排序。
E:first-of-type:是先拿父元素中的所有子元素,然后拿出所有的子元素E中第一个。也就是说先将父元素中的所有子元素E拿到之后,从1开始排序
2.3 伪元素选择器
伪元素选择器可以使用CSS创建出一些新的标签元素,而不需要HTML标签,从而能够简化HTML结构。
1. ::before:在元素内部的最前面插入内容
2. ::after:在元素的内部最后面插入内容
注意:
1. before和after创建一个元素,但是属于行内元素,所有一般需要转为块元素
2. 新创建的这个元素在文档中是找不到的,所以称之为伪元素
3. before和after必须要有content属性
4. 伪元素选择器和标签选择器权重一样,都为1
应用场景:
1. 字体图标
2. 设置遮罩内容
3. 清除浮动
十大选择器于为伪元素的权重情况
选择器 | 表达式或示例 | 说明 | 权重 |
---|---|---|---|
ID选择器 | #aaa | 100 | |
类选择器 | .aaa | 10 | |
标签选择器 | h1 | 元素的tagName | 1 |
属性选择器 | [title] | 详见这里 | 10 |
相邻选择器 | selecter + selecter | 拆分为两个选择器再计算 | |
兄长选择器 | selecter ~ selecter | ||
亲子选择器 | selecter > selecter | 拆分为两个选择器再计算 | |
后代选择器 | selecter selecter | 拆分为两个选择器再计算 | |
通配符选择器 | * | 0 | |
各种伪类选择器 | 如:link, :visited, :hover, :active, :target, :root, :not等 | 10 | |
各种伪元素 | 如::first-letter,::first-line,::after,::before,::selection | 1 |
3、盒子模型
CSS3中可以通过box-sizing来指定盒子模型,属性带有两个值:content-box、border-box,CSS3盒子模型使得计算盒子的大小和方式发生改变
1. box-sizing:content-box;盒子大小:border + padding + width(以前默认的)
2. box-sizing:border-box;盒子大小 : width
4、其他特性
4.1 flter滤镜属性
语法格式:
filter: none | blur() | brightness() | contrast() | drop-shadow() | grayscale() | hue-rotate() | invert() | opacity() | saturate() | sepia() | url();
属性值:
Filter | 描述 |
---|---|
none | 默认值,没有效果。 |
blur(px) | 给图像设置高斯模糊。"radius"一值设定高斯函数的标准差,或者是屏幕上以多少像素融在一起, 所以值越大越模糊; 如果没有设定值,则默认是0;这个参数可设置css长度值,但不接受百分比值。 |
brightness(%) | 给图片应用一种线性乘法,使其看起来更亮或更暗。如果值是0%,图像会全黑。值是100%,则图像无变化。其他的值对应线性乘数效果。值超过100%也是可以的,图像会比原来更亮。如果没有设定值,默认是1。 |
contrast(%) | 调整图像的对比度。值是0%的话,图像会全黑。值是100%,图像不变。值可以超过100%,意味着会运用更低的对比。若没有设置值,默认是1。 |
drop-shadow(h-shadow v-shadow blur spread color) | 给图像设置一个阴影效果。阴影是合成在图像下面,可以有模糊度的,可以以特定颜色画出的遮罩图的偏移版本。 函数接受(在CSS3背景中定义)类型的值,除了"inset"关键字是不允许的。该函数与已有的box-shadow box-shadow属性很相似;不同之处在于,通过滤镜,一些浏览器为了更好的性能会提供硬件加速。<shadow>参数如下:`` **<offset-x>** **<offset-y>** (必须) 这是设置阴影偏移量的两个 <length>值. **<offset-x>** 设定水平方向距离. 负值会使阴影出现在元素左边. **<offset-y>**设定垂直距离.负值会使阴影出现在元素上方。查看**<length>**可能的单位. **如果两个值都是0**, 则阴影出现在元素正后面 (如果设置了 <blur-radius> and/or <spread-radius>,会有模糊效果). **<blur-radius>** (可选) 这是第三个code><length>值. 值越大,越模糊,则阴影会变得更大更淡.不允许负值 若未设定,默认是0 (则阴影的边界很锐利). **<spread-radius>** (可选) 这是第四个 <length>值. 正值会使阴影扩张和变大,负值会是阴影缩小.若未设定,默认是0 (阴影会与元素一样大小). 注意: Webkit, 以及一些其他浏览器 不支持第四个长度,如果加了也不会渲染。 **<color>** (可选) 查看 <color>该值可能的关键字和标记。若未设定,颜色值基于浏览器。在Gecko (Firefox), Presto (Opera)和Trident (Internet Explorer)中, 会应用color**color**属性的值。另外, 如果颜色值省略,WebKit中阴影是透明的。 |
grayscale(%) | 将图像转换为灰度图像。值定义转换的比例。值为100%则完全转为灰度图像,值为0%图像无变化。值在0%到100%之间,则是效果的线性乘子。若未设置,值默认是0; |
hue-rotate(deg) | 给图像应用色相旋转。"angle"一值设定图像会被调整的色环角度值。值为0deg,则图像无变化。若值未设置,默认值是0deg。该值虽然没有最大值,超过360deg的值相当于又绕一圈。 |
invert(%) | 反转输入图像。值定义转换的比例。100%的价值是完全反转。值为0%则图像无变化。值在0%和100%之间,则是效果的线性乘子。 若值未设置,值默认是0。 |
opacity(%) | 转化图像的透明程度。值定义转换的比例。值为0%则是完全透明,值为100%则图像无变化。值在0%和100%之间,则是效果的线性乘子,也相当于图像样本乘以数量。 若值未设置,值默认是1。该函数与已有的opacity属性很相似,不同之处在于通过filter,一些浏览器为了提升性能会提供硬件加速。 |
saturate(%) | 转换图像饱和度。值定义转换的比例。值为0%则是完全不饱和,值为100%则图像无变化。其他值,则是效果的线性乘子。超过100%的值是允许的,则有更高的饱和度。 若值未设置,值默认是1。 |
sepia(%) | 将图像转换为深褐色。值定义转换的比例。值为100%则完全是深褐色的,值为0%图像无变化。值在0%到100%之间,则是效果的线性乘子。若未设置,值默认是0; |
url() | URL函数接受一个XML文件,该文件设置了 一个SVG滤镜,且可以包含一个锚点来指定一个具体的滤镜元素。 例如: filter: url(svg-url#element-id) |
initial | 设置属性为默认值,可参阅: CSS initial 关键字 |
inherit | 从父元素继承该属性,可参阅:CSS inherit 关键字 |
4.2 计算盒子宽度calc()函数
calc():此css函数可以在声明css属性时执行一些计算,函数内部可以直接使用算术运算符(+、-、*、/)来进行计算
left:calc(1200px - 182px - 200px);
4.4 css3过渡
介绍
过渡(transition)是css3中具有特殊功能的特征之一,可以在不使用Flash动画或者js的情况下,当元素从一种样式变为另一种样式时为元素添加转换效果和时间限制。
过渡动画:从一个状态变为另一个状态。此属性IE9以上才支持
语法格式:
transition:属性 时间 运动曲线 延迟时间;
- 属性(必须):想要变化的css属性,比如:height、width、background-color、padding、margin……等,如果想要所有的属性都进行变化过渡,则写一个all即可。
- 时间(必须):过渡完所花费的时间,单位秒(s)
- 运动曲线(可选):默认是ease(逐渐变慢)、linear(匀速)、ease-in(加速)、ease-out(减速)、ease-in-out(先加速再减速)。
- 延迟时间(可选):何时开始,单位秒(s),设置延时触发事件
5、广义H5说法
-
狭义H5
HTML5结构标签,整合以前的HTML元素 + 新有的HTML元素
-
广义H5
1、广义H5是指HTML5 + CSS3 + JavaScript 2、这个集合有时候称为HTML5和朋友,通常缩写为HTML5 3、HTML是一种发展趋势
Web 开发技术 | MDN文档:[https://developer.mozilla.org/zh-CN/docs/Web],我们可以通过该网站学习更多关于H5、C3、js的新内容。