选择 子元素 和 后代元素
HTML中, 元素 内部可以 包含其他元素, 比如 下面的 HTML片段
<div id='container'>
<div id='layer1'>
<div id='inner11'>
<span>内层11</span>
</div>
<div id='inner12'>
<span>内层12</span>
</div>
</div>
<div id='layer2'>
<div id='inner21'>
<span>内层21</span>
</div>
</div>
</div>
id 为 layer1 和 layer2 的两个div元素 是 id 为 container 的div元素 的 直接子元素
对于 id 为 container 的div元素来说, id 为 inner11 、inner12 、inner22 的元素 和 两个 span类型的元素 都不是 它的直接子元素, 因为中间隔了 几层。
虽然不是直接子元素, 但是 它们还是在 container 的内部, 可以称之为它 的 后代元素
────────────────────────────────────────────────────────────
选择方法
如果 元素2 是 元素1 的 直接子元素, CSS Selector 选择子元素的语法是这样的
元素1 > 元素2
更多层级的选择, 比如
元素1 > 元素2 > 元素3 > 元素4
最终选择元素4
────────────────────────────────────────────────────────────
如果 元素2 是 元素1 的 后代元素, CSS Selector 选择后代元素的语法是这样的
元素1 元素2
更多层级的选择, 比如
元素1 元素2 元素3 元素4
中间是一个或者多个空格隔开
────────────────────────────────────────────────────────────
根据属性选择
(除了id、class其他属性的选择方法)
css 选择器支持通过任何属性来选择元素,语法是用一个方括号 []
<a href="http://www.miitbeian.gov.cn">苏ICP备88885574号</a>
比如要选择上面的a元素,就可以使用 [href="http://www.miitbeian.gov.cn"]
前面也可以加上标签名的限制,比如 ****a [href="http://www.miitbeian.gov.cn"] 表示 选择所有 标签名为 a ,且 属性 href值为 http://www.miitbeian.gov.cn 的元素
CSS 还可以选择 属性值 包含 某个字符串 的元素
比如, 要选择a节点,里面的href属性包含了 miitbeian 字符串,就可以这样写
a[href*="miitbeian"]
还可以 选择 属性值 以某个字符串 开头 的元素
比如, 要选择a节点,里面的href属性以 http 开头 ,就可以这样写
a[href^="http"]
还可以 选择 属性值 以某个字符串 结尾 的元素
比如, 要选择a节点,里面的href属性以 gov.cn 结尾 ,就可以这样写
a[href$="gov.cn"]
如果一个元素具有多个属性
<div class="misc" ctype="gun">沙漠之鹰</div>
CSS 选择器 可以指定 选择的元素要 同时具有多个属性的限制,像这样 div[class=misc][ctype=gun]
────────────────────────────────────────────────────────────
选择语法联合使用
比如, 我们要选择 如下网页中 html 中的元素 版权1 对应的 span
<div id='bottom'>
<div class='footer1'>
<span class='copyright' name='cp1'>版权1</span>
<span class='copyright' name='cp2'>版权2</span>
<span class='copyright1' name='cp1'>版权3</span>
</div>
<div class='footer2'>
<span class='copyright' name='cp1'>版权4</span>
</div>
</div>
CSS selector 表达式 可以这样写:
.footer1 > .copyright[name=cp1]
────────────────────────────────────────────────────────────
组选择
如果我们要 同时选择所有class 为 plant 和 class 为 animal 的元素。怎么办?
这种情况,css选择器可以 使用 逗号 ,称之为 组选择 ,像这样
.plant , .animal
我们要选择所有 唐诗里面的作者和诗名, 也就是选择所有 id 为 t1 里面的 span 和 p 元素
我们是不是应该这样写呢?
#t1 > span,p
不行哦,这样写的意思是 选择所有 id 为 t1 里面的 span 和 所有的 p 元素
只能这样写
#t1 > span , #t1 > p