css 8
1、复杂选择器
2、内容生成
3、多列
4、CSS Hack(浏览器兼容性)
*******************************
1、复杂选择器
1、兄弟选择器
1、作用
通过元素的平级关系来匹配其他元素
只能向后不能向前
2、分类
1、相邻兄弟选择器
匹配指定元素的相邻兄弟
相邻:紧紧挨在指定元素的后面
语法:
选择器1+选择器2
ex:
1、div+p{}
2、#content+.important{}
2、通用兄弟选择器
通用:某元素后面所有的兄弟元素
语法:
选择器1~选择器2
2、属性选择器
1、作用
允许使用元素所附带的属性及其值,来匹配页面的元素
2、语法
唯一一组以 [] 来进行表示的选择器
1、[attr]
attr:任意属性名称
作用:匹配 附带 attr 属性的元素
ex:
1、[id]
匹配页面所有附带 id 属性的元素
2、elem[attr]
elem : 表示任意元素
作用:匹配附带 attr 属性的 elem 元素
ex:
1、p[id]
3、elem[attr1][attr2]
作用:匹配页面中所有即附带attr1属性也同时附带attr2属性的elem元素
ex:
div[id][class]
4、elem[attr=value]
value:值
作用:匹配页面上 附带attr属性同时值为 value 的elem 元素
ex:
input[type=text] : 获取页面所有文本框
5、elem[class~=value]
作用:匹配 附带 class 属性的 elem元素,其中class属性的值是以空格隔开的值列表,value是值列表中的一个独立值。
6、elem[attr^=value]
^= : 以 value 作为开始
作用:匹配附带attr属性的elem元素,并且该属性值是以value作为开始的
7、elem[attr$=value]
$= : 以 value 作为结束
作用:匹配附带attr属性的elem元素,并且该属性值是以value作为结束的
8、elem[attr*=value]
*= : 包含 value 字符即可
3、伪类选择器
1、目标伪类
1、作用
突出显示活动的HTML锚元素。匹配当前页面中活动的HTML锚元素。
2、语法
:target
2、元素状态伪类
1、作用
元素状态 :启用,禁用,被选中(checked)
2、语法
:enabled , 匹配每个已启用元素(表单控件)
:disabled , 匹配每个已禁用元素(表单控件)
:checked , 匹配每个被选中元素(radio,checkbox)
3、结构伪类(重点)
1、:first-child
匹配 属于其父元素中的首个子元素
2、:last-child
匹配 属于其父元素中的最后一个子元素
3、:nth-child(n)
匹配 属于其父元素中的第n个子元素
4、:empty
匹配 没有子元素(包含文本)的每个元素
<div></div>
5、:only-child
匹配属于其父元素中的唯一子元素
<div>
<p>Hello World</p>
</div>
4、否定伪类
1、语法
:not(选择器)
作用:将 满足选择器的元素从指定范围中排除出去
4、伪元素选择器
1、作用
伪类:匹配元素的
伪元素:匹配元素中的内容
2、语法
1、:first-letter 或 ::first-letter
匹配 指定元素的 首字符
2、:first-line 或 ::first-line
匹配 指定元素的 首行
3、::selection
匹配 被用户选取的部分
3、: 和 ::的区别
CSS3之前,所有的伪元素选择器,全部都是 使用 :,ex :first-line,:first-letter
CSS3中,将所有的伪元素选择器全部都升级为 :: , ex ::first-letter, ::first-line
为了能够实现浏览器的兼容性,比较推荐使用 :的写法
2、内容生成
1、什么是内容生成
通过 css 向现有的 元素内容区域中增加一部分内容
2、伪元素选择器
1、:before 或 ::before
匹配到某元素的内容区域之前
<div>(内容区域之前)Hello World</div>
2、:after 或 ::after
匹配到某元素的内容区域之后
<div>Hello World(内容区域之后)</div>
3、属性
属性:content
取值:
1、字符串 : 纯文本
2、url : 图像
3、计数器
4、计数器
1、作用
生成一段有序的数字,并且插入到元素中
2、三步走
1、声明(复位)计数器
1、属性
counter-reset
取值:
1、默认值为 0
2、可以取值为 正数或负数
counter-reset:计数器名称 值;
一次性声明多个计数器:
counter-reset:名1 值1 名2 值2;
2、什么地方声明计数器???
不能放在使用的元素中声明
2、设置计数器的增量
1、属性
counter-increment
作用:设置某个选择器出现的计数器的增量,默认值为1
counter-increment:名称 增量值;
2、什么地方声明计数器增量???
哪个元素使用,就在哪个元素中设置增量
3、使用计数器
1、函数
counter(计数器名称)
配合着 :before 或 :after 一起使用
div:before{
content:counter(name);
}
4、练习
1、倚天屠龙记
1.1 张三丰
1.2 张翠山
1.3 张无忌
1.4 殷素素
2、西游记
2.1 孙悟空
2.2 猪悟能
2.3 沙悟净
2.4 白骨精
3、多列
1、分隔列
1、作用
将一段文本拆分成几列
2、属性
column-count
取值:数字
2、列间隔
1、作用
每两列之间的间隔距离
2、属性
column-gap
取值:px
3、列规则
1、作用
每两列之间增加分割线,并设置分割线的宽度,样式,颜色
2、属性
column-rule : width style color;
4、浏览器兼容性
IE10+,Opear 支持
Firefox : -moz-
Chrome,Safari: -webkit-
4、CSS Hack
1、解决问题
IE各版本浏览器兼容性问题
2、CSS Hack
浏览器的类型及版本不同会造成CSS的解析效果也各不相同
不同厂商浏览器:IE,Chrome,Firefox,Safari
同一厂商浏览器的不同版本:IE6,IE7,IE8,IE9,IE10
3、CSSHack 原理
使用 CSS 样式属性的 优先级 来解决兼容性问题
4、CSSHack 分类
1、CSS类内部Hack
通过 属性前缀或值后缀 的方式来解决兼容性
+ : 被IE6,IE7识别
- : 被IE6 识别
+,-如果同时出现的话,+只针对IE7,-只针对IE6
注意:
IE7的兼容代码 要在上
IE6的兼容代码 要在下
2、选择器Hack
在选择器前加上某些浏览器能识别的前缀
div{
}
*前缀:IE6识别
*+前缀:IE7识别
*div{}
*+div{}
3、HTML头部引用Hack
1、原理
通过IE条件注释 解决兼容性问题
IE浏览器会根据一个if条件判断,判断指定的内容是要被解析还是被注释
2、语法
<!--[if 条件 IE 版本]>
内容
<![endif]-->
版本:6 ~ 10 数字
条件:
1、gt
大于指定版本的浏览器
2、gte
大于等于指定版本的浏览器
3、lt
小于指定版本的浏览器
4、lte
小于等于指定版本的浏览器
5、!
除条件版本以外的其他版本浏览器
ex:
<!--[if gt IE 6]>
该段内容只能在 IE6以上版本的浏览器中显示
<![endif]-->
<!--[if IE 8]>
该段内容只能在IE8中显示
<![endif]-->