所以我想用CSS创建一个标签系统。
到目前为止我的工作原理,但我不知道默认情况下如何显示一个标签。
标签:
<section class="tabs">
<ul>
<li><a href="#tab1">1</a></li>
<li><a href="#tab2">2</a></li>
<li><a href="#tab3">3</a></li>
</ul>
<section id="tab1"> content for 1... </section>
<section id="tab2"> content for 2... </section>
<section id="tab3"> content for 3... </section>
</section>
和css(最重要的部分):
.tabs section{
display: none;
}
.tabs section:target{
display: block;
}
所以如果我将section:first-child
设置为阻止(默认情况下第一个选项卡应该可见),那么如果URL中有锚点,我会得到两个可见的部分:第一个选项卡和目标选项卡。
我该如何克服这个问题?
答案 0 :(得分:4)
好吧,如果你将默认设置作为最后一个标签(section:last-child
),那么我认为这可行:
.tabs section,
.tabs section:target ~ section {
display: none;
}
使用常规兄弟选择器~
要求元素位于其目标的兄弟节点之前,因此需要last-child
而不是first-child
的原因。
编辑:11-12-2011,我确实找到了一种方法让您突出显示您的a
代码为有效!假设它符合您的特定应用。这里有一些简单的修改代码用于概念验证(仅在FF中测试):
HTML
<section class="tabs">
<ul class="nav">
<li><a href="#tab1">1</a></li>
<li><a href="#tab2">2</a></li>
<li><a href="#tab3">3</a></li>
</ul>
<section id="tab2"><div class="tabActive"></div> content for 2... </section>
<section id="tab3"><div class="tabActive"></div> content for 3... </section>
<section id="tab1"><div class="tabActive"></div> content for 1... </section>
</section>
CSS
.nav {
position: relative;
z-index: 2;
margin: 10px .5em 0;
}
.nav li {
padding: .5em;
width: 2em;
text-align: center;
float: left;
}
.tabs section,
.tabs section:target ~ section {
display: none;
}
.tabs section:target,
.tabs section:last-child {
display: block;
clear: left;
margin: 0 .5em;
min-width: 300px; /* for show only */
min-height: 200px; /* for show only */
border: 1px solid black;
position: relative;
z-index: 1;
padding: 10px;
}
.tabActive { /* set for tab 1 */
width: 2em;
height: 2em;
position: absolute;
top: -2em;
left: .5em;
border: 1px solid black;
border-bottom: transparent;
background-color: inherit;
margin-top: -1px; /* top border height */
margin-left: -1px; /* left border width */
}
#tab1 {background-color: cyan;}
#tab2 {background-color: yellow;}
#tab3 {background-color: pink;}
#tab2 .tabActive {left: 3.5em;}
#tab3 .tabActive {left: 6.5em;}