当父有文本装饰时,摆脱嵌套的li文本装饰

时间:2012-05-24 08:27:33

标签: html css html5 css3

http://jsfiddle.net/Lqvcr/53/

这是非常基本的,我不知道如何让它发挥作用。

如果下拉列表锚点没有下划线,如何保持.selected类加下划线?

HTML:

<ul id="nav">
    <li>
        <a href="about.html">about</a>
    </li>
    <li>
        <a href="about.html">about</a>
    </li>
    <li class="selected">
        <a href="work.html">Work</a>
        <ul id="second" class="vis">
            <li>
                <a href="graphicdesign.html">Graphic Design</a>
            </li>
            <li>
                <a href="illustrations.html">Illustrations</a>
            </li>
        </ul>
    </li>
    <!-- etcetera -->

CSS:

ul#nav {
    position: relative;
    margin-left: 0;
    padding-left: 0;
    display: inline;
}
ul#nav li {
    margin-left: 0;
    padding: 3px 15px;
    list-style: none;
    display: inline;
}
ul#nav li.first {
    margin-left: 0;
    border-left: none;
    list-style: none;
    display: inline;
}
ul#second {
    position: absolute;
    right: -57px;
    display: none;
}
.selected {
    text-decoration: underline;
}
.selected:hover ul#second {
    display: block;
}
.selected:hover ul#second li a {
    display: block;
}
a {
    text-decoration: none;
}

3 个答案:

答案 0 :(得分:3)

只需更改此行:

.selected a{text-decoration:underline;}

这个:

.selected > a{text-decoration:underline;}

答案 1 :(得分:1)

如果您对选择器更具体,可以强调所需的链接,则可以更轻松地选择您不想加下划线的其他项目。我改变了

.selected {text-decoration:underline;}

为:

.selected a {text-decoration:underline;}

另外,像这样添加了text-decoration: none;

.selected:hover ul#second li a {display:block; text-decoration: none;}

请参阅jsfiddle

答案 2 :(得分:0)

您必须为.selected选择器声明规则,并为较低级别的元素覆盖它。

因为.selectedtext-decoration: underlined;)的所需样式是用户代理默认值,我省略了一些text-decoration声明。剩下要做的就是为低级别元素添加规则,以高特异性定义:

.selected:hover ul li a {
    text-decoration: none;
}

这是updated jsFiddle,用于演示。

相关问题