質問

わかりましたので、基本的には次のような設定があります:

<div id="tabs">
    <div id="tab_one">
        Something here
    </div>

    <div id="tab_two">
        Something else here
    </div>

    <div id="tab_three">
        Another thing here
    </div>
</div>

CSSは次のようになります。

#tab_one {
    position:relative;
    left:0px;
    top:0px;
}
#tab_two {
    position:relative;
    left:5000px;
}
#tab_three {
    position:relative;
    left:5000px;
}

基本的にここでやっていることはtab_oneのみを表示していることです。 次に、ユーザーがtab_twoをクリックすると、tab_twoがleft:0pxに変更されます。 tab_oneをleft:5000pxに変更します。 (したがって、 プロパティ)。問題は、その相対的な高さを下回っているためです その前にあったタブの。したがって、tab_oneの高さが50ピクセルの場合、tab_twoの高さは topは50pxです。 0pxにする必要があります。絶対に設定すると機能し、 相対に戻りますが、それは私がいるプロジェクトでは不可能です 私が起こしたくないタブをリロードするので、取り組んでいます。どれか オーバーラップする方法、または50ではなく0にする方法を見つけるのに役立ちます 非常に感謝しています。

役に立ちましたか?

解決

絶対位置と相対位置が混在している可能性があるようです... CSSポジショニング

それを言って、私はあなたが見るためにこの例をまとめました(ここで働く

CSS

.tabs {
 position: relative;
 left: 0;
 top: 0;
}
.info {
 position: absolute;
 left: -5000px;
 top: 25px;
}
.active {
 position: absolute;
 top: 25px;
 left: 0;
}

HTML

<div class="tabs">
 <a href="#tab_one">Tab 1</a>
 <a href="#tab_two">Tab 2</a>
 <a href="#tab_three">Tab 3</a>

 <div>
  <div id="tab_one" class="info">
   Something here
  </div>

  <div id="tab_two" class="info">
   Something else here
  </div>

  <div id="tab_three" class="info">
   Another thing here
  </div>
</div>

スクリプト

$(document).ready(function(){
 // select first tab, get ID
 var tmp = $('.tabs a:eq(0)').attr('href');
 $(tmp).removeClass('info').addClass('active');

 // tab display
 $('.tabs a').click(function(){
  $('.tabs div > div').removeClass('active').addClass('info');
  $( $(this).attr('href') ).addClass('active');
  return false;
 })
})

編集:&quot; .tabs a&quot;を除外しますpastebinコードのCSSは、各タブをdivとして始めたときから残っていました...何もしませんので、LOLは無視できます。

他のヒント

オフセットを使用する代わりに、 display プロパティでタブを非表示/表示できます。 「タブ」を追加します;タブコンテナのクラス:

<div id="tabs">
    <div id="tab_one" class="tab">
        Something here
    </div>

    <div id="tab_two" class="tab">
        Something else here
    </div>

    <div id="tab_three" class="tab">
        Another thing here
    </div>
</div>

そしてスタイルシートは次のとおりです:

.tab { display: none } /* Don't render by default */

.show_tab_one #tab_one,
.show_tab_two #tab_two,
.show_tab_three #tab_three { display: block } /* Selectively render */

#tabs 要素のクラスを&quot; show_tab_one&quot;、&quot; show_tab_two&quot;のいずれかに設定するだけですまたは「show_tab_three」」。もちろん、動的IDを持つ動的タブの数がある場合、この解決策はうまくいきません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top