我正在进行完整的CSS标签导航。 这就是我想要做的事:http://jsfiddle.net/7fZnn/1/
但我不想使用内联CSS来放置标签。所以我研究了什么可以取代这个内联CSS。我找到了那些:
这是我的代码,包含CSS变量(和评论中的计数器):http://jsfiddle.net/j8wxQ/2/
<div class="container">
<div class="tabs">
<div class="tab" id="foo">
<a href="#foo">Foo</a>
<div class="content">
<h1>Onglet 1</h1>
<p>Lorem Ipsum...</p>
</div>
</div>
<div class="tab" id="bar">
<a href="#bar">Bar</a>
<div class="content">
<h1>Onglet 2</h1>
<p>Lorem Ipsum...</p>
</div>
</div>
<div class="tab" id="toto">
<a href="#toto">Toto</a>
<div class="content">
<h1>Onglet 3</h1>
<p>Lorem Ipsum...</p>
</div>
</div>
<div class="tab" id="tata">
<a href="#tata">Tata</a>
<div class="content">
<h1>Onglet 4</h1>
<p>Lorem Ipsum...</p>
</div>
</div>
<div class="tab default" id="titi">
<a href="#titi">Titi</a>
<div class="content">
<h1>Onglet 5</h1>
<p>Lorem Ipsum...</p>
</div>
</div>
</div>
</div>
:root {
var-tab: 0px;
}
@media screen and (min-width: 1025px) {
.container {
width: 1000px;
margin: auto;
}
}
@media screen and (max-width: 1024px) and (min-width: 641px) {
.container {
width: 99%;
margin: auto;
}
}
@media screen and (max-width: 640px) {
.container {
width: 100%;
margin: 0;
padding: 0;
}
body, html {
margin: 0;
padding: 0;
}
}
.tabs {
position: relative;
width: 100%;
/*counter-reset: tab 0;*/
}
.tab {
/*counter-increment: tab;*/
var-tab: calc(var(tab) + 75px);
}
.tab .content {
display: none;
position: absolute;
top: 50px;
margin-top: -5px;
border: solid 5px rgba(0,0,255, 0.1);
padding: 10px 10px 10px 10px;
}
.tab:target .content {
display: block;
position: absolute;
top: 50px;
}
.tab.default .content{
display: block;
position: absolute;
top: 50px;
}
.tab:target ~ .tab.default .content {
display: none;
}
.tabs .tab a {
position: absolute;
top: 0;
left: var(tab);
/*left: calc(75px * counter(tab));*/
display: inline-block;
height: 45px;
line-height: 45px;
min-width: 75px;
margin: 0;
padding: 0;
text-decoration: none;
color: #000;
vertical-align: middle;
border-bottom: solid 5px rgba(0,0,255, 0.1);
text-align: center;
}
.tabs .tab a:hover {
border-bottom: solid 5px rgba(0,0,255,0.5);
}
.tabs .tab:target a {
border-bottom: solid 5px rgba(0,0,255,1);
}
p {
text-align: justify;
}
那么,我错过了什么?你认为我可以用别的东西来实现我的目标吗?
感谢您的帮助!
答案 0 :(得分:2)
您可以尝试更改这些:
.tab {
/*counter-increment: tab;*/
/*var-tab: calc(var(tab) + 75px);*/
width: 75px; //fixed width, like you did on your example
display: inline-block;
}
.tab .content {
display: none;
position: absolute;
top: 50px;
left: 0; //push all content to the left edge of tab
margin-top: -5px;
border: solid 5px rgba(0,0,255, 0.1);
padding: 10px 10px 10px 10px;
}
我已经更新了你fiddle,看看这是否适合你。
观察:标签上的小间距可能是html标记,隐藏的空格字符来自.tabs div。
答案 1 :(得分:0)
不幸的是,css变量远非生产就绪(即广泛支持以便在公共站点上使用)。
我认为最可行的(纯css)解决方案是最明显的解决方案,因为有少量的标签,你可以简单地为每个标签选择一个。这并不是特别优雅,但效果很好。
.tab:nth-child(1) > a {
left: calc(74px * 0);
}
.tab:nth-child(2) > a {
left: calc(74px * 1);
}
.tab:nth-child(3) > a {
left: calc(74px * 2);
}
/* etc.. */
答案 2 :(得分:0)
在Firefox 31版本中启用了CSS变量。您必须在早期版本29和30中设置一个标志才能启用它。