ul/liタグでのリスト表示におけるレイアウト崩れについて
現在、タブコントロールの画面を作成しているのですが、
画面のレイアウトが崩れてしまう現象が発生しています。
2日間デバッグしてみたのですが解決しませんでしたので、
現状のHTMLの抜粋をご提示致しますので
お手数ですがご助言して頂けないでしょうか。
■タブコントロール画面について
画面上にタブを新規に作成するボタンがあり、
そのボタンを押下することによりjavascriptで
ul/liのコードを動的に作成しています。
(prototype.jsを使用しています。)
タブは画面上最大5個まで同時に表示できますが
6個以上になった場合は、タブコントロールの両端に
スクロールボタン(「戻る」・「進む」)を表示するようにしています。
また、対象のタブをクリックされた場合には画像で「閉じる」ボタンを
表示するようにして、閉じるボタンを押下した場合はその
タブを消去するようにしています。
なお、タブコントロールの完成イメージとしては以下のサイト
のようなものを目指しています。http://members.ecnavi.jp/
(タブコントロールの下にパネル部分があり選択されたタブ
においては、タブのボトム部分の線が隠れる仕様です。)
■現象の詳細
タブが6個以上になり「戻る」ボタンを表示した際にタブ部分が
「戻る」ボタンの半分程度の高さに浮き上がって表示されてしまいます。
なお、「進む」ボタンに関しても同様です。
※浮き上がってしまっているタブの枠線下部には線は引かれていません。
□□□□□
□
(実際は、上段の□が高さ半分程度下に下がるイメージです。)
#####生成されたHTMLの抜粋#####
<div id="myTab">
<ul class="tabs">
<li class="LRButton" style="width: 18px; height: 27px; background-color: rgb(176, 196, 222);"> < </li>
<li title="6:1f"><div style="width: 89px; height: 27px; overflow: hidden;" class="ItemIdle">
<div style="width: 69px; font-size: 12px; padding: 5px; overflow: hidden; float: left;">6</div>
<div style="float: right; display: none;">
<a href="javascript:void(0);">
<img src="./images/Close.gif" style="width: 14px; height: 14px; border: medium none; margin-right: 2px; margin-top: 2px;" title="close">
</a>
</div>
</div>
</li>
<li class="tab-active" title="6:1fffff">
<div style="width: 89px; height: 27px; overflow: hidden;" class="ItemSelected">
<div style="width: 59px; font-size: 12px; padding: 5px; overflow: hidden; float: left;">6</div>
<div style="float: right; display: block;">
<a href="javascript:void(0);"><img src="./images/Close.gif" style="width: 14px; height: 14px; border: medium none; margin-right: 2px; margin-top: 2px;" title="close">
</a>
</div>
</div>
</li>
</ul>
</div>
<div class="panel">
<table width="825px" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
回答がないみたいなので…
>そのボタンを押下することによりjavascriptで
>ul/liのコードを動的に作成しています。
それだけのものを作れる方ならば、ご提示のソースだけでは情報が不十分なこともおわかりになるはずと思いますが?
HTMLの構成もよくわからない程度の情報しかないので、CSSでのレイアウトやスクリプトでの制御をどのようにしているのかまったくわかりません。
それなので、誰も回答しようがないというのが実情かと…
雰囲気でしかわかりませんが、CSSの指定とstyleによる指定の両方を使っているみたいなので、scriptで変更する際にそのあたりで混乱が生じているのではないでしょうか?
予定外の表示になっている時のソースと、CSSを照合してみれば原因がわかると思いますが…
以下、かなり手抜きですが、classの設定だけでご質問のような表示になる構成の簡単な一例を作ってみましたので、ご参考までに。(手抜きなので、CSSなどは大分いい加減です)
・タブを生成(削除)する場合は<li>要素を生成(削除)する。
(divをここに入れないほうが楽な気もしますが、ご提示のサンプルがそんな
雰囲気なので)
・タブの表示制御は、li要素のclass名にhideまたはactiveを追加(削除)する
ことで、非表示やアクティブタブの表示となる。
(スクリプトからはclass名の設定だけで表示の制御が可能)
・矢印のタブ幅を他の半分に設定して、都合6個のタブまで表示可能。
6個以上の時に、矢印と5個のタブを表示すると同じ幅になるイメージ。
・スクリプト部分は省略。
<html>
<head><title>test</title>
<style type="text/css">
#myTab { position:relative; width:384px; }
ul.tabs { list-style-type:none; }
ul.tabs, ul.tabs * { margin:0; padding:0; }
ul.tabs li.LRbutton, ul.tabs li.tab { float:left; }
ul.tabs li.LRbutton span, ul.tabs li.tab span {
display:block; height:20px; _height:26px; padding:2px;
background-color:#ddd; border:1px solid #aaa;
}
ul.tabs li.LRbutton span { width:26px; _width:30px; }
ul.tabs li.tab span { width:58px; _width:64px; }
ul.tabs div.tab_contents {
width:384px; height:200px; background-color:#eee; overflow:auto;
position:absolute; display:none; left:0px; top:26px;
}
ul.tabs li.active span {
background-color:#eee; border-bottom:1px solid #eee;
color:#a33; font-weight:bold;
}
ul.tabs li.hide { display:none; }
ul.tabs li.active div.tab_contents { display:block; }
</style>
</head>
<body>
<div id="myTab">
<ul class="tabs">
<li class="LRbutton"><span><</span></li>
<li class="tab hide"><span>tab1</span>
<div class="tab_contents">tab1の内容</div>
</li>
<li class="tab"><span>tab2</span>
<div class="tab_contents">tab2の内容</div>
</li>
<li class="tab active"><span>tab3</span>
<div class="tab_contents">tab3の内容</div>
</li>
<li class="tab"><span>tab4</span>
<div class="tab_contents">tab4の内容</div>
</li>
<li class="tab"><span>tab5</span>
<div class="tab_contents">tab5の内容</div>
</li>
<li class="tab"><span>tab6</span>
<div class="tab_contents">tab6の内容</div>
</li>
<li class="tab hide"><span>tab7</span>
<div class="tab_contents">tab7の内容</div>
</li>
<li class="LRbutton"><span>></span></li>
</ul>
</div>
</body>
</html>
お忙しい中、ご回答して頂きありがとうございました。
ご指摘の通り、ソースは不足しているのは認識していたのですが
仕事の関係もありましてある程度のところまでにしてありました。
この後、自分なりに色々検討してみたのですが、シンプルなtdタグでの実装方法に
変更した結果仕様を満たすことが出来ました。
ご迷惑をおかけして大変申し訳ありませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
CSS、width100%でもできる余白
-
表示倍率を変えるとレイアウト...
-
css初心者 フレックスボックス...
-
W3Cのソースコードの検証サービ...
-
CSSで指定した背景画像にリンク...
-
画像イメージの上下左右、欲し...
-
div内に外部のurlを表示させたい
-
スタイルシート a:activeで画像...
-
CSSで背景画像を一番下にもって...
-
テーブルのセル間に余白が空い...
-
CSSがなぜかfont-sizeだけ効か...
-
CSS検証サービス
-
トップに戻るボタン、スマホだ...
-
div枠のレイアウトが崩れてしま...
-
指定したborderの一部が表示さ...
-
【CSS】bodyとbottomの画像がか...
-
ネガティブマージン
-
form input テキストを上下中央...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
画像イメージの上下左右、欲し...
-
css初心者 フレックスボックス...
-
form input テキストを上下中央...
-
W3Cのソースコードの検証サービ...
-
CSS、width100%でもできる余白
-
定義リストに下線をつけたいと...
-
余分な縦スクロールバーが出て...
-
CSSがなぜかfont-sizeだけ効か...
-
divで囲まれたpaddingの指定を...
-
<div>と<div>の間の10px程の...
-
【CSS】ヘッダーの高さが不明の...
-
CSSのposition値の上書き(打消...
-
CSSで背景画像を一番下にもって...
-
スクロールボックスを中央に配...
-
CSSでボックスのheightが0になる
-
背景が下まで表示されないんです。
-
HTMLのiframeの入れ子について
-
HTMLで文字が重なって表示されます
おすすめ情報