以前のバージョンのjQuery tabs
では、次のコマンドを使用して、タブの高さをグループ内で最も高いタブの高さに自動的に設定するオプションがありました。
$('#container').tabs({ fxAutoHeight: true });
ただし、これはjQuery UI 1.5.3
では機能しないようです。
このオプションは削除されましたか?もしそうなら、同じ機能を取得する別の方法はありますか?
もう存在しないようです。このプラグインで同じ機能を確認してください
あなたがしなければならないすべては、最小の高さを設定することです。 (これへの答えを見つけるのに私は年齢を重ねました..それが役に立てば幸いです!).
これが実際に機能する私のコードです:
$("#tabs").tabs().css({
'min-height': '400px',
'overflow': 'auto'
});
JQuery 1.9では、heightStyle
属性を使用します( ドキュメントはこちら )
$( ".selector" ).tabs({ heightStyle: "auto" });
ドキュメント を読んだ後、オプションが利用できなくなったようです。ただし、この機能を複製するのは非常に簡単です。
タブが水平に配置されていると仮定します:
$("ul.tabs a").css('height', $("ul.tabs").height());
var biggestHeight = 0;
jQuery.each($(this).find(".ui-tabs-panel"),
function (index, element) {
var needAppend = false;
if ($(element).hasClass('ui-tabs-hide')) {
$(element).removeClass('ui-tabs-hide');
needAppend = true;
}
if ($(element).height() > biggestHeight)
biggestHeight = $(element).height();
if (needAppend)
$(element).addClass('ui-tabs-hide');
});
ガブリエルの例は私に正しいリードを与えましたが、私はそれをそのように正確に機能させることができませんでした。 jQueryドキュメントの ソースコードの例 を見ると、HTMLコードは次のようになっているはずです。
<div id="tabs">
<ul>
<li><a href="#fragment-1"><span>One</span></a></li>
<li><a href="#fragment-2"><span>Two</span></a></li>
<li><a href="#fragment-3"><span>Three</span></a></li>
</ul>
<div id="fragment-1">
<p>First tab is active by default:</p>
<pre><code>$('#example').tabs();</code></pre>
</div>
...
</div>
かなり静的なコンテンツを持つ3つのタブがあるので、私にとっては、すべてのタブの高さを最も高いタブの高さに設定するだけで十分でした(私の場合は#fragment-1)。
これはこれを行うコードです:
$("#tabs div.ui-tabs-panel").css('height', $("#fragment-1").height());
私はこのソリューションを探していましたが、最小高さの設定は、事前に最小高さをどれだけ高くすべきかわかっている場合にのみ有効です。
代わりに、CSSに移動し、ui-tabsクラスを変更して「overflow:auto;」を追加しました。以下のように
.ui-tabs { overflow: auto; position: relative; padding: .2em; zoom: 1; }
これは私にとってFF12で機能します...他の人では試していません。これが機能する場合は、ストック機能やテーマの互換性などを維持するために、別のクラスを作成することができます。
ところで、動的なサイズ変更が必要になる理由は、Ajaxからロードしているが、タブローダーメソッドではなく別の関数を使用している場合です(これらのメソッドは、コンテンツがすべて1つのURLリソースからのものであり、動的人口はどれだけ進んでいるか)。
HTH
Giannisの答えは、タブの中で最も高い高さを取得するのに適していますが、実際にそのソリューションを適用するためのコードがありません。最初のタブを再表示する方法(コードによって非表示になります)と各コンテンツ領域の高さを設定する方法を追加する必要があります。
var height = 0;
//Get the highest height.
$("#tables .ui-widget-content").each(function(){
$(this).removeClass('ui-tabs-hide');
var oheight = height; //used to identify tab 0
if(height < $(this).height())
{
height = $(this).height();
}
if(oheight != 0)
{
$(this).addClass('ui-tabs-hide');
}
});
//Apply it to each one...
$("#tables .ui-widget-content").height(height);
タブの最小の高さを設定し、プロパティのサイズを変更しない...
例:
$("#tab").tabs().css({'resize':'none','min-height':'300px'});
var height = 0;
$("#tabs .ui-widget-content").each(function(){
$(this).removeClass('ui-tabs-hide');
if(height < $(this).height())
height = $(this).height();
$(this).addClass('ui-tabs-hide');
});
URLを確認してください:
http://api.jqueryui.com/tabs/#option-heightStyle
$("#tabs").tabs({ heightStyle: "fill" });