CSS选择器介绍

写给正在学习选择器的小伙伴们!

不懂的可以加我联系方式,一起讨论!

QQ:951434130

序选择器很重要,学习时记得不懂的查MDN,或者W3C官方文档,因为序选择器有些我的理解也不是很对

标签选择器

  • 注意点:
  1. 根据指定标签名称,在当界面中找到指定标签的所以标签,然后设置属性
  2. 无论标签藏得多深都能找到选中
  3. 不能单独选中某个标签,如果使用标签选择器,那样同名标签都会被设值,例如p标签,当使用标签选择器时,当前页面所有p标签都会被设值
 <style>
       p{
          color: green;
       }
    </style>

id选择器

  • id选择器是根据指定的id名称找到对应的标签, 然后设置属性
  • 在企业开发中一般情况下如果仅仅是为了设置样式, 我们不会使用id,为什么?因为在前端开发中id是留给js使用的
<style>
       #id1{
          color: green;
       }
    </style>

注意点:

  1. 每个HTML标签都有一个属性叫做id, 也就是说每个标签都可以设置id
  2. 在同一个界面中id的名称是不可以重复的
  3. 在编写id选择器时一定要在id名称前面加上#
  4. id的名称是有一定的规范的
  5. 1 id的名称只能由字母/数字/下划线a-z 0-9 _
  6. 2 id名称不能以数字开头
  7. 3 id名称不能是HTML标签的名称不能是a h1 img input ...
  8. 在企业开发中一般情况下如果仅仅是为了设置样式, 我们不会使用id ,因为在前端开发中id是留给js使用的

以上这段注意点是来自我老师 李南江的解答!

类选择器

  • 选择指定设置过后的类名,找到对应的标签,然后设置属性
<style>
       .header{
          color: green;
       }
    </style>

注意点:
1.每个HTML标签都有一个属性叫做class, 也就是说每个标签都可以设置类名
2.在同一个界面中class的名称是可以重复的
3.在编写class选择器时一定要在class名称前面加上.
4.类名的命名规范和id名称的命名规范一样
5.类名就是专门用来给CSS设置样式的
6.在HTML中每个标签可以同时绑定多个类名
格式:<标签名称 class="类名1 类名2 ...">
错误写法:<p class="para1" class="para2">

以上这段注意点是来自我老师 李南江的解答!

交集选择器

交集选择题的注意点?

1 .选择器和选择器之间没有任何的连接符号
2 .选择器可以使用标签名称/id名称/class名称
3 .交集选择器仅仅作为了解, 企业开发中用的并不多
4 .交集选择器是给所有选择器选中的标签中, 相交的那部分标签设置属性

  • 格式:
<style>
        .para1#identity{
            color: blue;
        }
</style>

并集选择器

什么是并集选择器?

1 .给所有选择器选中的标签设置属性
2 .并集选择器必须使用,来连接
3 .选择器可以使用标签名称/id名称/class名称

  • 格式:
<style>
        .ht,.para{
            color: red;
        }
</style>

兄弟选择器

相邻兄弟选择器 CSS2

1 .给指定选择器后面紧跟的那个选择器选中的标签设置属性
2 .相邻兄弟选择器必须通过+连接
3 .相邻兄弟选择器只能选中紧跟其后的那个标签, 不能选中被隔开的标签

  • 格式:
<style>
     h1+p{
            color: red;
        }
</style>
通用兄弟选择器 CSS3
给指定选择器标签后面的所有选择器标签选中设置属性

1 .通用兄弟选择器必须用~连接
2 .通用兄弟选择器选中的是指定选择器后面某个选择器选中的所有标签, 无论有没有被隔开都可以选中

  • 格式:
<style>
      h1~p{
            color: red;
        }
</style>

序选择器

:first-child
  • 选中同级别中的第一个标签
  • 例如div下面的四个p标签,但是只选择同级别的第一P标签设置属性,其余三个没有任何变化,就算是div外层还是有两个p标签,那样也是只有外层第一个p标签和div里的第一个p标签会被设置属性,变化
  • 注意点:如果同级别的第一个p标签前面有其他标签,那样那个p标签就没有作用了
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>序选择器</title>
    <style>
        p:first-child{
            color: red;
        }
    </style>
</head>
<body>
<p>我是段落1</p>
<p>我是段落2</p>
<div>
    <p>我是段落3</p>
    <p>我是段落2</p>
    <p>我是段落4</p>
    <p>我是段落5</p>
</div>
</body>
</html>
  • 效果如下


    效果图
:last-child
  • 选中同级别中的最后一个标签
  • 顾名思义与上一段话一样,就是选中同级别中最后一个标签才会有效果,例如一下代码,第一级别是p和div,第一级别的同级别最后一个标签不是p标签,所以他没有生效,会往二级标签里继续查找,div里的二级同级别标签,最后一个刚好是p标签所以他生效了,相反,如果第一级别同级别最后一个是标签是p而不是div时,他就会在第一级别时生效了
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>序选择器</title>
    <style>
        p:last-child{
            color: red;
        }
    </style>
</head>
<body>
<p>我是段落1</p>
<p>我是段落2</p>
<div>
    <p>我是段落3</p>
    <p>我是段落4</p>
</div>
</body>
</html>
  • 效果如下


    效果图

    效果图
:nth-child(n)
  • 选中同级别中的第n个标签
  • :nth-child(n)里的n是自己输入的几位数,如果html页面里有五个p标签,那样你输入3:nth-child(3)他就会给正序第三个p设置属性
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>序选择器</title>
    <style>
        p:nth-child(3){
            color: red;
        }
    </style>
</head>
<body>
    <p>我是段落</p>
    <p>我是段落</p>
    <p>我是段落</p>
    <p>我是段落</p>
    <p>我是段落</p>
</body>
</html>
  • 效果如下


    效果图
:nth-last-child(n)
  • 选中同级别中的倒数第n个标签
  • nth-last-child(n)里的n是自己输入的几位数,如果html页面里有五个p标签,那样你输入3:nth-child(3)他就会给倒序第三个p设置属性
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>序选择器</title>
    <style>
        p:nth-last-child(3){
            color: #8d28ff;
        }
    </style>
</head>
<body>
    <p>我是段落</p>
    <p>我是段落</p>
    <p>我是段落</p>
    <p>我是段落</p>
    <p>我是段落</p>
</body>
</html>
  • 效果如下


    效果图
:only-child
  • 选中父元素中唯一的标签
  • 很好理解,选中整个页面里唯一一个元素,当一级层次有两个标签时,那样它不符合条件,所以他会转向二级,选中div里的唯一一个p,所以他div外层的p没生效就是这样子
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p:only-child{
            color: #8d28ff;
        }
      
    </style>
</head>
<body>
    <p>我是段落</p>
    <p>我是段落</p>

    <div>
        <p>我是段落</p>
    </div>

</body>
</html>
  • 效果如下


    效果图
:first-of-type
  • 选中同级别中同类型的第一个标签
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p:first-of-type{
            color: #8d28ff;
        }

    </style>
</head>
<body>
    <p>我是段落</p>
    <p>我是段落</p>
    <p>我是段落</p>
    <p>我是段落</p>


    <div class="header">
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
    </div>

</body>
</html>
  • 效果如下


    image

    效果图
:last-of-type
  • 选中同级别中同类型的最后一个标签
  • 和:first-of-type类似,不过他选中的是同级别中的最后一个标签
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p:last-of-type{
            color: #8d28ff;
        }

    </style>
</head>
<body>
    <p>我是段落</p>
    <p>我是段落</p>
    <p>我是段落</p>
    <p>我是段落</p>


    <div class="header">
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
    </div>

</body>
</html>
  • 效果如下


    效果图
:nth-of-type(n)
  • 选中同级别中同类型的第n个标签
  • :nth-of-type(3)如果n里写3,那样就会选中同级别正序的第三个标签
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p:nth-of-type(3){
            color: #8d28ff;
        }

    </style>
</head>
<body>
    <p>我是段落</p>
    <p>我是段落</p>
    <p>我是段落</p>
    <p>我是段落</p>


    <div class="header">
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
    </div>

</body>
</html>
  • 效果如下


    效果图
:nth-last-of-type(n)
  • 选中同级别中同类型的倒数第n个标签
  • :nth-last-of-type(n)如果n里写3,那样就会选中同级别倒序的第三个标签
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p:nth-last-of-type(3){
            color: #8d28ff;
        }

    </style>
</head>
<body>
    <p>我是段落</p>
    <p>我是段落</p>
    <p>我是段落</p>
    <p>我是段落</p>


    <div class="header">
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
    </div>

</body>
</html>
  • 效果如下


    效果图
:only-of-type
  • 选择器匹配属于其父元素的特定类型的唯一子元素的每个元素(这段话是来自w3c的描述:only-of-type选择器的)
  • 个人理解:only-of-type,是选中父元素中的唯一一个子元素,多了不会生效,如果我们在div里的p下面再添加一个p,这时添加的p不会生效,并且导致div里的第一个p元素也会失去效果,代码实践最实在,看图
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p:only-of-type{
            color: #8d28ff;
        }
    </style>
</head>
<body>
    <p>我是段落</p>

    <div class="header">
        <p>我是段落</p>
    </div>

</body>
</html>
  • 效果如下


    效果图
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p:only-of-type{
            color: #8d28ff;
        }
    </style>
</head>
<body>
    <p>我是段落</p>

    <div class="header">
        <p>我是段落</p>
        <p>我是段落</p>
    </div>

</body>
</html>
  • 效果如下


    在div里添加多了个p的效果图
:nth-child(xn+y)
  • x和y是用户自定义的, 而n是一个计数器, 从0开始递增
  • :nth-child(2n+0),x填2时,他会从0开始,会在第二个p时开始生效,递增,每次两个,一直到结束,看代码、这里的理解看个人,我的可能是错的,如果有错请在评论区告知我,谢谢
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p:nth-child(2n+0){
            color: #8d28ff;
        }
    </style>
</head>
<body>
<p>我是项目</p>
<p>我是项目</p>
<p>我是项目</p>
<p>我是项目</p>
<p>我是项目</p>
<p>我是项目</p>
<p>我是项目</p>
</body>
</html>
  • 效果如下


    nth-child(2n+0)
:nth-child(even)
  • 选中同级别中的所有偶数
  • :nth-child(even)的效果图和上面nth-child(2n+0)一样,我就不重新截图了
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p:nth-child(even){
            color: #8d28ff;
        }
    </style>
</head>
<body>
<p>我是项目</p>
<p>我是项目</p>
<p>我是项目</p>
<p>我是项目</p>
<p>我是项目</p>
<p>我是项目</p>
<p>我是项目</p>
</body>
</html>
  • 效果如下


    image
:nth-child(odd)
  • 选中同级别中的所有奇数
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p:nth-child(odd){
            color: #8d28ff;
        }
    </style>
</head>
<body>
<p>我是项目</p>
<p>我是项目</p>
<p>我是项目</p>
<p>我是项目</p>
<p>我是项目</p>
<p>我是项目</p>
<p>我是项目</p>
</body>
</html>
  • 效果如下


    image

属性选择器

[attribute]
  • 根据指定的属性名称找到对应的标签, 然后设置属性
  • 把指定属性填入p[这],例如id的话,他就会把设有id的标签给设置效果,当然你也可以填写class
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p[id]{
            color: red;
        }

    </style>
</head>
<body>
    <p id="id1">我是段落</p>
    <p id="id2">我是段落</p>
    <p>我是段落</p>
    <p id="id3">我是段落</p>
    <p>我是段落</p>
    <p id="id4">我是段落</p>
    <p>我是段落</p>
</body>
</html>
  • 效果如下


    image
[attribute=value]
  • 找到有指定属性, 并且属性的取值等于value的标签, 然后设置属性
  • [attribute=value]最常见的应用场景, 就是用于区分input属性
  • input[type=password]找到指定的input的type属性,再找到指定的type属性的取值password,然后设置属性
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
       input[type=password]{
           border:2px solid;
           border-radius:25px;
             }
    </style>
</head>
<body>

    <input type="password">

</body>
</html>
  • 效果如下


    image
属性的取值是以什么开头的
[attribute|=value] CSS2
  • CSS2中的只能找到value开头,并且value是被-和其它内容隔开
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
       img[alt|=abc]{
            color: red;
        }
    </style>
</head>
<body>

<img src="" alt="abcdef">
<img src="" alt="abc-www-www">
<img src="" alt="abc ppp">

</body>
</html>
  • 效果如下


    image
[attribute^=value] CSS3
  • CSS3中的只要是以value开头的都可以找到, 无论有没有被-隔开
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
       img[alt^=abc]{
            color: red;
        }
    </style>
</head>
<body>
<img src="" alt="abcdef">
<img src="" alt="abc-www-www">
<img src="" alt="abc ppp">
<img src="" alt="defabc">
<img src="" alt="ppp abc">
<img src="" alt="www-abc">
</body>
</html>
  • 效果如下


    image
属性的取值是以什么结尾的
[attribute$=value] CSS3
  • CSS3中的只要是以value结尾的都可以找到, 无论有没有被-隔开
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
      img[alt$=abc]{
            color: skyblue;
        }
    </style>
</head>
<body>

    <img src="" alt="abcdef">
    <img src="" alt="abc-www-www">
    <img src="" alt="abc ppp">
    <img src="" alt="defabc">
    <img src="" alt="ppp abc">
    <img src="" alt="www-abc">

</body>
</html>
  • 效果如下


    image

属性的取值是否包含某个特定的值得

[attribute~=value] CSS2
  • CSS2中的只能找到独立的单词, 也就是包含value,并且value是被空格隔开的
  • 只能找到被空格隔开的
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
     img[alt~=abc]{
            color: skyblue;
        }
    </style>
</head>
<body>

    <img src="" alt="abcdef">
    <img src="" alt="abc-www-www">
    <img src="" alt="abc ppp">
    <img src="" alt="defabc">
    <img src="" alt="ppp abc">
    <img src="" alt="www-abc">

</body>
</html>
  • 效果如下


    image
[attribute*=value] CSS3
  • CSS3中的只要包含value就可以找到
  • 不区分空格横杠连接
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
     img[alt*=abc]{
            color: skyblue;
        }
    </style>
</head>
<body>

    <img src="" alt="abcdef">
    <img src="" alt="abc-www-www">
    <img src="" alt="abc ppp">
    <img src="" alt="defabc">
    <img src="" alt="ppp abc">
    <img src="" alt="www-abc">

</body>
</html>
  • 效果如下


    image

通配符选择器

  • 给当前界面上所有的标签设置属性
  • 注意点:由于通配符选择器是设置界面上所有的标签的属性, 所以在设置之前会遍历所有的标签, 如果当前界面上的标签比较多, 那么性能就会比较差, 所以在企业开发中一般不会使用通配符选择器
  • 格式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
       *{
          color: deeppink;
       }
    </style>
</head>
<body>
    <p>我是段落</p>
    <p>我是段落</p>
    <p>我是段落</p>
</body>
</html>
  • 效果如下


    image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 浏览器与服务器的基本概念 浏览器(安装在电脑里面的一个软件) 作用: ①将网页内容渲染呈现给用户查看。 ②让用户通...
    云还灬阅读 1,081评论 0 0
  • 概述 在网易云课堂学习李南江老师的《从零玩转HTML5前端+跨平台开发》时,所整理的笔记。笔记内容为根据个人需求所...
    墨荀阅读 2,320评论 0 7
  • 作为前端和后台最基础可靠的神器工具JQuery,你真的对她有足够了解么? 亚非拉地区苦逼的前端er们,有时候不得不...
    扭了个妞阅读 372评论 0 0
  • 选择器: 标签选择器格式:标签名称{属性:值;} id选择器格式: id名称{ } 类选择器格式:.类名{属性:值...
    往事一块六毛八阅读 393评论 0 0
  • 本文是针对刚学编程的小白,都是一些基础知识,如果想了解更多深层一点的东西,欢迎移步本人博客!! 博客地址 点击跳转...
    西巴撸阅读 455评论 0 0