web前端的恐怖之旅(2):CSS选择器

一,CSS存放位置

  1. 行内标签(不利于维护,耦合度高, 让代码变的非常臃肿)

      <p style="color: red;font-size: 15px">我是一个p标签</p>
    
  2. 内部style标签(写在head标签内的style标签内,通过选择器控制,也有一定耦合度)

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
          .p1{
              color: yellow;
              font-size:20;
              background-color:red;
          }
    </style>
    </head>
    <body>
    <p class="p">我是一个段落标签</p>
    </body>
    </html>
    

    样式 = 选择器 + {}(声明)

    ​ 写在标签内部的属性 是html属性

    ​ 写在style标签内的的 是css属性

  3. 外部样式(开发常用,利于查看标签的样式)

     <link rel="stylesheet" href="相对路径">	  
     
     rel : 声明文档类型:层叠样式表(css)
     
     css层叠样式表:下面相同的属性会覆盖上面的属性,优先级高的覆盖优先级低的;
    

    css文件配置:

    • @charset "utf-8";
      
      p{
          color:red;				/*字体颜色*/
          background-color:red;	/*背景颜色*/
      }
      ......
      
二,CSS选择器

  1. 标签选择器

    <style>
    	p{
            color:red;
            background-color:blue;
    	}
    </style>
    <p>我是p标签</p>
    
    <!--标签选择器:通过标签名字选择标签-->
    
  2. id选择器(控制单个标签)

    <style>
    	#p1{
            color:red;
            background-color:blue;
    	}
    </style>
    ...
    <p id="p1">我是p标签</p>
    
    <!--id选择器:通过id名字选择标签,具有唯一性-->
    
  3. 类名选择器(控制多个标签相同的元素 )

    <style>
    	.p1{background-color:blue;}
        .p2{color:blue;}
        .p3{color:green;}
    </style>
    ...
    <p class="p1 p2">我是p标签</p>	<!--拥有p1选择器的背景颜色和p2选择器的字体颜色-->
    <p class="p1 p2">我是p标签</p>  <!--拥有p1选择器的背景颜色和p3选择器的字体颜色-->
    
    <!--类名选择器:可以控制多个标签-->
    <!--相同类名控制相同样式,不同类名控制不同样式-->
    <!--若一个标签属于有多个类名,处在后面的类名里的样式会覆盖与前面类名相同的样式-->
    
  4. 通配符(全)选择器

    <style>
        *{border:px solid red;}
    </style>
    
    <!--所有的标签都会被选择,但是优先级是最低的-->
    
     总结:1. 三种样式的优先级:行内样式>外部样式=内部样式(内外部样式优先级相同,能相互覆盖)
     
     ​	    2. 选择器优先级:id选择器>类名选择器>tag(标签)选择器>全选择器
     
     ​	    3. 优先级高的选择器里的样式,会覆盖优先级低的选择器里的相同的样式!(剩下的继承下来)
     
     ​	    4. 若一个标签有多个类名,处在后面的类名里的样式会覆盖与前面类名相同的样式
    

选择器命名规则:

​		1. 见名知意 看到名字就知道这个标签的作用;
​		2. 不能用拼音,中文,也不能数字开头,也不要用特殊符号
​		3. 建议英文小写开头
​		4. -连词符号(_不建议使用),第二个英文单词开头大写,searchBar:驼峰命名
​		5. 不能命名带有广告等英文的单词,如:ad,adv,adver,advertising,防止被过滤
三,组合选择器(各种选择器配合使用)

  1. 后代选择器(作用于儿子,孙子,真孙…)

    <style>
        p span{				/*后代选择器,作用于p标签里 包括span标签在内的所有后代标签*/
            color:red;
        }
        body span{			/*后代选择器,代表body标签的后代 span标签在内的所有后代*/
            color:red;
        }
        .p1 span{
            color:blue;
        }
        .p1 #span p1{
            ......   
        }
    </style>
    ...
    <p>我是p标签 <span>我是span标签</span> </p>
    <p class="p1">我是p标签<span>我是span标签</span></p>
    <p>我是p标签</p>
    <span>我是span标签</span>
    
    <!--只有是p标签里的span标签和span标签的后代才会发生变化-->
    
  2. 子代选择器(只控制子元素)

    <style>
        p>span{				/*子代选择器,只作用于p标签的儿子 span标签 */
            color:red;
        }
        body>span{			/*子代选择器,只作用于body标签的的儿子 span标签*/
            color:red;
        }
        #p1>span{
            color:blue;
        }
    </style>
    <p>我是p标签 <span>我是span标签</span> </p>
    <p id="p1">我是p标签<span>我是span标签</span></p>
    <p>我是p标签</p>
    <span>我是span标签</span>
    
  3. 邻居选择器

    <style>
        p + span{
            background-color:red;
        }
    </style>
    <p>我是p标签 <span>我是span标签</span> </p>
    <p>我是p标签</p>
    <p>我是p标签</p>
    <span>我是span标签</span>
    <p>我是p标签</p>
    
    <!--作用于p标签(不含)下面的单个邻居span标签--><!--若有连续的span标签,一起作用-->
    
  4. 兄弟选择器

    <style>
        p ~ span{
            background-color:red;
        }
        .p1 ~ span.span1{
            ...
        }
    </style>
    <p>我是p标签 <span>我是span标签</span> </p>
    <p>我是p标签</p>
    <p>我是p标签</p>
    <span>我是span标签</span>
    <p>我是p标签</p>
    <span>我是span标签</span>
    
    <!--选择p标签(不含)下面的所有兄弟span标签(不包括span标签里的后代标签)-->
    
  5. 多元素选择器

    ![Snipaste_2019-03-09_22-25-42](D:\python\web前端笔记和导图\3,CSS选择器\笔记辅图\Snipaste_2019-03-09_22-25-42.png)<style>
        p,span{
            background-color:red;
        }
    </style>
    <p>我是p标签 <span>我是span标签</span> </p>
    <p>我是p标签</p>
    <p>我是p标签</p>
    <span>我是span标签</span>
    <p>我是p标签</p>
    <span>我是span标签</span>
    
    <!--相当于多个标签选择器整合成一个选择器,快捷方便-->
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值