在網頁中應用選項卡可以使網頁顯得更緊湊,結合AJAX技術可以使頁面在有限的空間內展現更多的內容。本文主要介紹幾種簡潔的選項卡效果的實現(不涉及滑動門和AJAX),附有實例,無圖片,兼容性較好,方便大家直接使用。
第一種形式: 通過更換顯示樣式實現,這種很常見,就不多說了。
<div id="tabs0">
<ul class="menu0" id="menu0">
<li onclick="setTab(0,0)" class="hover">新聞</li>
<li onclick="setTab(0,1)">評論</li>
<li onclick="setTab(0,2)">技術</li>
<li onclick="setTab(0,3)">點評</li>
</ul>
<div class="main" id="main0">
<ul class="block"><li>新聞列表</li></ul>
<ul><li>評論列表</li></ul>
<ul><li>技術列表</li></ul>
<ul><li>點評列表</li></ul>
</div>
</div>
第二種形式: 這種結構比較復雜一些,外面加一個相對層(.menu1box),設置溢出隱藏,將選項卡(#menu1)設為絕對定位,設置層指針為1(z-index:1;),以便可以遮住下主區塊(.main1box)1px的高度。設置主區塊的邊框為1px的黑邊,上空白(margin-top)為-1px,使上邊框伸到選項卡下。當改變選項卡某項(li)的背景為白色時便可遮住一部分主區塊的上邊框。這樣效果就實現了。
<div id="tabs1">
<div class="menu1box">
<ul id="menu1">
<li class="hover" onmouseover="setTab(1,0)"><a href="#">新聞</a></li>
<li onmouseover="setTab(1,1)"><a href="#">評論</a></li>
<li onmouseover="setTab(1,2)"><a href="#">技術</a></li>
<li onmouseover="setTab(1,3)"><a href="#">點評</a></li>
</ul>
</div>
<div class="main1box">
<div class="main" id="main1">
<ul class="block"><li>新聞列表</li></ul>
<ul><li>評論列表</li></ul>
<ul><li>技術列表</li></ul>
<ul><li>點評列表</li></ul>
</div>
</div>
</div>
第一、二種形式的JS代碼:
function setTab(m,n){
var tli=document.getElementById("menu"+m).getElementsByTagName("li"); /*獲取選項卡的LI對象*/
var mli=document.getElementById("main"+m).getElementsByTagName("ul"); /*獲取主顯示區域對象*/
for(i=0;i<tli.length;i++){
tli[i].className=i==n?"hover":""; /*更改選項卡的LI對象的樣式,如果是選定的項則使用.hover樣式*/
mli[i].style.display=i==n?"block":"none"; /*確定主區域顯示哪一個對象*/
}
}
第三種形式: 這也是一種不常用的方式,加一個相對層(.menu2box),利用一個背景層(#tip2)定位,通過改變層的左距離(left)實現效果。
<div id="tabs2">
<div class="menu2box">
<div id="tip2"></div>
<ul id="menu2">
<li class="hover" onmouseover="nowtab(2,0)"><a href="#">新聞</a></li>
<li onmouseover="nowtab(2,1)"><a href="#">評論</a></li>
<li onmouseover="nowtab(2,2)"><a href="#">技術</a></li>
<li onmouseover="nowtab(2,3)"><a href="#">點評</a></li>
</ul>
</div>
<div class="main" id="main2">
新聞內容
</div>
</div>
效果演示:
運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]