如何从外部链接更改标记的CSS

Eri*_*rik 37 javascript css visibility toggle

我在一个名为的标签中有一个菜单sf-menu.

我需要将可见性更改none为单击链接时的可见性,并在再次单击时切换回来.

我可以只使用CSS实现这一点还是需要JavaScript?

希望有人可以帮我一个例子.

.sf-menu {visibility: visible}
<a class="closed" href="#sidewidgetarea"> Switch</a>
Run Code Online (Sandbox Code Playgroud)

sgl*_*kov 36

  1. 您可以使用input type ='checkbox':

http://jsfiddle.net/gSPqX/1/

<input type="checkbox" style="display: none" id="cb">
<label for="cb">Click Here</label>
<div>
    Hello. This is some stuff.
</div>
Run Code Online (Sandbox Code Playgroud)
  1. 使用更好的解决方案 :target

#menu .menu{
   display:none; 
}
#menu:target  .menu{
    display: block;
}

#menu:target .menu__open{
    display: none;
}
#menu .menu__close{
    display: none;
}
#menu:target .menu__close{
    display: block;
}
Run Code Online (Sandbox Code Playgroud)
<div id="menu">
    <a href="#menu" class="menu__open">Open menu</a>
    <a href="#" class="menu__close">Close menu</a>
    <div class="menu">
        Hello. This is some stuff.
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 第一个解决方案不是这个问题的答案,但第二个是.这个答案应该被接受一个. (4认同)
  • @Eirk我同意这是我能想到实现这一目标的唯一纯粹的CSS方式.使用时要记住一些事情:目标虽然.我会在以下时间使用这些经验法则:目标是一个不错的选择:当需要"状态"时.当跳跃行为可以接受时.何时可以影响浏览器历史记录.摘自https://css-tricks.com/on-target/ (2认同)

小智 8

如果您使用的是jquery,则可以使用jquery.toggle()

例:

$(".closed").click(function(event) {
    event.stopPropagation()
    $(".sf-menu").toggle();
});
Run Code Online (Sandbox Code Playgroud)

资料来源:https://api.jquery.com/toggle/


Mia*_*eeb 5

你只能使用CSS来做到这一点.诀窍是留下可以点击的路径,并作为开关/按钮用于打开或关闭显示.您可以通过将需要切换的内容包装到某个div或任何其他适合您的元素中来实现.

这是一个小例子.

label {
  cursor: pointer;
}
#menu-toggle {
  display: none; /* hide the checkbox */
}
#menu {
  display: none;
}
#menu-toggle:checked + #menu {
  display: block;
}
Run Code Online (Sandbox Code Playgroud)
<label for="menu-toggle">Click me to toggle menu</label>
<input type="checkbox" id="menu-toggle"/>
<ul id="menu">
  <li><a href="#">First link</a></li>
  <li><a href="#">Second link</a></li>
  <li><a href="#">Third link</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)