
已解决问题
谷歌h524992658用户在2016.05.05提交了关于“小贵族CSS实现Tab技巧”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-09-10T10:43:56。希望大家能够帮助她。详细问题描述及疑问:期待您的答案,感谢你,我会记得你对我的好的 !
详细问题描述及疑问:期待您的答案,感谢你,我会记得你对我的好的 !
程序员们都知道一般Tab都是靠Ja <dl> dd{
1.锚点+:target;
2.纯锚点;
这两种各有各优点,也有各自的局限性。
具体的Demo请查看这里
方案一:锚点+:target
CSS3中
<ahref="#dest">LinktoDes
<pid="dest">Thisisanewparagraph.</p>
方案一便是利用:target伪类来实现Tab切换。实现原理为:在页面加载的时候通过CSS隐藏Tab相对应的内
h**TML结构如下:
<d
<ddid="a"class="content-a">
ContentA
</
<dtclass="tab-b"><ahref="#b">TabB</a></dt>
<d
C
</dd>
<d
<ddid="c"class="content-c">
Conten
</dd>
<dtc
<ddid="d"class="content-d">
ContentD
</dd>
</d
使用该结构的一个好处在
关键的CSS代码如下
p
/*隐藏Tab的内容*/
displ
-moz-border-radius:**x;
margin-top:20px
}
dd:target{
position:absolute;
/
display:bl
}
/*给Ta
.tab
backgr
}
.tab-b,.conten
background:#CCFFFF;
}
.tab-c,.content-c{
background:#FFFF00;
}
.tab-d,.content-d{
background:#FFCCFF;
}
使用CSS方案的一个弊端在于不易区分哪个Tab是当前选中的,一个简单的方式是给相应的Tab以及Tab内容设置相同的背景色,这样当Tab内容显示时,能够更清晰的辨别当前Tab。此外,由于是使用了CSS3中的选择符,因此目前只能在Firefox、Safari、IE8等现代浏览器下使用。
方案二:纯锚点
方案二的原理很简单,在大多数浏览器下,当点击锚点链接时,锚点对应的内容会自动跳到可视范围以内。根据该原理,将Tab的所有内容放到一个固定高度的容器中,并且设置容器的overflow为hidden,此外每个Tab内容的高度需要与容器保持一致。在该结构下,当点击锚点链接时对应的内容会自动跳转到可视范围以内容,即容器内。
具体的h**TML结构如下:
<ulid="tab_nv">
<liclass="tab-a"><ahref="#a2">TabA</a></li>
<liclass="tab-b"><ahref="#b2">TabB</a></li>
<liclass="tab-c"><ahref="#c2">TabC</a></li>
<liclass="tab-d"><ahref="#d2">TabD</a></li>
</ul>
<divid="tab_content">
<divid="a2"class="contentcontent-a">
ContentA
</div>
<divid="b2"class="contentcontent-b">
ContentB
</div>
<divid="c2"class="contentcontent-c">
ContentC
</div>
<divid="d2"class="contentcontent-d">
ContentD
</div>
</div>
由于和方案一的原理不一样,此处的h**TML结构也只能使用Tab和内容分离的结构,使用该结构的一个问题在于当CSS缺失的情况下无法清晰的阅读内容。
关键的CSS代码如下:
/*给TabContent容器设置高度*/
#tab_content{
height:190px;
overflow:hidden;
}
/*给每个TabContent定高度,需要与容器保持一致*/
#tab_content.content{
padding:**x;
-moz-border-radius:**x;
height:190px;
overflow:hidden;
}
与方案一一样,这里也通过给Tab以及对应内容设置相同背景色来解决选中识别问题。
总结:
1.纯CSS实现的Tab受限很多,比如方案二中需要给每个TabContent设置相同的高度。
2.无法有效的标识当前选中的Tab,本文是通过设置相同背景色做区分,在很多情况下不一定适用。
3.两个方案都存在兼容性问题,方案一使用了CSS3的选择符,受限于CSS的实现;而方案二据说在Opera下不灵。
4.方案一中,当点击其他会触发:target的锚点(或发生类似交互)时,TabContent会隐藏。