CSS的4个组合选择器

300 阅读2分钟

格式: A元素 某组合选择器 B元素

后代选择器(空格)

后代选择器,也可称之为“子子孙孙选择器”,它会选中其儿子、孙子、曾孙...子子孙孙。即,它会选中A元素包裹的每一个B元素,并对选中的B元素应用样式。

<head>
    <style>
        div p{
            background: yellow;
        }
    </style>
</head>
<body>
    <div>
        <p>我是div的儿子p,被选中了,背景变成了黄色</p>
        <p>我是div的儿子p,被选中了,背景变成了黄色</p>
        <span><p>我是div的孙子p,被选中了,背景变成了黄色</p></span>
    <div>
    <p>我不在div中,样式没变化</p>
</body>

子元素选择器(>)

子元素选择器,只会选中儿子元素,而不会选中孙子、曾孙、曾曾孙...即,它会选中A元素直接包裹的B元素,并对选中的B元素应用样式。

<head>
    <style>
        div>p{
            background: yellow;
        }
    </style>
</head>
<body>
    <h1>我是h1</h1>
    <div>
        <h2>我是h2</2>
        <p>我是div直接包裹的儿子p,被选中了,背景变成了黄色</p>
        <p>我是div直接包裹的儿子p,被选中了,背景变成了黄色</p>
        <span>
            <p>我先被span包裹再被div包裹,是div的孙子p,没有被选中,样式没变化</p>
        </span>
    <div>
    <p>我不在div中,样式没变化</p>
</body>

相邻兄弟选择器(+)

相邻兄弟选择器,会选中紧接在A元素后的B元素,并对这一个B元素应用样式。A、B有相同的父元素。

<head>
    <style>
        div+p{
            background: yellow;
        }
    </style>
</head>
<body>
    <h1>我是h1</h1>
    <p>我是div前面的第一个p,样式没变化</p>
    <div>
        <h2>我是h2</2>
        <p>我是div的儿子p,样式没变化</p>
    <div>
    <p>我是div后面的第一个p,被选中了,背景变成了黄色</p>
    <p>我是div后面的第二个p,样式没变化</p>
</body>

后续兄弟选择器(~)

后续兄弟选择器,会选中A元素后面的每一个B元素,并对这些B元素应用样式。A、B有相同的父元素。

<head>
    <style>
        div~p{
            background: yellow;
        }
    </style>
</head>
<body>
    <p>我是div前面的p,样式没变化</p>
    <p>我是div前面的p,样式没变化</p>
    <div>
        <p>我是div里面的p,样式没变化</p>
        <p>我是div里面的p,样式没变化</p>
    <div>
    <p>我是div后面的p,被选中了,背景变成了黄色</p>
    <p>我是div后面的p,被选中了,背景变成了黄色</p>
</body>

参考文档:www.runoob.com/css/css-com…