Fiddle to your heart's content
HTML
<div>
<a tabindex="1" class="testA">Test A</a> | <a tabindex="2" class="testB">Test B</a>
<div class="hiddendiv" id="testA">1</div>
<div class="hiddendiv" id="testB">2</div>
</div>
CSS
.hiddendiv {display: none; }
.testA:focus ~ #testA {display: block; }
.testB:focus ~ #testB {display: block; }
好处
您可以将菜单链接水平放置=一个接一个地放在HTML代码中,然后您可以将所有内容一个接一个地放在HTML代码中,在菜单之后。
换句话说 - 其他解决方案提供了一种手风琴式方法,您可以单击链接并在链接后立即显示内容。然后下一个链接出现在该内容之后。
使用这种方法,您不会获得手风琴效果。相反,所有链接都保持在固定位置,单击任何链接只会更新显示的内容。内容高度也没有限制。
工作原理
在您的 HTML 中,您首先有一个 DIV。其他一切都在这个DIV 中。这很重要 - 这意味着您的解决方案中的每个元素(在这种情况下,A 用于链接,DIV 用于内容)是其他所有元素的兄弟。
其次,锚标记 (A) 具有 tabindex 属性。这使它们可点击,因此它们可以获得焦点。我们需要它来让 CSS 工作。这些同样可以是DIVs,但我喜欢使用A 作为链接——它们的样式会像我的其他锚一样。
第三,每个菜单项都有一个唯一的类名。这样我们就可以在 CSS 中单独识别每个菜单项。
第四,每个内容项都是DIV,并具有class="hiddendiv"。但是,每个内容项都有一个唯一的id。
在您的 CSS 中,我们将所有 .hiddendiv 元素设置为 display:none; - 也就是说,我们将它们全部隐藏。
其次,对于每个菜单项我们都有一行 CSS。这意味着如果您添加更多菜单项(即更多隐藏内容),您将不得不更新您的 CSS,是的。
第三,CSS 表示当.testA 获得焦点时(.testA:focus),则应显示相应的DIV,ID 标识(#testA)。
最后,当我刚刚说“对应的DIV”时,这里的技巧是波浪号(~) - 这个选择器将选择一个兄弟元素,它不必是非常下一个元素,与选择器匹配,在这种情况下,选择器是唯一的 ID 值 (#testA)。
正是这个波浪号使该解决方案与其他提供的解决方案不同,这使您可以根据单击其中一个链接简单地更新一些具有不同内容的“显示面板”,并且在涉及位置/你如何组织你的 HTML。不过,您只需要确保隐藏的DIVs 包含在与可点击链接相同的父元素中。
调味。