CSS3选择器–结构性伪类选择器

CSS3选择器–结构性伪类选择器在学习结构性伪类选择器之前,先了解2个概念:CSS中的伪类选择器和伪元素:1、伪类选择器:CSS中已经定义好的选择器,不能随便取名                 常用的伪类选择器是使用在a元素上的几种,如a:link|a:visited|a:hover|a:active2、伪元素选择器:并不是针对真正的元素使用的选择器,而是针对CSS中已经定义好的伪元素使用的选择器      C

大家好,又见面了,我是你们的朋友全栈君。

        在学习结构性伪类选择器之前,先了解2个概念:CSS中的伪类选择器和伪元素:

1、伪类选择器:CSS中已经定义好的选择器,不能随便取名           

      常用的伪类选择器是使用在a元素上的几种,如a:link|a:visited|a:hover|a:active

2、伪元素选择器:并不是针对真正的元素使用的选择器,而是针对CSS中已经定义好的伪元素使用的选择器

      CSS中有如下四种伪元素选择器:

       1)first-line:为某个元素的第一行文字使用样式;

       2)first-letter:为某个元素中的文字的首字母或第一个字使用样式;

       3)before:在某个元素之前插入一些内容;

       4)after: 在某个元素之后插入一些内容;

      使用方法:选择器:伪元素{样式}

      在后续的文章中会详细介绍伪类选择器的具体使用方法,本文主要是要介绍nth-child、nth-last-child、nth-of-type、nth-last-of-type、first-child 、last-child 、first-of-type 、last-of-type、only-child以及only-of-type。结构性伪类选择器的公共特征是允许开发者根据文档结构来指定元素的样式。接下来开始进入正题。

1、nth-child和nth-last-child

     1)E:nth-child(n) 选择器用来定位某个父元素一个或多个特定的子元素。其中“n”是其参数,而且可以是整数值(1,2,3,4),也可以是表达式(2n+1、-n+5)和关键词(odd、even),但参数n的起始值始终是1,而不是0。也就是说,参数n的值为0时,选择器将选择不到任何匹配的元素。比如:

      p:nth-child(n){background:red}  表示E父元素中的第n个字节点
      p:nth-child(odd){background:red}/*匹配奇数行*/
      p:nth-child(even){background:red}/*匹配偶数行*/
      p:nth-child(2n){background:red}/*其中n是从0开始计算*/

      经验与技巧:当“E:nth-child(n)”选择器中的n为一个表达式时,其中n是从0开始计算,当表达式的值为0或小于0的时候,不选择任何匹配的元素。

      例子(Html代码):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p,h1{
            height:30px;
            width:300px;
            border:1px solid #00A2E9;
        }
        p:nth-child(2n){
            background-color: #64b0ff;
        }
    </style>
</head>
<body>
<p>p1</p>
<p>p2</p>
<p>p3</p>
<p>p4</p>
<p>p5</p>
<p>p6</p>
</body>
</html>

   
      效果:

                 CSS3选择器--结构性伪类选择器

      但是某些情况下会有问题,比如我将上面的例子改写成下面:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <style>        p,h1{            height:30px;            width:300px;            border:1px solid #00A2E9;        }        p:nth-child(2n){            background-color: #64b0ff;        }    </style></head><body>    <p>p1</p>    <h1>h1</h1>/*增加了h1标签*/    <p>p2</p>    <h1>h2</h1>/*增加了h1标签*/    <p>p3</p>    <p>p4</p>    <p>p5</p>    <p>p6</p></body></html>

        效果就变成如下图所示,发现p2的样式并没有应用。因为nth-child选择器在计算子元素是第n个元素,是连同所有父元素中所有子元素一起计算的,这样的话,p2其实是第三个元素,但是h1和h2由于没有被选中,所以颜色不变。

               CSS3选择器--结构性伪类选择器
       这个问题 就需要用E:nth-of-type(n) 来解决,后面会详细介绍。

      2)E:nth-last-child(n) 选择器和前面的“E:nth-child(n)”选择器非常的相似,只是这里多了一个“last”,所起的作用和“E:nth-child(n)”选择器有所区别,从某父元素的最后一个子元素开始计算,来选择特定的元素。这里的使用就不举例说明了。

2、E:nth-of-type(n) 和E:nth-last-of-type(n)

    1)“E:nth-of-type(n)”选择器和“E:nth-child(n)”选择器非常类似,不同的是它只计算父元素中指定的某种类型的子元素。当某个元素中的子元素不单单是同一种类型的子元素时,使用“E:nth-of-type(n)”选择器来定位于父元素中某种类型的子元素是非常方便和有用的。在“E:nth-of-type(n)”选择器中的“n”和“E:nth-child(n)”选择器中的“n”参数也一样,可以是具体的整数,也可以是表达式,还可以是关键词。

     刚才的那个例子就可以直接利用这个选择器实现,它可以只选中p元素。

p:nth-of-type(2n){    background-color: #64b0ff;}

     效果图如下,完美的实现了^^。

           
CSS3选择器--结构性伪类选择器


       2)E:nth-last-of-type(n)d(n) 选择器和前面的“E:nth-of-type(n)”选择器非常的相似,只是这里多了一个“last”,所起的作用和“E:nth-of-type(n)”选择器有所区别,从某父元素的最后一个子元素开始计算,来选择特定的元素。这里的使用就不举例说明了。

3、E:first-child和E:last-child

      1)“E:first-child”选择器表示的是选择父元素的第一个子元素的元素E。简单点理解就是选择元素中的第一个子元素,记住是子元素,而不是后代元素。

案例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p,h1{
            height:30px;
            width:300px;
            border:1px solid #00A2E9;
        }
        p:first-child{
            background-color: #64b0ff;
        }
    </style>
</head>
<body>
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
    <p>p4</p>
    <p>p5</p>
    <p>p6</p>
</body>
</html>

      效果图:

            
CSS3选择器--结构性伪类选择器

      2)“E:last-child”选择器与“E:first-child”选择器作用类似,不同的是“E:last-child”选择器选择的是元素的最后一个子元素。

       其他几种结构性伪类选择器这里就不做详细介绍了。这里主要是对比三种选择器。

总结:

       为了方便记忆和查询,把CSS的结构伪类选择器归为四类:
      1)通用子元素过滤器:E:nth-child(n)(顺序过滤)和E:nth-last-child(n)(逆序过滤)
      2)通用子类型元素过滤器:E:nth-of-type(顺序过滤)和E:nth-last-of-type(n)(逆序过滤)
      3)特定位置的子元素:E:first-child,E:last-child,E:first-of-type,E:last-of-type
      4)特定状态的元素:E:root(根节点)、E:only-child(独子元素)、E:only-of-type(独子类型元素)和E:empty(孤节点)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157680.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux中kill命令详解_linux kill函数

    linux中kill命令详解_linux kill函数linuxkill命令详解一、命令格式:kill[参数][进程号]二、命令功能:发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL”参数,其发送的信号为SIGKILL(9),将强制结束进程,使用ps命令或者jobs命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。三、命令参数:-l信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称-a当处理当前进程时,不

    2025年7月1日
    3
  • python Fake 安装使用

    python Fake 安装使用安装Faker使用pip安装pipinstallFaker或者去Faker的PyPI页面下载Wheel或者Source文件进行安装:基本用法fromfakerimportFaker#1fake=Faker()#2fake.name()#3DonnaKellyfake.address()#4519DonnaRiverPortNatalie,SD87384从faker

    2022年10月16日
    2
  • 数值分析(一) 牛顿插值法及matlab代码

    数值分析(一) 牛顿插值法及matlab代码目录数学:数值分析一、牛顿插值法原理1.牛顿插值多项式2.差商2.1定义2.2性质2.3差商表3.牛顿(Newton)插值公式二、牛顿插值公式matlab代码1.matlab实时在线脚本2.牛顿插值代码3.实例三、总结数学:数值分析  刚上完数值分析课在其中学习了不少的知识,课后还做了一些课程实验主要都是利用matlab编程来解决问题,接下先讲插值法中的牛顿插值法一、牛顿插值法原理1.牛顿插值多项式  定义牛顿插值多项式为:Nn(x)=a0+a1(x−x0)+a2(x−x0)(x−

    2022年6月3日
    32
  • Spring AOP详细介绍

    Spring AOP详细介绍AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子。一AOP的基本概念(1)Asp

    2022年7月2日
    25
  • mt4电脑版安装教程_mt4电脑版安装教程

    mt4电脑版安装教程_mt4电脑版安装教程首先是要下载个安装包,可以在qiejf.cn获取。然后按照下方步骤操作即可。步骤1.运行安装文件要安装MetaTrader4平台,您必须通过双击安装文件teletradecy4setup.exe来运行安装文件。步骤2.安装程序-欢迎屏幕安装程序将打开MetaTrader4TeleTradeEU。要继续安装,请单击“下一步”。步骤3.许可协议阅读并接受许可协议,然后单击“下一步”。步骤4.安装选项选择安装文件夹,然后单击“下一步”继续。步骤5.安装

    2022年8月15日
    9
  • java中常见的运行时异常_java五种常见异常

    java中常见的运行时异常_java五种常见异常运行时异常:编译时不会报错,但程序运行起来如果有错误就会报异常。以下为常见的运行时异常:ArithmeticException算数运算异常,由于除数为0引起的异常;ClassCastException类型转换异常,当把一个对象归为某个类,但实际上此对象并不是由这个类创建的,也不是其子类创建的,则会引起异常;ArrayStoreException由于数组存储空间不够引起的异…

    2022年9月1日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号