假设我有三个包含独特内容的div;
当我的页面加载时,它们都需要隐藏;
它们也被放置在彼此之上(占据相同宽度,但高度不同的空间)。
这些div上面有一个水平菜单可以触发它们的可见性;
|查看1 |查看2 |查看3 |
如果用户点击“查看1”,则div1变为可见;
如果用户点击“查看2”,则只能看到div2;
点击“查看3”也一样;
我目前的解决方案可以通过JSFiddle在这里获得;
仅使用<div>
,<label>
和<input>
如何以尽可能小的方式仅使用HTML和CSS(无脚本)来解决这个问题?
答案 0 :(得分:2)
诀窍是在<label>
之后添加<input type="checkbox">
标记,并在CSS中为输入添加选择器:checked
,如触发器。
<强> HTML 强>
<input class="trigger" id="1" type="checkbox">
<label for="1">Click me</label>
<div>Surprise!</div>
<br><br>
<input class="trigger" id="2" type="checkbox">
<label for="2">Click me too</label>
<div>Surprise again!</div>
<强> CSS 强>
.trigger + label + div /*This selects the div that is placed after a label that's after a element with 'trigger' class*/
{
display:none; /*hiding the element*/
}
.trigger /*This selects a element with class 'trigger'*/
{
display:none; /*hiding the element*/
}
.trigger:checked + label + div /*This selects the div that is placed after a label that's after a CHECKED input with class 'trigger'*/
{
display:block; /*showing the element*/
}
<强> 强>
或者
<强> 强>
你说你希望div出现没有任何菜单变形,对吧?尝试将所有<div>
放在底部,并在此之前添加每个对应的<input>
。标签保持在顶部。
就像那样:
<label for="1">Click me</label>
<label for="2">Click me too</label>
<br/><br/>
<input class="trigger" id="1" type="checkbox"/>
<div class="cont"><strong>1st Title</strong><br/>And 1st content.</div>
<input class="trigger" id="2" type="checkbox"/>
<div class="cont"><strong>2nd Title</strong><br/>And 2nd content.</div>
并在CSS中:
.trigger:checked + div {
display:block;
}
(对不起,如果我的英语不好)
答案 1 :(得分:0)
尝试不同的CSS菜单。你可以从谷歌中获取很多东西。 以下是从网络收集的一些样本:
http://www.smashingapps.com/2013/02/18/48-free-dropdown-menu-in-html5-and-css3.html
http://css3menu.com/enterprise-green.html