• (前端)html与css,css 3、高级选择器


    基础选择器并不能满足我们所有需求,在基础选择器上进行了延伸。

    1、后代选择器

    通过标签之间的嵌套关系,层级关系,限定我们答题范围,在范围内具体查找相关元素。
    代码↓

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>Document</title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            .box1 li{
                color: red;
            }
    
        </style>
    </head>
    <body>
        <div class="box1">
            <ul>
                <li>这是第一个div</li>
                <li>这是第一个div</li>
                <li>这是第一个div</li>
                <li>这是第一个div</li>
            </ul>
        </div>
        <div class="box2">
            <ul>
                <li>这是第二个div</li>
                <li>这是第二个div</li>
                <li>这是第二个div</li>
                <li>这是第二个div</li>
                </ul>
    </body>
    </html>
    View Code

    效果图↓

    后代选择器根据嵌套关系,空格左侧是右侧的祖先元素
    后代选择器空格两边只要是后代关系就可以,不一定是父子关系,就比如上面代码里并没有把ul也写到box1后面。
    一般开始的祖先元素都不使用标签选择器。
    可以根据嵌套关系来确定最终元素。
    代码↓

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>Document</title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }    
            div ul li dl dd p{
                color: blue;
            }
    
        </style>
    </head>
    <body>
        <p>这是外面的文字</p>
        <div>
            <ul>
                <li>
                    <dl>
                        <dt></dt>
                        <dd>
                            <p>这是里面的文字</p>
                        </dd>
                    </dl>
                </li>
            </ul>
        </div>
    </body>
    </html>
    View Code

    效果图↓

    2、交集选择器

    满足条件1也满足条件2。
    两种或两种以上选择器同时存在。
    写法:选择器之间直接连接,没有任何符号
    代码↓

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>Document</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            p.one{
                color: red;
            }
        </style>
    </head>
    <body>
        <ul>
            <li>
                <p class="one">这是p标签</p>
            </li>
            <li class="one">这是li标签</li>
            <li></li>
            <li></li>
        </ul>
    </body>
    </html>
    View Code

    同时存在

    满足条件1也满足条件2

    效果图↓

    理解:ul标签中我的p标签和li标签类名都是one,用交集选择器直接写p.one就可以。

    交集使用的基础选择器可以都是类选择器,可以是标签、类混写。
    交集选择器的连续书写。代码↓

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>Document</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            p.one{
                color: red;
            }
            li.one.lis{
                color: green;
            }
        </style>
    </head>
    <body>
        <ul>
            <li>
                <p class="one">这是p标签</p>
            </li>
            <li class="one lis">这是li标签</li>
            <li></li>
            <li></li>
        </ul>
    </body>
    </html>
    View Code

    上面li.one.lis表示:这个元素既是li标签,又得有one名和lis名。

    常见问题:IE6不支持类的连续交集。

    3、并集选择器

    有很多元素可能有相同的css样式,可以通过并集选择器将这些标签写在一起,统一设置css样式。
    前面所有的选择器都可以作为并集里的一项,在选择器中间用逗号隔开。
    代码↓

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>Document</title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            p,li.one{
                color: red;
            }
        </style>
    </head>
    <body>
        <ul>
            <p class="one">这是p</p>
            <li class="one lis">这是1</li>
            <li>这是2</li>
        </ul>
        <ul>
            <li>这是3</li>
            <li class="one">这是4</li>
            <li>这是5</li>
        </ul>
    </body>
    </html>
    View Code

    多个选择器选中的元素使用同一个样式。
    等价于↓

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>Document</title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            p{
                color: red;
            }
            li.one{
                color: red;
            }
    
        </style>
    </head>
    <body>
        <ul>
            <p class="one">这是p</p>
            <li class="one lis">这是1</li>
            <li>这是2</li>
        </ul>
        <ul>
            <li>这是3</li>
            <li class="one">这是4</li>
            <li>这是5</li>
        </ul>
    </body>
    </html>
    View Code

    效果图↓

    用途:清空默认样式,用之前的通配符清空默认样式效率低。
    利用并集选择器清除默认样式↓

    div,ul,li,p{
        margin: 0;
        padding: 0;
    }
    ul,ol{
        list-style: none;
    }
    View Code
  • 相关阅读:
    Windbg使用
    C#与C++之间类型的对应
    Hook CreateProcess
    基于EasyHook实现监控explorer资源管理器文件复制、删除、剪切等操作
    GUID和UUID、CLSID、IID 区别及联系
    hook C++
    EasyHook Creating a remote file monitor
    hook工具
    EasyHook
    Hook exe 和 file
  • 原文地址:https://www.cnblogs.com/StevenSunYiwen/p/11005434.html
Copyright © 2020-2023  润新知