删除:target标签

Nic*_*ick 3 html css3

我一直在使用css3和target属性来制作交互式菜单。当我单击菜单按钮时,我使用:target属性使其打开子菜单。我只是说,当我的菜单点是目标时,将子菜单高度设置为自动,如果不是目标,则其高度应为0。

但是现在我的问题是:是否有一种简单的方法可以再次删除目标?我想做的是,当我单击菜单按钮时,子菜单将显示(我已经做过了)。然后,如果我再次单击相同的按钮,我想再次关闭。

有没有办法用纯CSS / HTML做到这一点,还是我需要更改为javascript / jquery来做到这一点?到目前为止,我使用css3来避免这种情况。

Ily*_*syn 5

您可以创建到另一个锚的绝对定位的链接,该锚出现在指向您的链接的前面:target,并仅在当前:target有效时显示。因此,从视觉上看,它将作为切换链接(请参阅fiddle):

的HTML

<div id="test">
    <h2>
        <a href="#test">Open me</a>
        <a href="#" class="untarget"></a>
    </h2>
    <div>
        <p>Some contents</p>
        <p>Some more contents</p>
        <p>Some more contents again</p>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS的关键部分

h2 {
    position: relative;
    display: inline-block;
}

.untarget {
    position: absolute;
    top: 0;
    width: 100%;
    height: 100%;
    display: none;
}

:target .untarget {
    display: block;
}
Run Code Online (Sandbox Code Playgroud)

在没有JS的情况下实现切换功能的另一种(也是非常流行的)方法是使用隐藏的复选框/单选按钮及其:checked伪类以及CSS同级组合器。但个人而言,我怀疑这是否是正确的HTML使用方式。