我真的希望我不会重复一个老问题 - 我是选择新手,所以我的术语可能不足。
我正在开发基于此Default :target with CSS解决方案的标签式单页网页。我希望当前标签以某种方式突出显示或更改其链接,以指示当前位置。
HTML:
<ul id="tabnav">
<li><a href="#tab1" class="tab1">Tab 1</a></li>
<li><a href="#tab2" class="tab2">Tab 2</a></li>
</ul>
<a id="tab1"></a>
<a id="tab2"></a>
<div class="tab tab1 default-tab">This is text you should see as you load the page</div>
<div class="tab tab2">This is text that will appear after you click on tab 2</div>
CSS:
.tab {
display:none
}
.default-tab {
display:block
}
:target ~ .default-tab {display:none}
#tab1:target ~ .tab1,
#tab2:target ~ .tab2 {
display: block
}
ul#tabnav a:hover {
background: red;
}
ul#tabnav a:target{
border-width: thick;
border-color: black;
}
似乎我的最后一个元素(a:target)没有做任何事情,即使点击标签确实会带我到新的锚点并更改显示的内容。有什么建议吗?
答案 0 :(得分:1)
:target
是页面上元素的选择器,其中URL中包含id
或name
锚名称。因此,ul#tabnav a:target
不会匹配任何内容,但如果您将选择器更改为a:target
,则会将页面中间的2个链接设置为样式<a id="tab1"></a><a id="tab2"></a>
要在导航中设置“有效”链接的样式,您需要使用javascript在点击时添加一个类,然后设置该类的样式。
var $links = $('#tabnav a');
$links.on('click',function(e) {
e.preventDefault();
$links.removeClass('active');
$(this).addClass('active');
})
.tab {display:none}
.default-tab {display:block}
:target ~ .default-tab {display:none}
#tab1:target ~ .tab1,
#tab2:target ~ .tab2 {
display: block
}
.active {
color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<ul id="tabnav">
<li><a href="#tab1" class="tab1">Tab 1</a></li>
<li><a href="#tab2" class="tab2">Tab 2</a></li>
</ul>
<a id="tab1"></a>
<a id="tab2"></a>
<div class="tab tab1 default-tab">
This is text you should see as you load the page
</div>
<div class="tab tab2">
This is text that will appear after you click on tab 2
</div>
答案 1 :(得分:0)