• CSS3选择器


    基本选择器

     下面所有的基本选择器都是在demo1.html的基础上面添加部分样式实现的。

    demo1.html

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <style type="text/css">
        .demo{
            width:400px;
            height:50px;
            border:1px solid #ccc;
            padding:10px;
        }
        ul{
            height:30px;
        }
        li{
            text-decoration: none;
            list-style: none;
            float:left;
            height:20px;
            line-height: 20px;
            width:20px;
            border-radius:10px;
            text-align:center;
            background:#f36;
            color:green;
            margin-right:5px;
    
        }
        </style>
    </head>
    <body>
        <div class="demo">
            <ul class="clearfix">
                <li id="first" class="first">1</li>
                <li class="active important">2</li>
                <li class="important items">3</li>
                <li class="important">4</li>
                <li class="items">5</li>
                <li>6</li>
                <li>7</li>
                <li>8</li>
                <li>9</li>
                <li id="last" class="last">10</li>
            </ul>
        </div>
    </body>
    </html>

    通配符选择器(*)

    通配符选择器用来选择所有元素,也可以选择某个元素下的所有元素。
    *{margin:0;padding:0;}
    .demo *{border:1px solid blue;}

    元素选择器(E)

     元素选择器用于选择文档元素
    li{background-color:grey;color:orange;}

    类名选择器

    .important{font-weight:bold;color:yellow;}

    类选择器结合元素选择器使用
    li.important{font-weight:bold;color:yellow;}

    id选择器

    id选择器,同类选择器相同,具有唯一使用性的用ID选择器
    #first{color:blue;}

    后代选择器(E F)

    选择元素E下面所有的后代F元素,不论之间隔了多少层, 都能被选中。
    .demo li{color:blue;}

    子元素选择器(E > F)

    此时的F是E的直接子元素,他们之间只隔了一层,为父子关系
    ul>li{color:yellow;}

    相邻兄弟元素选择器(E + F)

    EF两元素具有相同的父元素,而且F元素在E元素后面,二者相邻(此时只有第2开始的li满足条件)

    li + li{border:1px solid blue;} 

    通用兄弟选择器(E ~F)

    此时的EF具有相同的父元素,F在E后面,选择所有在E后面且和E拥有统一父元素的多个F
    li ~ li{border:1px solid blue;}

    群组选择器

    .first,.last{background-color:red;}

    属性选择器

     常见的属性选择器包括以下几类:

    • E[attr]:只使用属性名,但没有确定任何属性值
    •     E[attr = "value"]:指定属性名,并指定了该属性的属性值
    •     E[attr~="value"]:指定属性名,并且具有属性值,此属性值是一个词列表,并且以空格隔开,其中词列表中包含了一个value词,而且等号前面的~不能不写
    •     E[attr^="value"]:指定了属性名。并且有属性值,属性值是以value开头的
    •     E[attr$="value"]:指定了属性名,并且有属性值,且属性值是以value结束的
    •     E[attr*="value"]:指定了属性名,并且有属性值,且属性值中包含了value
    •     E[attr|="value"]:指定了属性名,并且属性值是value或者以"value-"开头的值
    在这些属性选择器中,E[attr="value"]和E[attr*="value"]是最实用的,其中E[attr="value"]能帮我们定位不同类型的元素,特别是表单form元素的操作,比如说input[type="text"],input[type="checkbox"]等,而E[attr*="value"]能在网站中帮助我们匹配不同类型的文件,比如说你的网站上不同的文件类型的链接需要使用不同的icon图标,用来帮助你的网站提高用户体验,就像前面的实例,可以通过这个属性给".doc",".pdf",".png",".ppt"配置不同的icon图标。

    下面所有的属性选择器都是在demo2.html的基础上加入相关样式实现的。

    demo2.html

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <style type="text/css">
        .demo{
            width:300px;
            height:40px;
            border:1px solid #ccc;
            padding:10px;
        }
        .demo a{
            float:left;
            display:block;
            height:20px;
            line-height:20px;
            width:20px;
            border-radius:10px;
            text-align:center;
            background:#f36;
            color:green;
            margin-right:5px;
            text-decoration:none;
        }
        </style>
    </head>
    <body>
        <div class="demo clearfix">
            <a href="http://www.w3cplus.com" target="_blank" class="links item first" id="first" title="123"> 1</a>
            <a href="" class="links active item" title="test website" target="_blank" lang="zh">2</a>
            <a href="sites/file/test.html" class="links item" title="this is a link" lang="zh-cn">3</a>
            <a href="sites/file/test.png" class="links item"  target="_blank" lang="zh-tw">4</a>
            <a href="sites/file/image.png" class="links item" title="zh-cn">5</a>
            <a href="mailto:w3cplus@hotmail" class="links item" title="website link" lang="zh">6</a>
            <a href="" class="links item" title="open the website"  lang="cn">7</a>
            <a href="" class="links item" title="close the website"  lang="en-zh">8</a>
            <a href="" class="links item" title="http://www.sina.com" >9</a>
            <a href="" class="links item last" id="last">10</a>
        </div>
    </body>
    </html>

    E[attr]

    .demo a[id]{background:blue;color:yellow;}

    .demo a[href][title]{background: yellow;}

    E[attr = "value"]

    .demo a[id="first"]{background:blue;}

    .demo a[href="http://www.w3cplus.com"][title]{background-color: #fff;}
     

    E[attr~="value"]

    .demo a[title~="website"]{background:orange;}

    E[attr^="value"]

    .demo a[href^="sites/"]{background:#eee;}

    E[attr$="value"]

    .demo a[href$="png"]{background:#070707;}

    E[attr*="value"]

    .demo a[title*="site"]{background-color: violet;}

    E[attr|="value"]

    .demo a[lang|="zh"]{background:gray;}

    伪类选择器

    下面所有的伪类选择器都是在demo3.html的基础上加入相关样式实现的。

    demo3.html

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <style type="text/css">
        .demo{
            width:400px;
            height:50px;
            border:1px solid #ccc;
            padding:10px;
        }
        li{
            border:1px solid #ccc;
            padding:2px;
            float:left;
            margin-right:4px;
            list-style: none;
        }
        a{
            float:left;
            display:block;
            height:20px;
            line-height:20px;
            width:20px;
            border-radius:10px;
            text-align:center;
            background:#f36;
            color:green;
            text-decoration:none;
        }
        </style>
    </head>
    <body>
        <div class="demo clearfix">
            <ul class="clearfix">
                <li class="first links" id="first"><a href="">1</a></li>
                <li class="links"><a href="">2</a></li>
                <li class="links"><a href="">3</a></li>
                <li class="links"><a href="">4</a></li>
                <li class="links"><a href="">5</a></li>
                <li class="links"><a href="">6</a></li>
                <li class="links"><a href="">7</a></li>
                <li class="links"><a href="">8</a></li>
                <li class="links"><a href="">9</a></li>
                <li class="links last" id="last"><a href="">10</a></li>
            </ul>
        </div>
    </body>
    </html>

    动态伪类

    动态伪类:只有当用户和网站交互的时候才能体现出来的,link:链接没有被访问时的样式,visited:链接被访问以后的样式,hover:鼠标悬浮时的样式,active:鼠标点中激活的已瞬间的样式。
    .demo a:link{color:gray;}         
    .demo a:visited{color:yellow;}  
    .demo a:hover{color:green;}        
    .demo a:active{color:blue;} 

    UI元素状态伪类

    UI元素状态伪类主要指type=text时的enable和disabled,type=radio和type=checkbox的checked和unchecked等。
    input[type="text"]:disabled {border:1px solid red;} 

    :nth选择器

    :first-child用来选择某个元素的第一个子元素,:last-child用来选择某个元素的最后一个子元素。
    .demo li:first-child{background:green;}
      .demo li:last-child{background:green;}

    :nth-child()用来选择某个元素的一个或多个特定的子元素
    .demo li:nth-child(n){background:green;}  /*选择demo下的所有li*/
    .demo li:nth-child(n+5){background:green;}    /*选择demo下从第五个开始的li*/
    .demo li:nth-child(-n+5){background:green;}       /*选择demo下的前五个li*/
    .demo li:nth-child(5){background:green;}     /*选择demo下的第五个li*/
    .demo li:nth-child(5n){background:green;}      /*选择demo下5的倍数的li*/
    .demo li:nth-child(3n+1){background:green;}      /*每隔3个选一个*/
    .demo li:nth-child(even){background:green;}      /*偶数个li*/
    .demo li:nth-child(odd){background:green;}      /*奇数个li*/
    :nth-last-child()同:nth-child()作用相同,只是一个是从前面开始计算,一个是从后面开始计算
    :nth-of-type:类似于:nth-child,不同的是这个只计算选择器中指定的那个元素,主要用来定位元素中包含了好多不同类型的元素

    :only-child

    :only-child:表示该元素是其父元素的唯一的子元素
    :only-of-type:表示一个元素有很多个子元素,而其中只有一个子元素是唯一的,
    例如,在一个div中,包含有div、li、p等等,而p只有一个,具有唯一性,就可以这样写 p:only-of-type{background-color: green}

    :empty

    :empty:用来选择没有任何内容的元素,包括空格都没有
    p:empty{display: none}

    :has

    :has:用来选择包含某元素的元素
    a:has( img ){border:1px solid red;} /*为所有包含img的a添加边框*/

    :not

    :not:用来选择不包含某元素的元素
    li:not(:has(p)){padding-top:10px;}  /*选择不包含p的li元素*/

    :matches

    :matches用于匹配是否包含某些类或id。
    p:matches(.alert,.error,.warn){color:red;}  /*只要元素p带有.alert,.error,.warn中的任何一个类名,文本颜色就变为red*/

    伪元素

    ::first-line:选择元素的第一行
    ::first-letter:选择文本块的第一个字母
    ::before和::after:主要用来在元素的前后插入内容
    ::selection用来改变浏览网页选中的默认效果
     
     
     
  • 相关阅读:
    张小龙:微信十周年总结
    天呐!!!竟还有人不知道如何将Python程序打包成exe
    Making Games with Python & Pygame 中文翻译
    turtle怎么引入背景图片
    Python少儿编程全集(一):一只小海龟(turtle库的使用)
    C/C++基础编程
    少儿编程论坛,汇集所有少儿编程资源!!!
    少儿编程:认识python中的turtle库(一)
    博客导航栏,衣渐衫衣终不悔,沉淀技术这十年(持续更新...)
    SpringBoot学习笔记【尚硅谷】
  • 原文地址:https://www.cnblogs.com/yuyujuan/p/10444805.html
Copyright © 2020-2023  润新知