[学习笔记][css]选择器

元素选择器

<h1>h1</h1>
<h2>h2</h2>
<h3>h3</h3>
h1{}
h2{}
h1,h2,h3{}

通配符:* 通配所有原元素

类选择器

<p class="c1 c2">c1c2</p>
.c1{}
.c2{}
.c1 .c2{}

ID选择器

<p id="i1">i1</p>
#i1{}

属性选择器

简单属性选择

选择有某个属性的元素,不论该元素的值是什么

<h1 class="n1">h11</h1>
<h1 class="n2">h12</h2>
<h1 class="n3">h13</h2>
h1[class]{}

根据具体属性值选择

有特性属性值的元素

<h1 class="n1 n2">h11</h1>
<h1 class="n2">h12</h2>
h1[class="n1 n2"]{}
h1[class="n2"]{}

注意:这是一个完全串匹配,所以以上两条规则分别对应上面的两个h1元素

根据部分属性值选择

有特性属性值的元素

<h1 class="n1 n2">h11</h1>
<h1 class="n2">h12</h2>
h1[class~="n2"]{}

根据属性值中穿线的一个用空格分隔的词来完成选择
注意:一条规则匹配了两个h1元素,等价于h1 .n2{}

  • [class^=”n2”] class属性值以n2开头的所有元素
  • [class~=”n2”] class属性值以n2结尾的所有元素
  • [class~=”n2”] class属性值中包含字串n2的所有元素(注意,对这种字串选择器提供支持的浏览器)

特定属性选择类型

*[lang|="n2"]{}

lang属性等于n2或者以n2-开头的所有元素

文档结构

后代选择器

<h1>xxxx<em>yyyy</em></h1>
h1 em{}

注意:两个元素的层次间隔可以是无限的,比如

<h1>xxxx<span><em>yyyy</em></span></h1>

子元素选择器

<h1>h1<em>em</em></h1>
h1>em{}

相邻兄弟元素选择器

<ol>
<li>1</li>
<li>2</li>
<li>3</li>
</ol>
li+li{}

紧接在一个元素后出现的元素,两者具有共同父元素
这里选中了第二个和第三个li

伪类和伪元素

伪类

链接伪类

伪类名描述
:link作为超链接(有href属性)并指向一个未访问的地址的所有锚
:visited作为已访问地址超链接的锚
a{}
a:link{}
a:visited{}

注意
:link的使用可以防止样式被用到没有设置href属性的锚上
这两个伪类都是静态的,第一次显示之后不会再改变文档的样式

body的属性中有link和vlink,分别来设置指向未访问链接的锚的颜色和已访问链接的锚的颜色,不过兼容性较差(在 HTML 4.01 中,不赞成使用 body 元素的 vlink 属性;在 XHTML 1.0 Strict DTD 中,不支持 body 元素的 vlink 属性。)

<body link="red" vlink="blue">
<a href="a.html">1</a>
<a href="b.html">2</a>
</body>

动态伪类

伪类名描述
:focus当前拥有输入焦点的元素
:hover鼠标指针停留的元素
:active用户输入激活的元素

注意
动态伪类可以应用的任何元素

body的属性中有alink,用来设置激活链接的颜色,不过兼容性依然差(在 HTML 4.01 中,不赞成使用 body 元素的 vlink 属性;在 XHTML 1.0 Strict DTD 中,不支持 body 元素的 vlink 属性。)

选择第一个子元素

作为第一个子元素的元素

<body>
<div>
<p>p</p>
<ul>
<li>1</li>
<li>2</li>
</ul>
</div>
</body>
p:first-child{}/*作为第一个子元素的p元素*/
li:first-child{}/*作为第一个子元素的li元素*/

根据语言选择

*:lang(fr){}/*括号里是语言(法语)*/

伪元素

设置首字母样式

p:first-letter{}

用于设置一个块级元素首字符的样式

可以运用的属性:

  • font
  • color
  • background
  • margin
  • padding
  • border
  • text-decoration
  • vertical-align (仅当 float 为 none 时)
  • text-transform
  • line-height
  • float
  • clear

设置第一行样式

p:first-line{}

用于每一段所显示的第一行文本

可以运用的属性:

  • font
  • color
  • background
  • word-spacing
  • letter-spacing
  • text-decoration
  • vertical-align
  • text-transform
  • line-height
  • clear

设置之前之后元素的样式

p:before{content:"begin";color:red;}
p:after{content:"end";color:red;}

用于在元素前后插入内容并设置此内容的样式

特殊性

选择器的特殊性依据如下规则确定:

  • 内联样式的特殊性为 1.0.0.0
  • ID选择器的特殊性为 0.1.0.0
  • 类或者伪类的特殊性为 0.0.1.0
  • 元素和伪元素的特殊性为 0.0.0.1
  • 结合符和通配选择器对特殊性没有贡献,结合符是没有特殊性,通配选择器为0
    从左到右进行比较排序。(1.0.0.0>0.22.22.22)

注意:

  • 属性选择器([id=”xxx”])和ID选择器不同,特殊性为0.0.1.0
  • 重要性采用!important,重要性声明与非重要性声明冲突,重要性声明胜出

继承

元素的属性值只会向下传递,不会向上(例外:body元素的背景样式可以传递到html,相应的定义其画布)。

注意:

  • 框模型属性不能继承(外边距,内边距,背景和框)
  • 继承的值没有特殊性,比0更不如,也就是说通配符比它特殊性高,用户代理的样式比它高

层叠

应用规则的顺序

  1. 权重与来源
    读者重要声明>创作者重要声明>创作者不重要声明>读者不重要声明>用户代理声明
  2. 特殊性排序
  3. 顺序排序(最后的胜出)

注意:css2中认为内联样式和ID选择器特殊性相同为1.0.0,且出现顺序在最后

链接样式顺序:link-visited-hover-active(LVHA)
非CSS表现提示(如font元素),特殊性为0,并出现在创作人员样式表最前面,除了用户代理其他都可以将其覆盖。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值