2012-01-06 14 views
1

下の図に示すように、スタックオーバーフローのプロファイルページと同様のページのタブ付きのビューを作成したいとします。cssとjavascriptを使用するページのタブ付き表示

enter image description here

私はタブ付きインターフェイスを作成することができたが、国境が実際に以下のdivに与えられているので、私は、タブの下の枠線を削除することができません。私がタブに境界線を付けると、タブがない領域に境界線を広げることはできません。ここで

は私が

<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> 

を使用しています私はulli要素があるようfavContentBoxできるだけ多くを持っているhtmlです。そして、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はタブに白い下の枠線を追加し、(上部の境界線を考慮するために)タブにそのコンテナよりも小さい1つの画素を作るこの

.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

+0

タブに白い枠線を適用し、-1マージンを使用して下のdivにプルダウンできますか? – dougajmcdonald

+0

@dougajmcdonald:あなたが提案したものを試しましたが、それは助けになりませんでした。 – Sachin

答えて

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

+1

@Sachin CSSでホバーするためのデモとコードを更新しました。やってみよう。 – ThinkingStiff

+0

ありがとう、新しいホバー効果は完全にクールで、それはStackoverflowのようになります...しかし、私は前の1つに固執したいと思います。そうでなければあまりにも似ているでしょう。ありがとう – Sachin

1

(コピーアンドペーストしないでください!最初に以下のexplainationを読む)

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コンテンツボックスの上にタブを配置し、` position:relative; z-index:1/2; `(z-indexは配置された要素のみに作用します)

私はコードをテストしなかったので、自分で詳細を調べなければなりません。たとえば、このコードでは、すべてのタブがアクティブなタブの代わりに押されます。しかし、私はあなたが基本的なアプローチを取ると思う。

これが役に立ちます。

+0

ソリューションと説明に感謝しますが、上記のものもうまくいきました。 – Sachin

関連する問題