css模糊匹配

1、全局选择器

  就是通配符 *

 

2、元素选择器

  如ul li p h1 div等

 

3、类选择器

  如.className{}

 

4、id选择器

  如#identity{}

 

5、属性选择器

CSS2支持的属性选择器用一个表达式[{属性 | 属性 {= | |= | ~=} 值}]

  [class="a"]只能匹配class="a"的元素

[class~="a"]则可以匹配class="a"、class="a b"的元素

[lang|=en]则可以匹配lang="en"、lang="en-us"的元素。

 

CSS3新增*=、^=、$=三种匹配方式[{属性 | 属性 {*= | ^= | $=} 值}]

*=表示模糊匹配,[href="163"]可以匹配href="163.com"、href="mail.163.com"等元素;

^=表示以指定字符开头,[href^="/"]则匹配href="/a/a.htm"、href="/b"的元素

$=表示以指定字符结尾,[scr$=".png"]则匹配所有png图片,如src="logo.png"

 

6、组选择器

简单说就是","选择器,如.className,#identity,td,th,li{},实现代码公用,实际开发过程随处可见。

 

7、关系选择器

    后代选择器即空格" ",匹配父节点所有子孙节点。

 

    子选择器即">",匹配父节点直接子节点。

    下面代码段中,只有ol中的li标签不会被ul>li{}匹配

    <ul>

      <li></li>

      <li>

        <ol>

          <li></li>

        </ol>

      </li>

    </ul>

 

    相邻兄弟选择器即"+",匹配与之相邻、同时拥有相同父节点的节点(如若中间存在文本节点,文本节点将被忽略)。

    下面的第一个p标签将被h1+p{}匹配:

    <h1>我是标题</h1>

    我是纯粹的文本节点

    <p>我是文字</p>

    <p>我也是文字</p>

 

    广义兄弟选择器即"~",匹配位置在其后且具有相同直接父节点的节点。

 

8、伪类选择器

    CSS1支持开始:link :visited :active,但只是提供给a标签使用,而且这三个伪类之间是互斥的,也就是:link:active的组合是不生效的。CSS2新增了:hover :focus,而且不再局限于a标签,到这里我们最熟悉的伪类已悉数上场,下面来分析一下其区别。先来引入一个动态伪类的概念,如:hover :focus :active,也就是说这些伪类是在交互过程中动态添加到目标元素的(动态的状态),与之相对应的就是静态伪类,如:link :visited,表示的是元素的静态的状态。静态伪类和动态伪类内部是互斥的,不能进行组合,而静态和动态之间可以进行组合使用,如a:link:focus{} a:visited:focus{}会生效,而a:visited:link是不生效的。

 

    此外CSS2还支持了:first-child和:lang,需要注意的是:first-child是对元素本身状态的描述,而非其它元素,比如li:first-child的意思是“这个li是第一个子节点”,而非“li元素里面的第一个子节点”,这也是伪类和伪元素容易混淆的原因所在(第九点有说明)。:lang(char)相当于属性选择器[lang|=char],匹配的是带有char(举例)本身及连字符的元素,如char、char-ca、char-be等。

 

    CSS3为我们带来了更加广泛的伪类选择器…待续

 

9、伪元素选择器

  可能很多人会在伪类和伪元素之间迷惑,区别就在:伪类只是对目标元素本身起作用,而伪元素则相当于一个“新”的元素并只对其起作用,所以有的伪元素选择器有content属性,而伪类则没有。举一个最容易混淆的例子p:first-child和p:first-letter,乍一看以为两个都是伪元素,其实不然,:first-child只是对p这个元素属性的一个描述,也就是说这个p是其父级元素的第一个子节点;而:first-letter则是对p下第一个字符(其实也可以看做一个元素)的选择,而非p本身。

 

  包括:CSS1支持的:first-letter :first-line,CSS2支持的:after :before,CSS3并没有新增。伪元素可以和class联合使用。

转载于:https://my.oschina.net/u/2306318/blog/1015413

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值