我的功能是隐藏并使用纯css 显示div但是当我点击打开时,该按钮仍然不会消失。
<a href="#show" id="open" class="btn btn-default btn-sm">Open</a>
<div id="show">
some text...
<a href="#hide" id="close" class="btn btn-default btn-sm">Close</a>
</div>
和css看起来像:
<style>
#show {display: none; }
#show:target { display: inline-block; }
#hide:target ~ #show { display: none; }
<style>
当我添加这个:
#show:target ~ #open { display: none; }
按钮#open
仍未隐藏
任何人都可以帮助我。
之前感谢:)
答案 0 :(得分:6)
您可以通过将您的Open链接放在#show
div
<强> jsFiddle 强>
<强> HTML 强>
<div id="show">
<a href="#show" id="open" class="btn btn-default btn-sm">Open</a>
<div id="content">
some text...
<a href="#hide" id="close" class="btn btn-default btn-sm">Close</a>
</div>
</div>
<强> CSS 强>
#content {
display: none;
}
#show:target #content {
display: inline-block;
}
#show:target #open {
display: none;
}
答案 1 :(得分:3)
可以使用Checkbox
为纯css实现点击功能。我按如下方式修改了您的HTML:
<强> HTML 强>
<input id="checkbox" type="checkbox" class="checkbox" />
<label id="open" for="checkbox" class="btn btn-default btn-sm"> <span class="show-text"></span>
</label>
<div id="show">some text...
<label for="checkbox" class="second-label btn btn-default btn-sm">Close</label>
</div>
<强> CSS 强>
:checked ~ .btn-default, #show, .checkbox {
display: none;
}
:checked ~ #show {
display: block;
}
.show-text:after {
content:"Open";
}
:checked + .show-text:after {
content:"";
}
.second-label, .show-text {
text-decoration: underline;
cursor: pointer;
}
答案 2 :(得分:1)
Mr_Green感谢您提供该代码。我将其修改为移动设备上的响应式扩展菜单
<input id="menu-toggle" type="checkbox" class="checkbox-toggle" />
<label id="open" for="menu-toggle" class="btn btn-default">Menu</label>
<div id="show">
Some Content
</div>
@media (max-width: 650px) {
input.checkbox-toggle + label {
display: block;
padding:.7em 0;
width:100%;
background:#bbbbbb;
cursor: pointer;
text-align:center;
color:white;
Text-transform:uppercase;
font-family:helvetica, san serif;
}
input.checkbox-toggle:checked + label {
background:#6a6a6a;
}
#show {
display: none;
}
input.checkbox-toggle:checked ~ #show {
display: block;
}
}
input.checkbox-toggle {
display: none;
}