• js选择器使用


    一. css规则的分类

    css的顶层样式表由两种规则组成的规则列表构成,一种被称为at-rule,也就是at规则,另一种是qualified rule,也就是普通规则。

    at-rule由一个@关键字和后续的一个区块组成,如果没有区块则以分号结束。这些at规则正是掌握css一些高级特性所必须的内容。

    普通规则也就是我们所熟知的规则,由选择器和属性指定构成的规则。

    1.1  at规则

     @charset

        用于提示css文件使用的字符编码方式,它如果被使用,必须出现在最前面,这个规则只在语法解析阶段前使用,并不影响页面上的展示效果。

        

    //示例
    
    @charset  "utf-8";
    

      

    @import

        用于引入一个css文件,除了@charset规则不会被引入, @import可以引入另一个文件的全部内容。

    //示例
    
    @import "mystyle.css";
    @import ulr("mystyle.css");
    

    1.2  普通规则

     普通规则主要由选择器和声明区块构成。声明区块又由属性和值构成。

    //类选择器
    
    . myclass {
    
         height: 200px;
         widht: 300px;
    
    }
    

      1.2.1 选择器

           选择器的基本意义是:根据一些特征,选中元素树上的一批元素。

            选择器由简单到复杂可以分为:

            简单选择器: 针对某一特征判断是否选中元素。

            复合选择器: 连续写在一起的简单选择器,针对元素自身特征选择单个元素。

            复杂选择器: 有“(空格)”, “ > ” , "~" , " + ", "||" 等符号连接的复合选择器,根据父元素或者前序元素检查单个元素。

            选择器列表: 由逗号分隔的复杂选择器,表示“或”关系。

             简单选择器:

                 类型选择器:根据一个元素的标签名来选中元素。

                     

    // 所有div背景颜色蓝色
    
      div {
    
          background-color: blue;
    
      }
    
    
      <html>
         <head></head>
    
         <body>
    
             <div>
                  我是div1
             </div>
    
            <div>
                  我是div2
            </div>
    
             <div>
                  我是div3
             </div>
        </body>
    
      </html>    
    

        使用样式前:

               

            使用样式后:

            

                 全体选择器:可以选中任意元素,用法跟类型选择器完全一致。

                  id选择器:  针对特定属性的选择器, "#" 号后面跟随id名

                  类选择器: 针对特定属性的选择器, "." 号后面跟随class名

                  属性选择器: [att] ,  [att = val] , [att~=val], [att|=val] ,[att*]

                  伪类选择器: 以冒号开头,分为普通型和函数型两种

                 

    属性选择器: 

    [id] {
    
       background-color: blue;
    
    }
    
    
    <html>
      <head></head>
    
       <body>
          <div id = "div1">我是div1</div>
          <div>我是div2</div>
          <div id = "div3">我是div3</div>
       </body>
    
    </html>
    

      测试结果:

               

    [id = div1] {
    
       background-color: blue;
    
    }
    
    
    <html>
      <head></head>
    
       <body>
          <div id = "div1">我是div1</div>
          <div>我是div2</div>
          <div id = "div3">我是div3</div>
       </body>
    
    </html>
    

      测试结果:

    [att~=val]: 表示属性的值是以空格分隔开来的

    [id ~= div1] {
    
       background-color: blue;
    
    }
    
    
    <html>
      <head></head>
    
       <body>
          <div id = "div1  div5">我是div1</div>
          <div>我是div2</div>
          <div id = "div3">我是div3</div>
       </body>
    
    </html>
    

      

     测试结果:

     [att^=val]  :表示val是以div开头

    [id  ^= div] {
    
       background-color: blue;
    
    }
    
    
    <html>
      <head></head>
    
       <body>
          <div id = "div1  div5">我是div1</div>
          <div>我是div2</div>
          <div id = "div3">我是div3</div>
       </body>
    
    </html>
    

     测试结果: 

     [att |= val] : 属性等于val或者以val-开头

    [id  |= div3] {
    
       background-color: blue;
    
    }
    
    
    <html>
      <head></head>
    
       <body>
          <div id = "div1  div5 div3">我是div1</div>
          <div>我是div2</div>
          <div id = "div3">我是div3</div>
          <div id = "div3-">我是div4</div>
       </body>
    
    </html>
    

      测试结果:

        伪类选择器:以冒号开头,分为普通型和函数型两种

         树结构关系伪类选择器: 

                  nth-child: 

                  

    	   <style type="text/css">
    	   
    	        div:nth-child(2n + 1) {
    			    background-color: blue;
    			}
    		  
    	   </style>
    
        <html>
    	
           <head></head>
    
            <body>
                  <div id = "div3 div5">
                  我是div1
             </div>
    
            <div>
                  我是div2
            </div>
    
             <div id = "div3"> 
                  我是div3
             </div>
    		 
             <div id = "div3-ch"> 
                  我是div4
             </div>
    
           </body>
    
       </html>
    

      测试结果:

               

                :first-child 和 :last-child分别表示第一个和最后一个元素 

                 :nth-last-child: 和nth-child的区别是从后向前数。

                 of-type系列,是一个变形的语法糖,nth-of-type 和 nth-child一样,以此类推,nth-last-of-type, first-of-type, last-of-type

                链接与行为伪类选择器

                :any-link 表示任意的链接,包括a, area 和 link标签都可能匹配到这个伪类

                 :link表示未访问过的链接,:visited表示已经访问过的链接

                  

     <style type="text/css">
    	   
    			a:link {
    				background-color: blue;
    			}	
    		  
     </style>
    
    <html>
    
        <head></head>
    
        <body>
               
              <div id = "div3 div5">
                  我是div1
    			  <a href="#">空链接<>
    			  
    			  <a href="https://www.baidu.com" >我是指向百度的</a>
    			  
    			  <input id="abc" type="text"></input>
    			  
    			  <input type="button" value="我是一个按钮"></input>
             </div>
    
            <div>
                  我是div2
    			   <a href="https://www.souhu.com" >我是指向百度的</a>
    			  <link rel="help" >帮助页面</link>
            </div>
    
             <div id = "div3"> 
                  我是div3
             </div>
    		 
             <div id = "div3-ch"> 
                  我是div4
             </div>
    
    
         </body>
    
    </html>
    

      

                 测试结果:

                  

              :hover表示悬停之上的元素,可以用于 div, a, input

               

      <style type="text/css">
    	   
    	       
    			a:hover {
    				background-color: blue;
    			}
    			
    			div:hover {
    				background-color: blue;
    			}
    			
    			input:hover {
    				background-color: blue;
    			}
    		  
    		  
    	   </style>
    
    <html>
    
     <body>
    	
    	  <div id = "div3 div5">
                  我是div1
    			  <a href="#">空链接<>
    			  
    			  <a href="https://www.baidu.com" >我是指向百度的</a>
    			  
    			  <input id="abc" type="text"></input>
    			  
    			  <input type="button" value="我是一个按钮"></input>
             </div>
    
            <div>
                  我是div2
    			   <a href="https://www.souhu.com" >我是指向百度的</a>
    			  <link rel="help" >帮助页面</link>
            </div>
    
             <div id = "div3"> 
                  我是div3
             </div>
    		 
             <div id = "div3-ch"> 
                  我是div4
             </div>
    
    	
    	</body>
    
    </html>
    

      测试结果:

               

          :active 表示用户正在激活这个元素,可以用于 input, a标签

           

    <style type="text/css">
    	  
    			a:active {
    				background-color: blue;
    			}
     </style>
    
    <html>
    
    <head></head>
    
    <body>
    
     <div id = "div3 div5">
                  我是div1
    			  <a href="#">空链接<>
    			  
    			  <a href="https://www.baidu.com" >我是指向百度的</a>
    			  
    			  <input id="abc" type="text"></input>
    			  
    			  <input type="button" value="我是一个按钮"></input>
             </div>
    
            <div>
                  我是div2
    			   <a href="https://www.souhu.com" >我是指向百度的</a>
    			  <link rel="help" >帮助页面</link>
            </div>
    
             <div id = "div3"> 
                  我是div3
             </div>
    		 
             <div id = "div3-ch"> 
                  我是div4
             </div>
    
    
    </body>
    
    
    </html>
    

      测试结果:

      :focus 表示焦点落在这个元素之上,可以是点中一个输入框,或者点中一个按钮。

     <style type="text/css">
    	  
    			
    			input[type=text]:focus {
    				background-color: blue;
    			}
    			
    		
     </style>
    
    <html>
    
       <head></head>
    
       <body>
           
           <div id = "div3 div5">
                  我是div1
    			  <a href="#">空链接<>
    			  
    			  <a href="https://www.baidu.com" >我是指向百度的</a>
    			  
    			  <input id="abc" type="text"></input>
    			  
    			  <input type="button" value="我是一个按钮"></input>
             </div>
    
            <div>
                  我是div2
    			   <a href="https://www.souhu.com" >我是指向百度的</a>
    			  <link rel="help" >帮助页面</link>
            </div>
    
             <div id = "div3"> 
                  我是div3
             </div>
    		 
             <div id = "div3-ch"> 
                  我是div4
             </div>
    
       </body>
    
    </html>
    

      测试结果:

       

        逻辑伪类选择器

        

         :not伪类  示例中表示没有鼠标悬浮在上面的a标签背景颜色设置为蓝色

     <style type="text/css">
    			
    			a:focus(:hover) {
    				background-color: blue;
    			}	
    		
     </style>
    	
    <html>
    
    <head></head>
    
     <body>
    	
    	  <div id = "div3 div5">
                  我是div1
    			  <a href="#">空链接<>
    			  
    			  <a href="https://www.baidu.com" >我是指向百度的</a>
    			  
    			  <input id="abc" type="text"></input>
    			  
    			  <input type="button" value="我是一个按钮"></input>
             </div>
    
            <div>
                  我是div2
    			   <a href="https://www.souhu.com" >我是指向百度的</a>
    			  <link rel="help" >帮助页面</link>
            </div>
    
             <div id = "div3"> 
                  我是div3
             </div>
    		 
             <div id = "div3-ch"> 
                  我是div4
             </div>
    
    	
    	</body>   
    
    </html>
    

      测试结果:

         

         其他伪类选择器

           用于处理table的列的伪类

           :nth-col  ,  :nth-last-col

            用nth-child实现表格样式

            

      <style type="text/css">
    			
    		     table tr td:nth-child(even) {
    			    background-color: blue;
    			 }
    			
     </style>
    
    
    <html>
        <body>
    	
    	    <table border="1">
    		
    		   <tr>
    		     <td>1行1列</td>
    			  <td>1行2列</td>
    			   <td>1行3列</td>
    		   </tr>
    		   
    		   <tr>
    		     <td>2行1列</td>
    			  <td>2行2列</td>
    			   <td>2行3列</td>
    		   </tr>
    		   
    		   <tr>
    		     <td>3行1列</td>
    			  <td>3行2列</td>
    			   <td>3行3列</td>
    		   </tr>
    		</table>
    
    	
    	</body>
    
    </html>
    

      测试结果:

           

     复杂选择器

        

          “ (空格) ”,“ > ”, " ~ ", " + ", " || "

           "空格" : 父类选择器

           

    <html>
    	<head>
    	   <title>标签使用</title>
    	   
    	   <style type="text/css">
    	   
    			#div1 a {
    			
    			   background-color: yellow;
    			}
    		  
    	   </style>
    	   
    	</head>
    
        <body>
    	
            <div id="div1">
    		    <a href="#">我是一个a标签</a>
    			
    			<div>我是一个div
    			   <a href="#">我是第二个a标签</a>
    			   <input type="text">我是一个输入框</input>
    			</div>
    		</div>
    	
    	</body>
    
    </html>
    

      测试结果:

     

         “>” 子类选择器

       

    <html>
    	<head>
    	   <title>标签使用</title>
    	   
    	   <style type="text/css">
    	   
    			#div1 > a {
    			
    			   background-color: yellow;
    			}
    		  
    	   </style>
    	   
    	</head>
    
        <body>
    	
            <div id="div1">
    		    <a href="#">我是一个a标签</a>
    			
    			<div>我是一个div
    			   <a href="#">我是第二个a标签</a>
    			   <input type="text">我是一个输入框</input>
    			</div>
    		</div>
    	
    	</body>
    
    </html>
    

      测试结果:

      "~" 后继,表示选中元素的后一个元素,这个元素必须与选中元素同一个父类

           

    <html>
    	<head>
    	   <title>标签使用</title>
    	   
    	   <style type="text/css">
    	   
    			#div1 > a ~ div {
    			
    			   background-color: yellow;
    			}
    		  
    	   </style>
    	   
    	</head>
    
        <body>
    	
            <div id="div1">
    		    <a href="#">我是一个a标签</a>
    			
    			<div>我是一个div
    			   <a href="#">我是第二个a标签</a>
    			   <input type="text">我是一个输入框</input>
    			</div>
    		</div>
    	
    	</body>
    
    </html>
    

      测试结果:

       “+” 直接后继

    <html>
    	<head>
    	   <title>标签使用</title>
    	   
    	   <style type="text/css">
    	   
    			#div1 > a + div {
    			
    			   background-color: yellow;
    			}
    		  
    	   </style>
    	   
    	</head>
    
        <body>
    	
            <div id="div1">
    		    <a href="#">我是一个a标签</a>
    			
    			<div>我是一个div
    			   <a href="#">我是第二个a标签</a>
    			   <input type="text">我是一个输入框</input>
    			</div>
    			
    			<div>我是第二个div
    			   <a href="#">我是第二个a标签</a>
    			   <input type="text">我是一个输入框</input>
    			</div>
    		</div>
    	
    	</body>
    
    </html>
    

      测试结果:

    组合选择器的优先级

       无连接符号  >  "空格",">","+","~","||" > “,”

    示例:

     .c,.a>.b.d{

    }

    可以理解成 .c   和  .a>.b.d;  .a>.b.d又分成 .a  和 .b.d

    选择器的优先级

     id选择器  >  伪类选择器和类选择器  >  伪元素选择器和标签选择器

    同一优先级的选择器遵循后面的覆盖前面的,行内属性的优先级永远高于css规则,浏览器提供一个“口子”,就是在选择器前加上"!important"这个用法非常危险,它相当于一个新的优先级,而且此优先级会高于行内属性。

    伪元素


    ::first-line  , ::first-letter , ::before , :: after

    ::first-line 把第一行的字母颜色变成黄色,而且必须出现在最内层块级元素。

    <html>
    <head>
    <title>标签使用</title>

    <style type="text/css">

    p::first-line{

    color: yellow;
    }

    </style>

    </head>

    <body>

    <div id="div1">

    <span>的空间的大家看大家都大家看大家都健康的时间开始</span><br/>
    <span>的空间的大家看大家都大家看大家都健康的时间开始</span>
    <p>大家看了大家都时间了大家谁看得见大家看了几点睡的打卡<br/>
    记录打开数据多久了时间的大家看手机多久了大家手机打开了手机</p>

    </div>

    </body>

    </html>

      测试结果:

     ::before 和 ::after

    这两个伪元素和前面不同的是,它不是把已有的内容套上一个元素,而是真正的无中生有,造成一个元素。

    <html>
    	<head>
    	   <title>标签使用</title>
    	   
    	   <style type="text/css">
    	   
    			p.special::before{
    			   display: block;
    			   content: "pseudo! ";
    			}
    		  
    	   </style>
    	   
    	</head>
    
        <body>
    	
            <div id="div1">
    		   
    		    <p class="special">I'm  real element</p>
    		   
    		</div>
    	
    	</body>
    
    </html>
    

      测试结果:

  • 相关阅读:
    深入浅出Google Android这本书怎么样
    iPhone开发实战这本书怎么样
    POST数据提交,关于System.Web.HttpUtility.HtmlEncode与System.Web.HttpUtility.UrlEncode的区别
    强烈推荐领域驱动设计与模式实战
    重构HTML: 改善Web应用的设计这本书怎么样
    关于C#与VB.NET网络通信开发实战的读后感
    关于Flex 3权威指南的读后感
    关于iPhone游戏编程实例的读后感
    强烈推荐iPhone开发秘籍
    强烈推荐高效程序员的45个习惯:敏捷开发修炼之道
  • 原文地址:https://www.cnblogs.com/wangguangjian/p/12579759.html
Copyright © 2020-2023  润新知