美文网首页
8.CSS选择器

8.CSS选择器

作者: 鸿鹄飞天 | 来源:发表于2016-07-30 14:05 被阅读48次

    一、CSS选择器常见的有几种?

    1.选择器类型
    ①基础选择器
    ②组合选择器
    ③属性选择器
    ④伪类选择器
    ⑤伪元素选择器

    2.基础选择器

    选择器 含义
    * 通用元素选择器,匹配页面任何元素(这也就决定了我们很少使用)
    #id id选择器,id选择器,用来匹配特定id的元素。应为id具有唯一性,所以它是用于页面的布局或者在一些特殊唯一的元素上面,但尽量少用
    .class 类选择器,匹配class包含(不是等于)特定类的元素。它具有普遍性,可以重复使用
    element 标签选择器。因为设置它之后影响范围大,使用它的场景是在确定整个页面的基本样式,而且不会对其他元素照成影响,比方说body上的字体,行高,去掉a链接的下划线等 。通常使用后代选择器

    举例说明

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Examples</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <link href="" rel="stylesheet">
    </head>
    <style type="text/css">
        *{
            margin:0px;
            padding: 0px;
        }
        body{
            font: 14px/1.5 'Microsoft yahei';
        }
        a{
            text-decoration: none;
        }
        li{
            list-style: none;
        }
        #header,#content,#footer{
            margin-top: 10px
        }
        .nav{
            border: 1px solid;
        }
        .nav li{
            display: inline-block;
            padding: 15px
        }
        .main li,a{
            margin-left: 20px;
        }
        p{
            color: red;
        }
    </style>
    <body>
        <div id="header">
            <ul class="nav">
                <li>主页</li>
                <li>在饥人谷</li>
                <li>进击的群魔(任务班)</li>
                <li>通关任务</li>
                <li>任务8</li>
                <li>任务8-css选择器</li>
            </ul>
        </div>
        <div id="content">
            <p>课程目标</p>
            <ul class="main">
                <li>掌握常见 CSS 选择器的用法</li>
                <li>对选择器优先级有一定认识</li>
            </ul>
            <p>预习视频</p>
            <a href="javascript:void(0)">课程视频-CSS-常见选择器</a>
        </div>
        <div id="footer">
            从学 CSS 开始,课程视频里的代码需要边听、边暂停、边跟着写
        </div>
    </body>
    </html>
    
    Paste_Image.png

    3.组合选择器

    Paste_Image.png
    举例:
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Examples</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <link href="" rel="stylesheet">
    <style type="text/css">
        h2{
            color:green;
        }
        .box h2{
            border:1px solid;
        }
        /*设置后代元素选择器,样式作用.box里所有的h2,不仅仅是直接子元素*/
    
        .box>h2{
            background-color: #ccc;
        }
        /*设置直接子元素选择器,样式作用.box里面最外层的元素,不包括最外层元素里面嵌套的元素*/
    
        .box .first,.content h2{
            font-size: 40px;
        }
        /*设置多元选择器,样式作用仅仅作用于这两个元素*/
    
        .content+h2{
            background-color: red;
        }
    /*设置直接相邻选择器,样式作用于.content同级且向下相邻的h2.first-“测试1”,
    没有选择不是同级的h2-“还用于测试”,
    以及是同级且向上相邻h2-“也用于测试”和同级不是相邻的h2-“测试3和测试4”
    */
    
        .box .first~h2{
            text-align: center;
        }
        /*设置普通相邻选择器,样式作用于.first同级且向下所有h2-“测试2/3/4”*/
    
        h2.first{
            height: 80px;
        }
    </style>
    </head>
    <body>
      <h2>我是用于测试</h2>
      <div class="box">
        <h2>我也是用于测试</h2>
        <div class="content">
            <h2>我还是用于测试</h2>
        </div>
        <h2 class="first">我是测试1</h2>
        <h2>我是测试2</h2>
        <h2>我是测试3</h2>
        <h2>我是测试4</h2>
      </div>
    </body>
    </html>
    
    Paste_Image.png

    4.属性选择器

    属性选择器就是根据元素的属性及属性值来选择元素

    Paste_Image.png
    1.在属性选择器中,自定义的属性也是可以用的,当然这是不推荐的,但是说明它非常灵活,任何属性都可以使用这些选择器。
    Paste_Image.png
    2.在属性选择器中经常使用[attribute=value]用于选取带有指定属性和值的元素。它可以应用在表单上,这样就不需再设置class,直接选择需要的元素。
    Paste_Image.png
    参考:
    w3cschool

    5.伪类选择器

    伪类是一种动态,是用户于html文档进行交互时,是一个元素失去或获得一种状态的特点状态属性,它的状态不是固定的,比方说鼠标经过或离开a链接发生的几种状态。
    也可以说用于向某些选择器添加特殊的效果
    伪类选择器和一般的DOM中的元素样式不一样,它并不会改变任何DOM内容。只是插入了一些修饰类的元素,这些元素对于用户来说是可见的,但是对于DOM来说却是不可见的。

    Paste_Image.png
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Examples</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <link href="" rel="stylesheet">
    <style type="text/css">
        .button{
            display: inline-block;
            height: 30px;
            line-height: 30px;
            text-align: center;
            background-color: orange;
            padding: 0px 20px;
            color: #fff;
            border-radius: 3px;
            cursor: pointer;
        }
        .button:hover{
            background-color:green;
            opacity:0.5;
        }
        .button:active{
            background-color: blue;
            opacity: 0.5;
        }
        input[type]:focus{
            outline:none;
            background-color: yellow;
        }
        .test>p:first-child{
            font-size: 40px;
        }
        .test>p:nth-child(3){
            font-size: 40px;
        }
        /*这里如果不加">"的话,它会在不同层级的子元素里找*/
        .test p:nth-child(3){
            color:green;
        }
        .wrap>p:first-of-type{
            color: red;
        }
        .wrap>p:nth-of-type(1){
            border: 1px solid purple;
        }
        /*这里如果不加">"的话,跟上面一样的*/
        .wrap p:nth-of-type(1){
            font-size:30px;
        }
    </style>
    </head>
    <body>
        <p>这是一个伪类选择器的测试</p>
        <div class="button">ok</div>
        <form>
            用户名:<input type="text" name="username"/>
        </form>
        <div class="test">
            <p>孩子测试</p>
            <div class="wrap">
                <div>
                    <p>孩子测试1</p>
                </div>
                <p>孩子测试2</p>
                <p>孩子测试3</p>
            </div>
            <p>孩子测试4</p>
            <p>孩子测试5</p>
        </div>
    </body>
    </html>
    
    Paste_Image.png

    参考:
    原创曹婷婷,写的通俗易懂,内容丰富,好用心呀!

    6.伪元素选择器

    ①CSS 伪元素用于向某些选择器设置特殊效果。伪元素为了让某个元素达到特殊的效果,那么需要添加新的元素,然后再设置样式。而伪类只需要在既有元素上添加类别,然后设置样式。

    Paste_Image.png
    E::before和E::after它们特有的属性content,这个必须使用,可以在css渲染中向元素逻辑上的头部和尾部添加内容,不会出现在DOM当中,不可复制,仅仅是在 CSS 样式中加入。
    ③比较常用的方法如下
    "string" 使用引号包括一段字符串,将会向元素内容中添加字符串
    a::after { content: "↗"; }                                                                          
    

    attr() 调用当前元素的属性值,比如可以将图片 Alt的 提示文字或者链接的 href 地址显示出来

    a::after { content:"(" attr(href) ")"; }  
    

    url() / uri()用于引用媒体文件

    h1::before { content: url(logo.png); }  
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Examples</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <link href="" rel="stylesheet">
    <style type="text/css">
        a::before{
            content:url(https://img.alicdn.com/tps
    /TB12fthLXXXXXXtXFXXXXXXXXXX-520-280.jpg);
        }
        a::after{
            content: "("attr(href)")"
        }
        h2::after{
            content: "↘";
        }
        h2::first-line{
            color:red;
        }
        p::first-letter{
            font-size:40px;
        }
    </style>
    </head>
    <body>
        <a href="https://www.taobao.com/">淘宝</a>
        <h2>天猫超市</h2>
        <p>主题市场</p>
    </body>
    </html>
    
    Paste_Image.png

    参考:
    伪类和伪元素的区别
    伪元素

    二、选择器的优先级是怎样的

    从高到低分别是
    1.在属性后面使用 !important会覆盖页面内任何位置定义的元素样式
    2.作为style属性写在元素标签上的内联样式
    3.id选择器
    4.类选择器
    5.伪类选择器
    6.属性选择器
    7.标签选择器
    8.通配符选择器
    9.浏览器自定义
    就是可以做一个直观感受,定位越精确,越快,那它的权重就越高,优先级也就越高。优先级高的样式会覆盖优先级低的,还有选择器权重一样的时候,后面的覆盖前面的。

    三、class 和 id 的使用场景

    • class具有普遍性,它可以重复使用。它可以给不同的元素赋予同一样式,也可以给相同元素设置不同的样式,所以它在结构内部使用。
    • id具有唯一性,它只能够使用一次,所以它用于页面布局,还可使用在独一无二的样式的标签。

    四、使用CSS选择器时为什么要划定适当的命名空间

    • 使用语义化的命名可以使代码容易读懂
    • 便于代码管理和多人协作
    • 浏览器可能会因为不规范的命名产生不同的样式
    • 提高页面渲染速度

    五、以下选择器分别是什么意思

    
        #header{
            /*这是id选择器,选择id名叫header的元素*/
        }
        .header{
            /*这是class选择器,选择class名叫header的元素*/
        }
        .header .logo{
            /*这是后代选择器,表示选择class名叫header的元素里面所有叫选择class名叫logo的元素*/
        }
        .header.mobile{
            /*这是类选择器,选择class类同时具有header和mobile的元素*/
        }
        .header p,.header h3{
            /*这是多元素元素选择器,选择.header中的p,h3元素*/
        }
        #header .nav>li{
            /*这是后代选择器,选择id为header的后代元素里class名为nav里的直接子元素li*/
        }
        #header a:hover{
            /*这是后代选择,选择id为header的后代中所有a链接是悬停状态的伪类选择器*/
        }
    

    六、列出你知道的伪类选择器

    • :link :visited :hover :active :focus
    • :first-child :nth-child() :first-of-type :nth-of-type()
    • :disabled :checked :selection :enabled

    七、:first-child和:first-of-type的作用和区别

    :first-child选择某父元素下第一个子元素,也可以说是结构上的第一个子元素,这个子元素可以是同种类型或不同类型的。
    :first-of-type选择某父元素下所有相同类型的子元素,其中排第一的那个子元素,也可以说是是父元素下相同类型子元素中的第一个。

    八、运行如下代码,解析下输出样式的原因

    Paste_Image.png

    九、text-align: center的作用是什么,作用在什么元素上?能让什么元素水平居中

    text-align作用于块级元素上,只能作用于块级元素,比如说一个div或者段落上面,对内部行内元素(比如文字或者图片)生效。


    Paste_Image.png

    十、如果遇到一个属性想知道兼容性,在哪查看?

    可以在can i use上查看

    Paste_Image.png

    大部分参考:
    曹婷婷
    课件

    next:9-1.盒模型
    pre:7.HTML4


    相关文章

      网友评论

          本文标题:8.CSS选择器

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