【问题标题】:How to select parents sibling with CSS? [duplicate]如何使用 CSS 选择父母兄弟姐妹? [复制]
【发布时间】:2016-04-23 21:42:33
【问题描述】:

当我将鼠标悬停在第一个 <li> 上时,我想更改 .arrow-tip 类的 background-color。你能帮我找到正确的 CSS 规则吗?

HTML:

<nav>
    <ul>
        <li>Item 1</li>
        <li>Item 2</li>
    </ul>
</nav>
<div class="arrow-tip">A triangle tip for the nav menu</div>

CSS:

nav > ul > li:nth-child(1):hover ~ .arrow-tip {
    background-color: #FF0;
}

我想要一个 PURE CSS 解决方案。

【问题讨论】:

    标签: html css css-selectors


    【解决方案1】:

    不,目前无法使用 CSS,read this

    不过,我想你可以改用 JsFiddle 之类的方法。

    ul {
        list-style: none;
        padding: 0;
        width: 45px;
        text-align: center;
        position: relative;
    }
    li {
        background: silver;
        margin: 0 0 5px;
    }
    li:after {
        content:"\25be";
        font-size: 2em;
        position: absolute;
        left: 10px;
        top: 35px;
    }
    li:hover:after {
        z-index: 1;
    }
    li:nth-child(1):hover:after {
        color: red;
    }
    li:nth-child(2):hover:after {
        color: blue;
    }
    <ul>
        <li>A</li>
        <li>B</li>
    </ul>

    编辑:这是 OP 真正想要实现的 JsFiddle

    有兴趣的请关注上面的cmets。

    .menu {
        list-style: none;
        padding: 0;
    }
    .menu > li {
        position: relative;
        background: fuchsia;
        width: 100px;
        height: 20px;
        display: inline-block;
        vertical-align: top;
    }
    .submenu {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        list-style: none;
        padding: 30px 0 0;
        margin: 0;
    }
    .submenu > li {
        background: fuchsia;
        display: block;
    }
    .submenu > li:before {
        content: "";
        position: absolute;
        top: 20px;
        left: 50%;
        margin-left: -10px;
        width: 0;
        height: 0;
        border-left: 10px solid transparent;
        border-right: 10px solid transparent;
        border-bottom: 10px solid aqua;
        z-index: -1;
    }
    /* hide */
    .submenu {
        display: none;
    }
    /* hover */
    .menu > li:hover {
        background: aqua;
    }
    .menu > li:hover > ul {
        display: block;
    }
    .submenu > li:hover {
        background: aqua;
    }
    .submenu li:not(:nth-child(1)):hover:before {
        border-bottom: 10px solid fuchsia;
        z-index: 0;
    }
    <ul class="menu">
        <li>one
            <ul class="submenu">
                <li>a</li>
                <li>b</li>
                <li>x</li>
                <li>y</li>
                <li>z</li>
            </ul>
        </li>
        <li>two
            <ul class="submenu">
                <li>c</li>
                <li>d</li>
            </ul>
        </li>
        <li>three
            <ul class="submenu">
                <li>e</li>
                <li>f</li>
            </ul>
        </li>
        <li>four
            <ul class="submenu">
                <li>g</li>
                <li>h</li>
            </ul>
        </li>
    </ul>

    【讨论】:

      猜你喜欢
      • 2013-06-07
      • 1970-01-01
      • 2021-08-04
      • 2013-06-04
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多