元素选择器
• 定义:根据标签的名字来从页面中选取指定的元素。
• 语法:标签名 { } eg: p{};h1{}
类选择器
• 定义:根据元素的class属性值选取元素。
• 语法:.className { } (.className 会选中页面所有class属性为className 的元素。)
ID选择器
• 定义:根据元素的id属性值选取元素。
• 语法:#myId { } (#myId 会选中页面中id属性值为myId 的元素,和class属性不同,id属性是不能重复的。)
复合选择器
• 定义:复合选择器,可以同时使用多个选择器,这样可以选择同时满足多个选择器的元素。
• 语法: 选择器1选择器2{}
• 例如:div.box1 会选中页面中具有box1这个class的div元素。
span.box1 会选中页面中具有box1这个class的span元素。
注:对id选择器一般不使用复合选择器,无意义
群组选择器
• 定义:同时使用多个选择器,多个选择器将被同时应用指定的样式。
• 语法:选择器1,选择器2,选择器3 { }
• 例如:p,.hello,#box{}会同时选中页面中p元素,class为hello的元素,id为box的元素。
#p1,.p2,h1{}
通用选择器
• 定义:同时选中页面中的所有元素。
• 语法:*{ }
后代选择器
• 定义:可以根据标签的关系,为处在元素内部的代元素设置样式。
• 语法:祖先元素 后代元素 后代元素 { }
• 例如:p strong{} 会选中页面中所有的p元素内的strong元素。
#d1 span{}会选中页面中所有的id为d1元素内的span元素。
子元素选择器
• 定义:子元素选择器可以给另一个元素的子元素设置样式。
• 语法:父元素 > 子元素{}
• 例如:body > h1将选择body子标签中的所有h1标签。
注:ie6以下 不支持子元素选择器
伪类选择器,伪元素选择器
• 定义:伪类表示一种特殊的状态,当为这种特殊状态设置样式时使用。
• 语法:元素:状态{}
• 例如:a:link {}
伪类和伪元素
有时候,你需要选择本身没有标签,但是仍然易于识别的网页部位,比如段落首行或鼠标滑过的连接。CSS为他们提供一些选择器:伪类和伪元素。伪类表示一种特殊的状态,当为这种特殊状态设置样式时使用。
给链接定义样式
• 正常链接:a:link{} • 访问过的链接:a:visited{}(只能定义字体颜色)
• 鼠标滑过的链接:a:hover{} • 正在点击的链接:a:active{}
其他伪类
• 获取焦点: input:focus{} •选中的元素:p::selection{}
注:火狐中 p::-moz-selection{}
伪元素
• 指定元素前: p:before{} •指定元素后:p:after{}
• 首字母: p:first-letter{} •首行:p:first-line{}
属性选择器
• 定义:属性选择器可以挑选带有特殊属性的标签。
• 语法: [属性名] [属性名="属性值"]
[属性名^="属性值"](以什么开始) [属性名$="属性值"](以什么结尾)
[属性名*="属性值"](包含什么) [属性名~="属性值"]
[属性名|="属性值"]
• 例如:p[title],p[title="hello"],p[title^="ab"](以ab开头)
子元素选择器(补充)
• 定义:子元素选择器可以给当前的子元素设置样式。
• 语法: • 第一个子标签: a:first-child{} •最后一个子标签:a:last-child{}
• 指定位置的子元素: a:nth-child{} •指定类型的子元素:a:first-of-type{}
a:last-of-type{},a:nth-of-type{}
• 例如:a:nth-child(even){} 偶数位置 a:nth-child(odd){} 奇数位置 a:nth-child(3){} 第三个位置
a:first-of-type{}指定a元素类型中的第一个a元素
兄弟选择器
• 定义:除了根据祖先父子关系,还可以根据兄弟关系查找元素。
• 语法:
查找后边一个兄弟元素:兄弟元素 + 兄弟元素{} (注:必须是紧挨的)
查找后边所有的兄弟元素:兄弟元素 ~ 兄弟元素{}
• 例如:span+p{}
否定伪类
• 定义:否定伪类可以帮助我们选择不是其他东西的某件东西。
• 语法: :not(选择器){}
• 例如:比如p:not(.hello)表示选择所有的p元素但是class为hello的除外。
选择器优先级
当使用不同的选择器,选择同一个元素设置同样的样式产生冲突时,由优先级权重来决定
优先级规则
内联样式,优先级1000 id选择器,优先级100 类和伪类,优先级10
元素选择器,优先级1 通配*,优先级0 继承样式,无优先级
注:1.复合选择器中包含多个选择器时,其优先级取其相加,但其优先级不会超过其最大数量级
2.当优先级相同时,取后者为主
3.并集选择器的优先级是单独计算的
4.可以在样式属性设置的最后添加 !important,则此时该样式获得最高优先级,甚至超过内联样式优先级,但在开发中尽量不使用这个。
后续将持续更新补充....