私はここで頭を悩ませています。
ul/li 要素を使用して作成されたタブがあります。
次のものがあるとします。
- タブ1
- タブ 2
- タブ3
- タブ4
タブは次のように水平に表示されます。
タブ1 タブ2 タブ3
タブ4
固定幅があるので、横にはみ出します。
私がしたいのは、このように一番上にあるタブの数が最も少ない行です:
タブ4
タブ1 タブ2 タブ3
どうすればこれを達成できますか?
よろしくお願いします
私はここで頭を悩ませています。
ul/li 要素を使用して作成されたタブがあります。
次のものがあるとします。
タブは次のように水平に表示されます。
タブ1 タブ2 タブ3
タブ4
固定幅があるので、横にはみ出します。
私がしたいのは、このように一番上にあるタブの数が最も少ない行です:
タブ4
タブ1 タブ2 タブ3
どうすればこれを達成できますか?
よろしくお願いします
すべての回答に感謝します。しかし、おそらく私の質問は明確ではありませんでした。また、私はstack-overflow.comを初めて使用するので、気楽にやってください:)
とにかく、昨夜この問題を解決するために私がしたことは、jQuery を使用し、現在のタブを削除して再作成することでしたが、今回は ul/行ごとに一定数のリスト項目/タブを追加しました。タブごとに固定数を超える場合は、新しい ul 要素を作成します。各 UL 要素は新しい行のようになります
これが私のjavascript/jQueryです
// contains tab headers and contents
var tabsContainer = $('.tabs');
// this is a UL element containing the tab headers
var currentUlElement = $('.tabNavigation');
// this are the LI elemets which are the actual tabs
var currentLiElements = currentUlElement.children('li');
// we can only have 6 tabs plus the '+' tab (total 7) in a row.
// if there's mroe than that we need to sort the overflow
if (currentLiElements.length > 7) {
// remove all current tab headers
currentUlElement.remove();
// create new tab headers container
var newUlElementRow = $('<ul />');
// make the list items appear like tabs
newUlElementRow.addClass('tabNavigation');
// add the new tabs header container to the front of the main tab/content container control
tabsContainer.prepend(newUlElementRow);
for (var index = 0; index < currentLiElements.length; index++) {
// if one row of tabs is complete
if (index == 6) {
// create a new tab headers container
newUlElementRow = $('<ul />');
// make the list items appear like tabs
newUlElementRow.addClass('tabNavigation');
// add the new tabs header container to the front of the main tab/content container control
tabsContainer.prepend(newUlElementRow);
}
// add the tab/list item to the new tab headers container
newUlElementRow.append(currentLiElements.get(index));
}
// re-enable the tab click actions
trackNetPeople.SetupTabs();
}
あなたはこのように書くことができます:
HTML
<ul>
<li>test4</li>
<li>test1</li>
<li>test2</li>
<li>test3</li>
</ul>
CSS
li + li{
float:left;
}
これをチェックしてくださいhttp://jsfiddle.net/mxgNT/
一見すると少し混乱するかもしれません。しかし、それほど難しくありません。
css:
ul {position:relative;}
ul li {padding:3px 10px;height:20px}
ul li:last-child{position:absolute}
ul li:not(:last-child) {float:left;color:green;margin-top:20px; /*height of li*/}
ライブデモ:
これを達成するためにどのタイプの言語を使用したいのかわかりませんが、jQuery
解決策は次のとおりです。
実例: http://jsfiddle.net/gzZ6C/1/
jQuery
$(function(){
$('ul').prepend($('ul').find('li:last'));
$('ul').find('li:not(:first)').css('float','left');
});
更新: float スタイルを追加しました
「行」を使用していないので、できないと思います。次の行にプッシュされるのは単なるテキストです。
タブがデータベースから取得されたものである場合は、PHP を使用してそれらを処理し、配列を使用してそれらを並べ替えることができますが、それらを表示するには別の方法が必要です。テーブルは良い代替手段かもしれません (この場合はともかく)。
私はあなたの質問を明確に理解していなかったに違いありませんが、最後のタブの li 要素を他の li 要素から分離しようとしているようです:
これは、次を使用して実行できます。
.tabs ul li:last-child {
display: block;
}
最後のliが最初になるように、jQueryを次のように使用します。
$(function(){
$('.tabs ul').prepend($('.tabs ul').find('li:last'));
});
タブのCSSスタイルを見ないと、わかりにくいです。ただし、ブートストラップ タブ、ファウンデーション タブ、jQuery ui タブなど、一部のフレームワークのタブ付きインターフェイスを使用することを検討してください。プレミアムなレスポンシブ タブ ソリューションが必要な場合は、zozo タブをご覧ください。多くの例があります。
乾杯
ファリデザイン