开发者问题收集

使用 CSS 点击时显示/隐藏 div

2011-05-16
326513
css

我有一个菜单和三个隐藏的 div,它们会根据用户选择的选项显示。我想仅使用 CSS 在单击时显示/隐藏它们。我现在可以使用 jquery 来实现,但我希望在禁用 js 的情况下也可以访问它。有人在这里为其他人提供了 此代码 ,但它仅适用于 div:hover 或 div:active,当我将其更改为 div:visited 时,它不起作用。我需要添加一些内容吗?或者这不是正确的做法?非常感谢任何帮助 :)

问题是我的客户希望这些特定的 div 在选择菜单时滑动/淡入淡出,但我仍然希望它们在关闭 javascript 的情况下正确显示。也许 z-index 可以解决问题……?

3个回答

对于仅使用 CSS 的解决方案,请尝试使用复选框 hack。基本上,这个想法是使用复选框,并根据复选框是否被选中使用 :checked 伪选择器分配不同的样式。如果需要,可以通过将复选框附加到 label 来隐藏复选框。

dabblet 链接(不是我的): http://dabblet.com/gist/1506530

CSS Tricks 文章链接: http://css-tricks.com/the-checkbox-hack/

Josh
2012-12-20

这可以通过将“tabindex”附加到元素来实现。这将使该元素“可点击”。然后,您可以使用 :focus 选择隐藏的 div,如下所示...

.clicker {
width:100px;
height:100px;
background-color:blue;
outline:none;
cursor:pointer;
}

.hiddendiv{
display:none;
height:200px;
background-color:green;
}

.clicker:focus + .hiddendiv{
display:block;
}
<html>
<head>
</head>
<body>

<div>
<div class="clicker" tabindex="1">Click me</div>
<div class="hiddendiv"></div>
</div>

</body>

</html>

+ 选择器将选择“clicker”div 之后最近的元素。您可以使用其他选择器,但我认为目前没有办法选择非同级或非子级的元素。

James Fidlin
2016-01-27

2022 年,您只需使用 details 元素,即可使用 HTML 实现此目的。必须使用 summary 元素提供摘要或标签。 所有主流浏览器 均支持 details

<details>
    <summary>Click Here for more info</summary>
    Here is the extra info you were looking for.
</details>
TrojanName
2022-03-28