2012-01-06 28 views
1

我想創建一個類似於堆棧溢出配置文件頁面的頁面的選項卡式視圖,如下圖所示。使用css和javascript頁面的選項卡式視圖

enter image description here

我已經能夠創建一個標籤式界面,但我無法刪除選項卡下邊境,因爲邊境實際上已經給下面的股利。如果我將邊框放在標籤上,那麼我無法將邊框延伸到沒有標籤的區域。

這裏是我使用

<div id="centerDiv"> 
     <div id="centeredMenu"> 
      <ul class="tabs"> 
       <li><a class="active" href="#">Questions</a></li> 
       <li><a href="#">Blogs</a></li> 
       <li><a href="#">Posts</a></li> 
      </ul> 
     </div> 

    </div> 

    <div style="clear:both;"></div> 

    <div class="favContentBox"> 
    <!-- The content goes here --> 
    </div> 

    <div class="favContentBox"> 
    <!-- The content goes here --> 
    </div> 

    <div class="favContentBox"> 
    <!-- The content goes here --> 
    </div> 

的HTML我有多達favContentBox,因爲是ulli元素。和JavaScript是

$(document).ready(function(){ 

    var currentTab = 0; 

    function openTab(clickedTab) { 
     var thisTab = $(".tabs a").index(clickedTab); 
     $(".tabs li a").removeClass("active"); 
     $(".tabs li a:eq("+thisTab+")").addClass("active"); 
     $(".favContentBox").hide(); 
     $(".favContentBox:eq("+thisTab+")").show(); 
     currentTab = thisTab; 
    } 

    $(".tabs li a").click(function() { 
     openTab($(this)); 
     return false; 
    }); 

    $(".tabs li a:eq("+currentTab+")").click() 

}); 

css是這樣

.favContentBox 
{ 
    border:1px solid #808080; 
    padding-left:20px; 
    padding-right:20px; 
    min-height: 500px; 

} 

.tabs 
{ 
    margin:0 0 0 0; 
    padding:0 0 0 0; 
    left:50%; 
    text-align:center; 
    clear:left; 
    position:relative; 
    float:left; 
} 
.tabs li 
{ 
    list-style: none; 
    float: left; 
    right:50%; 
    display:block; 
    position:relative; 
} 

.tabs li a 
{ 
    display: block; 
    color:black; 
    font-weight: bold; 
    text-align: center; 
    text-decoration: none; 
    width:100px; 
    padding: 5px 0 5px 0; 
    border-left: 1px solid #808080; 
    border-top: 1px solid #808080; 
    border-right: 1px solid #808080; 
    margin-left:20px; 
    background-color:#F0F0F0; 
} 
+1

你可以添加一些標記嗎? – Undefined 2012-01-06 10:07:26

+0

您可以將白色邊框應用於選項卡,然後使用-1邊距將其拉到下面的div上嗎? – dougajmcdonald 2012-01-06 10:08:47

+0

@dougajmcdonald:我嘗試了你的建議,但沒有幫助。 – Sachin 2012-01-06 10:14:45

回答

2

白色底部邊框添加到標籤,使標籤比它的容器更小的一個像素(以占上邊框) 。這是一個用於標籤懸停的全部CSS解決方案。

演示:http://jsfiddle.net/ThinkingStiff/sCgMg/

HTML:

<ul id="tabs"><!-- 
    --><li class="tab">summary</li><!-- 
    --><li class="tab selected">answers</li><!-- 
    --><li class="tab">questions</li><!-- 
    --><li class="tab">tags</li><!-- 
--></ul> 

CSS:

#tabs { 
    border-bottom: 1px solid #666666; 
    font: bold 15px/15px Helvetica, Tahoma, Arial; 
    height: 30px; 
    margin: 0; 
    padding: 0; 
    padding-left: 10px; 
} 

.tab { 
    color: #777; 
    cursor: pointer; 
    display: inline-block; 
    height: 23px; 
    font-size: 13px; 
    line-height: 13px; 
    margin-left: 2px; 
    margin-right: 2px; 
    padding-top: 8px; 
    text-align: center; 
    vertical-align: top; 
    width: 80px; 
} 

.tab:hover { 
    border: 1px solid #666666; 
    border-bottom: 1px solid white; 
    height: 22px; 
    margin-top: 5px; 
    padding-top: 2px; 
    width: 78px; 
} 

.selected { 
    border: 1px solid #666666; 
    border-bottom: 1px solid white; 
    color: black;  
    font-size: 15px; 
    line-height: 15px; 
    padding-top: 6px; 
    width: 78px; 
} 

.selected:hover { 
    height: 23px; 
    margin-top: 0; 
    padding-top: 6px; 
    width: 78px; 
} 

腳本:

$(".tab").click(function() { 

    $(".selected").removeClass("selected"); 
    $(this).addClass("selected"); 

}); 

輸出:

enter image description here

+0

非常感謝解決方案 – Sachin 2012-01-06 10:39:07

+1

@Sachin我更新了演示和代碼,使用CSS進行懸停。現在就試試。 – ThinkingStiff 2012-01-06 10:42:11

+0

非常感謝,新的懸停效果是非常酷,使它像Stackoverflow ...但我想堅持只有前一個,否則它會看起來太相似了謝謝 – Sachin 2012-01-06 11:05:59

1

(不要只是複製和粘貼!閱讀下面先交代)

HTML:

<ul> 
    <li><a href="#content1">Tab 1</a></li> 
    <li><a href="#content2">Tab 2</a></li> 
    <li><a href="#content3">Tab 3</a></li> 
</ul> 
<div class="content-boxes"> 
    <div class="content1">Content 1</div> 
    <div class="content2">Content 2</div> 
    <div class="content3">Content 3</div> 
</div> 

CSS:

ul li { 
    /* I've left out all the floating and other obvious stuff, 
    since you didn't ask for that */ 
    position: relative; 
    top: 1px; 
    background-color: #fff; 
    border: solid 1px #808080; 
    border-bottom: none; 
    z-index: 2; 
} 
.content-boxes>div { 
    position: relative; 
    z-index: 1; 
} 

這段代碼的實質是:

  1. 移動標籤下降了1個像素,而將內容框的位置保留爲'position:relative; top:1px;`
  2. 爲選項卡提供背景顏色以掩蓋內容框的邊框
  3. z-index使用位置:relative; z-index:1/2;`(z-index僅適用於定位元素)

我沒有測試代碼,所以你必須自己弄清楚細節。例如,此代碼會將全部選項卡向下推,而不僅僅是活動選項卡。但我認爲你有基本的方法。

希望這會有所幫助。

+0

非常感謝解決方案和解釋,但上面給出的也工作,所以我只是用 – Sachin 2012-01-06 10:41:12

相關問題