美文网首页
常用的选择器

常用的选择器

作者: 咻咻咻滴赵大妞 | 来源:发表于2018-09-07 20:43 被阅读0次

选择器(selector),会告诉浏览器:网页上那些元素需要设置什么样的样式。

元素选择器(标签选择器)

元素选择器可以根据标签的名字来从页面中选取指定的元素。

  • 语法:
    标签名{}

    p{
       color:red
      }
    

类选择器

类选择器,可以根据元素的class属性值选取元素

  • 语法:.classname{}

        .p2{
    font-size:50;
        }
        .hello{
    font-size:50;
         }
    

ID选择器

ID选择器,可以根据元素的ID属性值选取元素

  • 语法:#id{}

      #p1{
       color:red;
       font-size:50;
          }
    

复合选择器(交集选择器)

复合选择器,可以同时使用多个选择器,这样可以选择同时满足多个选择器的元素。

  • 语法:
    选择器1.选择器2{}

    span.p3{
    background: yellow;
         }
    

群组选择器(并集选择器)

群组选择器,可以同时使用多个选择器,多个选择器将被同时应用指定的样式。

  • 语法:选择器1,选择器2,选择器3{}

    #p1,.p2,h1{
    background-color: green;
              }
    

通用选择器

通用选择器,可以同时选中页面中的所有元素。

  • 语法:*{}

    *{
    color: red;
      }
    

<!DOCTYPE html>
<html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>常用选择器</title>
<style type="text/css">
/*元素选择器*/
p{
color:red
   }
 /*id选择器*/
#p1{
     color:red;
     font-size:50;
}
/*类选择器*/
.p2{
  font-size:50;
}
.hello{
  font-size:50;
}
/*选择器分组(并集选择器)*/
#p1,.p2,h1{
  background-color: green;
}
/*通配选择器*/
*{
  color: red;
}
/*复合选择器(交集选择器)*/
span.p3{
  background: yellow;
}
/*对于id选择器来说,不建议使用复合选择器*/
p#p1{
  background: red
}
</style>
</head>
<body>
<p id='p1'>书里总爱写到喜出望外的傍晚</p>
    <p> 骑的单车还有他和她的对谈</p>
    <!--指定多个样式用空格隔开-->
    <p class='p2 hello'>女孩的白色衣裳男孩爱看她穿</p>
    <p class='p2'>  好多桥段</p>
    <p class='p2'>  好多都浪漫</p>
    <p class='p2'>  好多人心酸</p>
    <p class="p3">好聚好散</p>
    <p class="p3">  好多天都看不完</p>
    <span class="p3">   好多天都看不完</spqn>
    <span class="p3">   好多天都看不完</spqn>
</body>
</html>

标签(元素)之间的关系

  • 父元素:直接包含子元素的元素
  • 子元素:直接被父元素包含的元素
  • 祖先元素:直接或间接包含后代元素的元素,父元素也是祖先元素
  • 后代元素:直接或间接被祖先元素包含的元素,子元素也是后代元素
  • 兄弟元素:拥有相同父元素的元素叫做兄弟元素

后代元素选择器

作用:选中指定元素的指定后代元素
语法:祖先元素 后代元素{}

    /*为div中的span设置一个颜色为绿色*/
    #d1 span{
        color: greenyellow;
    }

子元素选择器

作用:选中指定父元素的指定子元素
语法:父元素 > 子元素{}
IE6及以下的浏览器不支持子元素选择器

div > span{
    background-color: yellow;
    }

例示

 <!DOCTYPE html>
 <html lang="en">
 <head>
<meta charset="UTF-8">
<title>子元素和后代元素选择器</title>
<style type="text/css">
    /*后代选择器:为div中的span设置一个颜色为绿色*/
    #d1 span{
        color: greenyellow;
    }
    /*选中id为d1的div中的p元素中的span元素*/
    #d1 p span{
        font-size: 50px;
    }
    /*子元素选择器:为div的子元素span设置一个背景颜色为黄色*/
    div > span{
        background-color: yellow;
    }
</style>
 </head>
 <body>
<div id="d1">
    <span>我是div标签中的span</span>
    <p><span>我是p标签中的span</span></p>
</div>
<div>
    <span>我是body标签中的span</span>
</div>
</body>
</html>

伪类选择器

有四个伪类可以让根据访问者与该链接的交互方式,将链接设置成4种不同的状态。

  • 正常链接
    a:link
  • 访问过的链接
    a:visited(只能定义字体颜色)
  • 鼠标滑过的链接
    a:hover
  • 正在点击的链接
    a:active
  • 获取焦点(搜索框)
    :focus
  • 选中的元素
    ::selection
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>伪类选择器</title>
<style type="text/css">

/*伪类专门用来表示元素的一种特殊的状态
        比如:访问过的超链接、普通的超链接、获取焦点的文本框
        当我们需要为处在这些特殊状态的元素设置样式时,就可以使用伪类
        为没访问过的链接设置一个颜色为绿色
            :link   表示普通的链接(没访问过的链接)*/


    a:link{
        color: yellowgreen;
        font-size: 50px;
    }
 /*为访问过的链接设置一个颜色为红色
:visited    表示访问过的链接
浏览器是通过历史记录来判断一个链接是否访问过
由于涉及到用户的隐私问题,所以使用:visited伪类只能设置字体的颜色*/

    a:visited{
        color: red;
    }

/*表示鼠标移入的状态*/   
    a:hover{
        color: skyblue;
    }
/*表示超链接被点击的状态*/
    a:active{
        color: black;
    }

/* :hover和:active也可以为其它元素设置
IE6中,不支持对超链接以外的元素设置:hover和:active*/

    p:hover{
        background-color: gold;
    }
    p:active{
        background-color: orange;
    }
/*:focu 文本框获取焦点以后,修改背景颜色为黄色*/
    
 input:focus{
        background-color: yellow;
    }

/*为p标签中选中的内容使用样式可以使用::selection伪类
        注意:这个伪类在火狐中需要采用另一种方式编写兼容大部分浏览器的*/

    p::selection{
        background-color: orange;
    }
兼容火狐的前面加-moz-

    p::-moz-selection{
        background-color: orange;
    }
</style>
</head>
<body>
<a class="abc" href="http://www.baidu.com">访问过的链接</a>
<br /><br />
<a class="bcd" href="http://www.baidu123456.com">没访问过的链接</a>

<p>我是一个段落</p>

<!-- 使用input可以创建一个文本输入框 -->
<input type="text" />
</body>
</html>

其他选择器

给段落定义样式

  • 首字母
    :first-letter

  • 首行
    :first-line

      /*为p中第一个字符来设置一个特殊的样式*/
       p:first-letter{
          color: red;
          font-size: 20px;
      } 
      /*为p中的第一行设置一个背景颜色为黄色*/
       p:first-line{
          background-color: yellow;
      } 
    
  • 指定元素前
    :before
    表示元素最前边的部分
    一般它都需要结合content这个样式一起使用
    通过content可以向before或after的位置添加一些内容

  • 指定元素后
    :after
    表示元素最后边的部分

      p:before{
          content: "我会出现在整个段落的最前边";
          color: green;
      }
      p:after{
          content: "我会出现在整个段落的最后边";
          color: orange;
      }
    

属性选择器

属性选择器
作用:可以根据元素中的属性或属性值来选取指定元素
语法:
[属性名] 选取含有指定属性的元素
[属性名="属性值"] 选取含有指定属性值的元素
[属性名^="属性值"] 选取属性值以指定内容开头的元素
[属性名$="属性值"] 选取属性值以指定内容结尾的元素
[属性名*="属性值"] 选取属性值包含指定内容的元素

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>属性选择器</title>
<style type="text/css">
    /*为所有具有title属性的p元素,设置一个背景颜色为黄色*/
    p[title]{
        background-color: yellow;
    }
    
    /*为title属性值是hello的元素设置一个背景颜色为黄色*/
    p[title="hello"]{
        background-color: yellow;
    }
    
    /*为title属性值以ab开头的元素设置一个背景颜色为黄色*/
    p[title^="ab"]{
        background-color: yellow;
    }
    
    /*为title属性值以c结尾的元素设置一个背景颜色*/
    p[title$="c"]{
        background-color: yellow;
    }
    
    /*为title属性值包含c的元素设置一个背景颜色*/
    p[title*="c"]{
        background-color: yellow;
    }
</style>
</head>
<body>
<!-- 
    title属性,这个属性可以给任何标签指定
    当鼠标移入到元素上时,元素中的title属性的值将会作为提示文字显示
 -->
<p title="hello">我是一个段落</p>
<p>我是一个段落</p>
<p title="abbc">我是一个段落</p>
<p title="abccd">我是一个段落</p>
<p title="abc">我是一个段落</p>
</body>
</html>

子元素选择器

子元素选择器可以给另一个元素的子元素 设置样式。

  • 语法:
    父元素 > 子元素{}
    比如body > h1将选择body子标签中的所 有h1标签。
  • 其他子元素选择器
    1 :first-child 可以选中第一个子元素
    2 :last-child 可以选中最后一个子元素
    3 :nth-child(3)可以选中任意位置的子元素
    该选择器后边可以指定一个参数,指定要选中第几个子元素
    even 表示偶数位置的子元素
    odd 表示奇数位置的子元素
    4 :first-of-type
    5 :last-of-type
    6 :nth-of-type(4)
    7 :only-of-type
    和child类似,只不过child是在所有的子元素中找,而type是在当前类型的子元素中找
    8 :empty空子元素选择器
  <!DOCTYPE html>
  <html lang="en">
  <head>
  <meta charset="UTF-8">
  <title>子元素选择器</title>
  <style type="text/css">

    body>p:first-child{
        background-color: yellow;
    }
    p:last-child{
        background-color: yellow;
    }
    p:nth-child(even){
        background-color: yellow;
    }

    p:first-of-type{
        background-color: yellow;
    }

    p:last-of-type{
        background-color: yellow;
    }
   </style>
   </head>
  <body>
       <span>我是span</span>
       <p>我是一个p标签</p>
       <p>我是一个p标签</p>
       <p>我是一个p标签</p>
       <p>我是一个p标签</p>
       <span>我是span</span>
       <div>
        <p>我是一个p标签</p>
       </div> 
     </body>
   </html>

兄弟选择器

除了根据祖先父子关系,还可以根据兄弟 关系查找元素。

  • 语法:
    查找后边一个兄弟元素:兄弟元素 + 兄弟元素{}
    查找后边所有的兄弟元素:兄弟元素 ~ 兄弟元素{}

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>兄弟元素选择器</title>
    <style type="text/css">
      /*
      为span后的一个p元素设置一个背景颜色为黄色*/
      span + p{
          background-color: yellow;
      }
      /*
      为span后的所有p元素设置一个背景颜色为黄色*/
      span ~ p{
          background-color: yellow;
      }
    </style>
    </head>
    <body>
    <p>我是一个p标签</p>
    <p>我是一个p标签</p>
    <p>我是一个p标签</p>
    <span>我是一个span</span>
    <div>我是div</div>
    <p>我是一个p标签</p>
    <p>我是一个p标签</p>
    <p>我是一个p标签</p>
    </body>
    </html>
    

否定伪类

否定伪类可以帮助我们选择不是其他东西 的某件东西。

  • 语法:
    :not(选择器){}
    比如p:not(.hello)表示选择所有的p元素但 是class为hello的除外。

       <!DOCTYPE html>
       <html lang="en">
       <head>
           <meta charset="UTF-8">
           <title>否定伪类</title>
           <style type="text/css">
      /*为所有的p元素设置一个背景颜色为黄色,除了class值为hello的*/
      p:not(.hello){
          background-color: yellow;
      }
            </style>
       </head>
       <body>
            <p>我是一个p标签</p>
            <p>我是一个p标签</p>
            <p class="hello">我是一个p标签</span>
            <p>我是一个p标签</p>
    </body>
    </html>
    

继承

像儿子可以继承父亲的遗产一样,在CSS中,祖先元素上的样式,也会被他的后代元素所继承
利用继承,可以将一些基本的样式设置给祖先元素,这样所有的后代元素将会自动继承这些样式

但是,并不是所有的样式都会被子元素所继承,比如:背景、边框、定位相关的样式都不会被继承

  <!DOCTYPE html>
  <html lang="en">
   <head>
       <meta charset="UTF-8">
       <title>样式的继承</title>
       <style type="text/css">
    body{
        font-size: 30px;
    }
       </style>
   </head>
   <body>
       <div style="background-color: yellow;">
       <p>
         我是p标签中的文字
       <span>我是span中的文字</span>
       </p>
       </div>
      <span>我是p元素外的span</span>
   </body>
 </html>
image.png

图片中子元素背景也变成黄色,是因为字的背景默认值是透明的,背景颜色不是继承下来的,而是透过来的。

选择器优先级

当使用不同的选择器,选中同一个元素时,并且设置相同的样式时,这时样式之间产生了冲突,最终到底采用哪个选择器定义的样式,由选择器的优先级(权重)决定,优先级高的优先显示

    优先级的规则
        内联样式,优先级1000
        id选择器,优先级100
        类和伪类,优先级10
        元素选择器,优先级1
        通配*,优先级0
        继承的样式,没有优先级

    当选择器中包含多种选择器时,需要将多种选择器的优先级相加,然后再比较
    但是注意,选择器优先级计算不会超过他的最大的数量级
    如果选择器的优先级一样,则使用靠后的样式
    并集选择器的优先级是单独计算的
        div, p, #p1, .hello{}

    可以在样式的最后添加一个!important,则此时该样式将会获取一个最高的优先级,将会优先于所有的样式显示,甚至超过内联样式,但是在开发中,尽量避免使用!important

例:

<!DOCTYPE html>
<html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>选择器的优先级</title>
    <style type="text/css">
    .p1{
        background-color: yellow;
    }
    p{
        background-color: red;
    }
    #p2{
        background-color: yellowgreen;
    }
    p#p2{
        background-color: red;
    }
    
    *{
        font-size: 50px;
    }
    p{
        font-size: 30px;
    }
    .p3{
        color: green;
    }
    .p1{
        color: yellow;
        background-color: skyblue !important;
    }
      </style>
    </head>
<body>
    <p class="p1 p3" id="p2" style="background-color: orange;">
    我是一个段落
    <span>我是p标签中的span</span>
    </p>
</body>
</html>

a的伪类优先级

涉及到a的伪类一共有四个
a:link正常链接
a:visited(只能定义字体颜色)访问过的链接
a:hover鼠标滑过的链接
a:active正在点击的链接
这四个选择器的优先级是一样的,顺序不能更改

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>a的伪类</title>
    <style type="text/css">

    a:link{
        color: yellowgreen;
    }
    a:visited{
        color: red;
    }
    a:hover{
        color: orange;
    }
    a:active{
        color: cornflowerblue;
    }
    </style>
</head>
<body>
<a href="http://www.baidu.com">访问过的链接</a>
<br>
<a href="http://www.baidu123456.com">未访问过的链接</a>
</body>
</html>

相关文章

  • 常用选择器测试代码

    常用基本选择器 常用常用层次选择器 常用基本过滤选择器 常用基本内容过滤选择器以及可见性过滤选择器 常用的属性过滤...

  • jQuery选择器

    一、jQuery常用选择器 二、jQuery选择器优势 三、jQuery常用基本选择器 四、jQuery常用层次选...

  • web前端入门到实战:css常用基本层级伪类属性选择器

    常见的css选择器包含:常用选择器、基本选择器、层级选择器、伪类选择器、属性选择器,其中常用选择器分为:1.htm...

  • 精通CSS-2 笔记

    2.1 常用选择器 最常用的选择器类型是类型选择器和后代选择器.类型选择器用来寻找特定的元素,比如段落或标题元素,...

  • DAY02

    1,常用的HTML标签 2,css常用选择器 1.1 元素选择器 注:p标签要慎用 1.2class选择器 特点:...

  • CSS的选择器

    CSS 的常用选择器有: 通用选择器 * , id选择器 # , 类选择器 . , 元素选择器, 后代选择器, 兄...

  • css常用选择器和特性

    常用选择器 id选择器 #idName 类选择器 .className 标签选择器 tagName 交叉选择器 t...

  • css3选择器

    CSS3选择器分类 层次选择器,常用的选择器| 选择器|类型|说明 ||--|--|--|--||E F |后代...

  • 《Python web开发》笔记 三: CSS基础

    CSS常用选择器 通配符选择器 * id选择器(id #) 类选择器(class .) 元素选择器(E) 后代选...

  • 2.CSS入门(1)

    选择器用来找到需要添加样式的位置,常用选择器有,标签选择器,类选择器,ID选择器 background-attac...

网友评论

      本文标题:常用的选择器

      本文链接:https://www.haomeiwen.com/subject/rrkhgftx.html