• CSS选择器


    CSS选择器

    CSS的组成

    ​ CSS由以下几部分组成:选择器、{}、声明。

    选择器下面会着重介绍,先来看一下{}和声明,{}代表的就是CSS的样式,几乎所有的样式都会写在{}中,在{}中每一个属性和属性值对应起来的就是一条声明,格式:属性:属性值。一个css可以有一个或多个声明,每个声明之间用分号隔开。

    ​ CSS的写法分为两种:紧凑型、展开型:

    p{color:red;background-color:blue;font-size:18px......} /*紧凑型的样式*/
    
    p {
        color:red;
        background-color:blue;
        font-size:18px;
        .......    
    }  /*展开型的样式*/
    

    这里建议采用展开型的样式。

    CSS选择器

    CSS在给元素添加样式时,首先就是获取元素。只有获取了元素才嫩恶搞会该元素添加样式。因此就需要借助CSS选择器来实现元素的获取。CSS中的选择器有以下几种:

    id选择器——通过元素的id值获取的元素(#)

    ​ id选择器选择的元素必须是唯一的,因为id值在页面中就是唯一的,使用id选择器选择的元素就比较得到准确。例如:

    #page {
    	color: red; //选择id值为page的元素,字体颜色变为红色
    }
    

    类名选择器——通过元素的类名获取元素(.)

    ​ 类名选择器通过类名来选取元素、类名在页面中可以有一个或者多个。例如:

    .page {
    	color: red; //选择类名为page的元素,字体颜色变为红色
    }
    

    元素选择器——通过元素(标签)名获取

    ​ 通过元素名获取元素,这种选择器会把页面中的所有指定的元素名获取到,因此想要获取某个具体的元素,该选择器就不适用。比如:

    p {
        color:red;
     }  /*选取所有的p元素*/
    

    通配符选择器——通过获取页面中的所有元素(*)

    ​ 该选择器在开发过程中不会经常使用,使用它只是做一些页面样式初始化,比如:

    * {
       margin:0;
        padding:0;
    } /*去除页面中所有元素的默认边距*/
    

    属性选择器——通过元素的属性来获取元素([属性])

    ​ 属性选择器的合适分为以下几种:

    类型 描述
    [abc] 选择含有abc属性的元素
    [abc='def'] 选择属性为abc,值为def的元素
    [abc^="def"] 选择 abc 属性值以 "def" 开头的所有元素
    [abc$="def"] 选择 abc 属性值以 "def" 结尾的所有元素
    [abc*="def"] 选择 abc 属性值中包含子串 "def" 的所有元素
    p[id] {
        
    	color: red;/*获取p元素中属性为id的所有元素*/
    }
    
    p[id='page'] {
    	color: blue;/*获取p元素中id值为page的元素*/
    }
    p[id^='abc'] {
        
    	color: green;/*获取id值以abc开头的所有p元素*/
    }
    p[id$='abc'] {
        
    	color: yellow;/*获取id值以abc结尾的所有p元素*/
    }
    p[id*='abc'] {
        
    	color: orange;/*获取id值包含abc的所有p元素*/
    }
    

    伪类选择器

    该类型的选择器已经是定义好的了,因此名字不能改变,最常用的是对链接添加的样式:

    1、a:link(未访问过的链接)

    2、 a:hover(鼠标经过,也就是鼠标指针放在该元素上时)

    3、a:active(当前激活链接,也就是点击鼠标左键时)

    4、a:visited(已访问过)

    下图是一个普通链接的样式:

    未访问时的样式:

    鼠标经过的样式:鼠标会变成小手

    点击鼠标时的样式:

    鼠标访问过后的样式:

    上面的就是超链接的默认样式。可以通过上面的几个伪类选择器对超链接的这些样式进行修改:

      a:link {
    			   color: green;/*未访问的链接颜色为绿色*/
    		   }
    		   a:hover {
    			   font-size: 20px;/*当鼠标移动到a上时字体变大*/
    		   }
    		   a:active {
    			   color: orange;/*鼠标被点击时的样式*/
    		   }
    		   a:visited {
    			   color: crimson;/*点击过后的链接的样式*/
    		   }
    		 
    

    结果:

    注意:他们的顺序也是不能乱的,顺序依次为link、hover、active、visited。

    结构伪类选择器

    ​ 在CSS3中新增的结构伪类选择器更容易选取元素,具体的选择器如下;

    选择器 功能描述 版本
    E:last-child 选择父元素的倒数第一个子元素E,相当于E:nth-last-child(1) 3
    E:nth-child(n) 选择父元素的第n个子元素,n从1开始计算 3
    E:nth-last-child(n) 选择父元素的倒数第n个子元素,n从1开始计算 3
    E:first-of-type 选择父元素下同种标签的第一个元素,相当于E:nth-of-type(1) 3
    E:last-of-type 选择父元素下同种标签的倒数第一个元素,相当于E:nth-last-of-type(1) 3
    E:nth-of-type(n) 与:nth-child(n)作用类似,用作选择使用同种标签的第n个元素 3
    E:nth-last-of-type 与:nth-last-child作用类似,用作选择同种标签的倒数第一个元素 3
    E:only-child 选择父元素下仅有的一个子元素,相当于E:first-child:last-child或E:nth-child(1):nth-last-child(1) 3
    E:only-of-type 选择父元素下使用同种标签的唯一子元素,相当于E:first-of-type:last-of-type或E:nth-of-type(1):nth-last-of-type(1) 3
    E:empty 选择空节点,即没有子元素的元素,而且该元素也不包含任何文本节点 3
    E:root 选择文档的根元素,对于HTML文档,根元素永远HTML 3

    【注意】

    1、结构伪类选择器很容易遭到误解,需要特别强调。如,p:first-child表示选择父元素下的第一个子元素 p,而不是选择 p 元素的第一个子元素。

    2、需要注意的是,结构伪类选择器中,子元素的序号是从 1 开始的,也就是说,第一个子元素的序号是 1,而不是 0。换句话说,当参数 n 的计算结果为 0 时,将不选择任何元素。

    3、所有的结果伪类选择器当中都有一个冒号,这个冒号前面的表示选取的元素,冒号后面的是选择元素指定的位置。

    :first-child、last-child、:ntc-child(n)

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<meta name="viewport" content="width=device-width, initial-scale=1">
    		<title></title>
    		<style type="text/css">
    		  /*将第一个li元素的字体颜色设置为红色*/
    		  .ul1 li:nth-child(1) {  /*等价于ntc-child(1)*/
    			  color: red;
    		  }
    		  /*设置最后一个元素的字体颜色为蓝色*/
    		  .ul1 li:nth-child(5) {  /*等价于ntc-child(5)*/
    			  color: blue;
    		  }
    		  /*设置ul中的第3个元素的字体颜色为绿色*/
    		  .ul1 li:nth-child(3) {  
    			  color: green;
    		  }
    		</style>
    	</head>
    	<body>
    	<ul class="ul1">
    		<li>我是第一个元素</li>
    		<li>我是第二个元素</li>
    		<li>我是第三个元素</li>
    		<li>我是第四个元素</li>
    		<li>我是第五个元素</li>
    	</ul>
    	</body>
    </html>
    

    结果:

    :first-of-type、last-of-type、nth-of-type:

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<meta name="viewport" content="width=device-width, initial-scale=1">
    		<title></title>
    		<style type="text/css">
    		  /*将第一个li元素的字体颜色设置为红色*/
    		  .ul1 li:first-of-type {  /*等价于ntc-child(1)*/
    			  color: red;
    		  }
    		  /*s设置最后一个元素的字体颜色为蓝色*/
    		  .ul1 li:last-of-type {  /*等价于ntc-child(5)*/
    			  color: blue;
    		  }
    		  /*设置ul中的第3个元素的字体颜色为绿色*/
    		  .ul1 li:nth-of-type(3) {  
    			  color: green;
    		  }
    		</style>
    	</head>
    	<body>
    	<ul class="ul1">
    		<li>我是第一个元素</li>
    		<li>我是第二个元素</li>
    		<li>我是第三个元素</li>
    		<li>我是第四个元素</li>
    		<li>我是第五个元素</li>
    	</ul>
    	</body>
    </html>
    

    上诉代码同样和上面的结果相同。对于列表来说。使用上述的几个方法都可以。

    nth系列的选择器和type系列的选择器的区别:

    点击这里来查看

    伪元素选择器

    ​ 伪元素选择器选择的并不是一个元素,而是元素中的一部分内容。常用的方法如下:

    选择器 说明
    :first-inline 设置文本中的第一行
    :first-letter 设置文本中的第一个字符
    :before 向指定的元素前面添加元素
    :after 向指定的元素后面添加元素

    组合性选择器

    ​ 选择器可以单独使用,也可以组合起来使用,常见的组合性选择器有以下几种:

    派生选择器(上下文选择器)

    后代选择器

    element1 element2 {......}:后代选择器——选择element1下面的所有element2

    【注意】:选择器的作用都是选择元素,为其添加样式。后代选择器有两个单独的或者组合的选择器组成,选择的是前面指定元素的所有子元素,比如

    ul li {......}/*选择的是ul元素中的所有li元素*/
    div a {......}/*选择div元素中的所有a元素*/
    div article ul p {.......}/*选择div中的article中的ul中的所有的p元素*/
    /*后代选择器只要是满足条件的,不管是在哪个位置都能选择上*/
    

    可以看一下下面的代码:

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<meta name="viewport" content="width=device-width, initial-scale=1">
    		<title></title>
    		<style type="text/css">
    			.ul li {  /*后代选择器可以选择符合条件的任意子孙元素 元素之间没有间隔*/
    				color: red;
    			}
    		</style>
    		
    	</head>
    	<body>
    		<ul class="ul">
    			<li>老大</li>
    			<li>老二</li>
    			<li>老三</li>
    			<li>老四</li>
    			<li>
    				<ul>
    					<li>这里是嵌套的li元素,也会变为红色</li>
    				</ul>
    			</li>
    		</ul>
    		
    		<ul>
    			<li>这里的文字颜色不需要添加</li>
    			<li>这里的文字颜色不需要添加</li>
    			<li>这里的文字颜色不需要添加</li>
    			<li>这里的文字颜色不需要添加</li>
    		</ul>
    	</body>
    </html>
    

    结果:

    子元素选择器

    element1 > element2: 选择element1下面的element2,规定element2为element1的第一级子元素

    同样以上面的代码为例,我们将后代改为子元素选择器:

    .ul > li 
    

    结果:

    相邻兄弟选择器

    element1 + element2:选择element1旁边的element2元素,规定element1和lement2为相邻兄弟元素 :

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<meta name="viewport" content="width=device-width, initial-scale=1">
    		<title></title>
    		<style type="text/css">
    			.ul + p { 
    				color: blue;
    			}
    		</style>
    	</head>
    	<body>
    		
    		<ul class="ul">
    			<li>老大</li>
    			<li>老二</li>
    			<li>老三</li>
    			<li>老四</li>
    		</ul>
    		<p>文本</p>
    	</body>
    </html>
    

    结果:

    并集选择器:

    element1,elment2......{}:几个元素一起选择。

    p,
    a,
    h4 {
    	color: red;
    }/*选择p、a’h4三个元素*/
    

    当然选择器的组合有很多的,这里主要介绍以上几种。

  • 相关阅读:
    Unity3D中AssetBundle应用
    C++智能指针 auto_ptr、shared_ptr、weak_ptr和unique_ptr
    C++枚举类型Enum及C++11强枚举类型用法
    C++强制类型转换
    Git使用(二、分支的创建和上传)
    Git使用(一、TortoiseGit和Gitlab在Windows下的项目库创建和上传)
    UE4行为树
    软件光栅器实现(四、OBJ文件加载)
    软件光栅器实现(三、裁剪)
    软件光栅器实现(二、VS和PS的运作,法线贴图,切空间的计算)
  • 原文地址:https://www.cnblogs.com/qmlove/p/13323214.html
Copyright © 2020-2023  润新知