CSS的各种选择器

在前端或者网页设计中,会用html标签根据业务需求搭建框架,用CSS来设置样式。而CSS是通过选择器选中所需要设置属性的标签,来对特定标签设置属性的。为了能够灵活的完成各种各样的需求,有很多选择器可以供我们选择,下面是自己对常用的选择器的学习过程的记录。更多详情:http://www.w3school.com.cn/

标签选择器

用来根据标签名称选择当前界面的某一类标签,对一类标签进行操作。

  • 书写格式:
    标签名称{
    属性:值;
    属性1:值;

  • 案例


    <style>
        p {
            color: red;
        }
    </style>
    <body>
        <div>
            <p>这是段落</p>
            <span>这是span</span>
            <ul><li><p>li面段落</p></li></ul>
        </div>
    </body>

  • 效果图
标签选择器.png

可以看到通过p标签选择器选择了网页上出现的所有p标签,包括li里面的,这也是缺点,因为选择了所有的p标签。

id选择器

id选择器用来精准的选择界面的某个标签,同一个界面中id不能重复.id名称只能由字母下划线数字组成,不能以数字开头(遵循大部分编程语言的变量命名规则),id名称不能是html标签名称,仅仅为了设置样式的时候是不会用id的,id的使用主要是留给js调用

  • 书写格式

    # id的名称{
        属性:属性值;
        属性1:值;
      }
    
  • 案例

 <style>
        #red{
          color: red;
        }
        #green{
            color: green;
        }
    </style>
    <body>
        <div>
            <p id="red">这是段落</p>
            <span>这是span</span>
            <ul><li><p id="green">li面段落</p></li></ul>
        </div>
    </body>
  • 效果图
id选择器.png

通过id成功设置了两个p标签的内容颜色分别为红色和绿色。

类选择器

相对于id选择器,class选择器在同一个界面是可以重复的,类名前面是.可以给某个特定的标签设置样式,一个标签可以有多个类名。一个标签设置多个类名的书写格式<标签名 class=”class1 class2“>

  • 书写格式

    .classname{
      属性:属性值;
      属性1:值;
    }
    
  • 案例

 <style>
        .red{
            color: red;
        }
        .green{
            color: green;
        }
        .big{
            font-size: 20px;
        }
    </style>
    <body>
        <div>
            <p class="red big">这是段落</p>
            <p class="green">这是段落</p>
            <span class="green">这是span</span>
            <ul><li><p class="red">li面段落</p></li></ul>
        </div>
    </body>
  • 效果图
类选择器.png

为界面里面的不同的标签通过指定类名的形式设置了不同的样式和样式叠加。合理的利用和设置类选择器,可以大大减少css的重复代码,优化结构。

后代选择器

后代选择器用来找到指定标签的所有后代标签,设置属性。不仅仅局限于直接子标签,多层嵌套的依然起效果。同时后代选择选择器的选择器标签可以是类名id选择器名等其他的名称

  • 书写格式
    标签直接用空格隔开
    标签名称1 标签名称2{
    属性:属性值

  • 案例

 <style>
        div p{
            color: red;
        }
        div .innerli{
            color: green;
        }
    </style>
    <body>
        <div>
            <p>这是段落</p>
            <p>这是段落</p>
            <ul>
                <li><p class="innerli">li里面的p标签格外的</p></li>
               <li><p>li里面的p</p></li>
            </ul>
        </div>
        <p>不再div的p</p>
    </body>

效果图

后代选择器.png

子元素选择器

和后代选择器的区别是子元素选择器只会在自己的直接后代中寻找,后代选择器间接后代也作为查找范围。

  • 书写格式
    标签名称1>标签名称2{
    属性:属性值;
  • 案例
<style>
       div>p{
           color: red;
       }
        div>ul>li>p{
            color: green;
        }
    </style>
    <body>
        <div>
            <p>这是段落</p>
            <p>这是段落</p>
            <ul>
                <li><p>li里面的p标签</p></li>
                <li><p>li里面的p</p></li>
            </ul>
        </div>
        <p>不再div的p</p>
    </body>
  • 效果图
子元素选择器.png

交集选择器和并集选择器

交集选择器,一个标签具有标签选择器1和2两种身份时设置相关属性。中间没有任何字符,紧挨着

标签选择器1标签选择器2{
    属性:属性值;
}

并集选择器,逗号隔开
拥有标签选择器1和2都设置为相同的属性

  标签选择器,1标签选择器2{
    属性:属性值;
 }
  • 案例
 <style>
        .red{
            color: red;
        }
        p.red{
            font-size: 20px;
        }
        .blue{
            color: blue;
        }
        span,.blue{
            font-size: 25px;
        }
    </style>
    <body>
        <div>
            <p class="red">这是段落</p>
            <span class="red">这是span</span>
            <p>这是段落</p>
            <span class="blue">这是blue类span</span>
        </div>
        <span>普通的span</span>
    </body>
  • 效果图
交集选择器和并集选择器.png

兄弟选择器

相邻兄弟选择器用来选择某个标签紧随其后同一级别的标签,中间有其他的标签隔开无效,通用兄弟选择器无此限制。

  • 书写格式

     标签1+标签2{
        属性:属性值   (相邻兄弟选择器)
     }
     标签1~标签2{
        属性:属性值   (通用兄弟选择器)
     }
    

*案例

 <style>
         h1+p{
             color: red;
         }
         h2~p{
             color: blue;
         }
    </style>
    <body>
        <h1>标题1</h1>
        <p>段落1</p>
        <p>段落2</p>
        <p>段落3</p>
        <h1>标题2</h1>
        <span>隔开后相邻兄弟选择器无效</span>
        <p>段落1</p>
        <h2>标题3</h2>
        <p>段落2</p>
        <div><p>不是同一级别的无效</p></div>
        <p>段落3</p>
    </body>```
![兄弟选择器.png](http://upload-images.jianshu.io/upload_images/2747346-0da6f018a426b8ed.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

###序选择器
css3增加了许多选择器,可以按照标签的顺序选择某个选择器功能强大。直接看案例。
```html
<style>
        p:first-child{
            color: red;
        }
        p:first-of-type{
            color: blue;
        }
        p:nth-child(3){
            color: aqua;
        }
        p:nth-of-type(3){
            color: rosybrown;
        }
        span:only-child{
            color: darkcyan;
        }
        h4:only-of-type{
            color: blueviolet;
        }
    </style>
    <body>
        <div>
            <h5>这是标题,first-child只取同级别的第一个,不区分类型,所以颜色不变</h5>
            <p>这是段落1 first-of-type,取出同类型的第一个</p>
            <p>通过nth-child,指定同级别不区分类型的标签设置颜色</p>
            <p>nth-of-type(3),区分类型取第三个</p>
        </div>
        <div>
            <h4>父标签div包含了h5和h4,但是只包含了一个h4,所以only-of-type,能够选中</h4>
            <!--下面注释打开后h4不唯一了所有不能够选中-->
            <!--<h4>父标签div包含了h5和h4,但是只包含了一个h4,所以only-of-type,能够选中</h4>-->
            <h5>h标签</h5>
        </div>
        <div>
            <span>父标签只包含了这一个span标签:only-child,所以上面div同时包含span和h5的无效</span>
        </div>
    </body>

  • 效果图
$R8301IK.png
<style>
    tr{
        text-align: center;
    }
    /*奇数行*/
    tr:nth-child(even){
        color: green;
    }
    td:nth-child(odd){
        font-size: 20px;
    }
    /**用公式选择n从0递增*/
    span:nth-child(2n+1){
        color: aqua;
    }
</style>
    <body>
        <span>1</span><span>2</span><span>3</span>
        <span>4</span><span>5</span><span>6</span>
        <span>7</span><span>8</span><span>9</span>
        <table bgcolor="black" width="100" height="40" cellspacing="1px">
            <tr bgcolor="white"><td>1</td><td>2</td></tr>
            <tr bgcolor="white"><td>3</td><td>4</td></tr>
            <tr bgcolor="white"><td>5</td><td>6</td></tr>
            <tr bgcolor="white"><td>7</td><td>8</td></tr>
            <tr bgcolor="white"><td>9</td><td>0</td></tr>
        </table>
    </body>
  • 效果图
序选择器2.png

属性选择器

根据指定的属性名称或者属性名称和值找到标签,设置属性。

  • 案例
  <style>
    p[id]{
       color: green;
    }
    /*
    通常用来判断input类型不需要设置任何class和id
    */
    input[type="password"]{
        color: blue;
    }
    /*
    标签[attribute^=值]以某个值开头
    */
    img[alt^='abc']{
        color: green;
    }
    /*
   标签[attribute$=值]以某个值结尾
   */
    img[alt^='cd']{
        color: blue;
    }
    /*
     标签[attribute$=值]包含某个值
    */
    img[alt*='abd']{
        color: brown;
    }
    </style>
    <body>
    <!--选择出有id属性的标签设置红色-->
        <p id="idf1">段落段落</p>
        <p id="idf2">段落段落</p>
        <p id="idf3">段落段落</p>
         账号:<input type="text"><br>
        密码:<input type="password">

    <img src="" alt="abcde">
    <img src="" alt="abc">
    <img src="" alt="abd">
    <img src="" alt="cde">
    </body>
  • 效果图
属性选择器.png

通配符选择器

  • 书写格式
    *{
    属性:属性值

    用来设置所有的标签,通常做一些全局的设置,比如清除默认标签的自带间距。

选择器的优先级

  1. 是否是直接选中,与之相反的是间接选中,就是通过父类继承的属性。直接选择的要大于间接选择
  2. 都是直接选中,并且都是同类型的,按照优先级进行比较。id>类>标签>通配符>继承>默认
  3. 如果都是直接选中,并且是相同类型的选择器,写在后面的会覆盖前面的

`

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,629评论 18 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,923评论 6 13
  • CSS选择器 标签选择器 什么是标签选择器? 作用: 根据指定的标签名称, 在当前界面中找到所有该名称的标签, 然...
    Jackson_yee_阅读 501评论 0 0
  • 第六十五课 标签选择器 作用:根据指定的标签名称,在当前界面中找到所有该名称的标签,然后设置属性格式: 标签名称{...
    S大偉阅读 347评论 0 0
  • part 3 虽然,当时我没有直接的向冯先生开骂,但我心里还是很心疼人家小女生的,明明小小只那么可爱,干嘛...
    迷迷糊糊茶叶蛋阅读 126评论 0 0