
CSSを使い、テーブルにスクロールバーを表示させたいのですが
<div style="height:60px; width:300px; overflow-y:scroll;">
<table border=1 width=300>
:
</table>
</div>
上記の方法だと確かにスクロールバーは表示されるのですが、出来ればDIVを使わずに、作っておいたCSSを適用するだけで、テーブルにスクロールバーを表示させることは可能でしょうか?
出来れば、スクロールバーの色を変更して、横(X軸)のスクロールバーも消したいのですが…
CSSで
.scroll {
overflow: scroll;
visibility: visible;
height: 100px;
width: 140px;
}
とやってみたのですが、どうしてもスクロールバーが表示されません。何が足りないのか、もしくは根本から間違っているのかがわかりません。
ご存知の方教えて下さい。
No.3ベストアンサー
- 回答日時:
> 出来ればDIVを使わずに、作っておいたCSSを適用するだけで、テーブルにスクロールバーを表示させることは可能でしょうか?
何だか仰っている事がいまいち分かりづらいのですが、以下の2種類を推測しました。
【A】
「<table>を<div>で入れ子にするマークアップではなく、<table>自体に定義したスタイルでスクロールバーを出したい」という意味であれば、できません。はみ出した部分の処理をする(スクロールバーの表示・非表示を制御)overflowプロパティは適用対象がブロック要素の為、table要素である<table>には適用されないからです。
【B】
「<div style="height:60px; width:300px; overflow-y:scroll;">の様にHTMLのマークアップに直接style属性で定義するのではなく、外部ファイル(もしくは<head>内で<style type="text/css">~</style>)でまとめて定義したスタイルを適用させたい」ということであれば、できます。
以下は【B】の場合のサンプルです。
XML宣言有りのXHTML 1.1で検証。IE6.0/7.0、Firefox2.0~、Opera9.25 on Windows XPで同様の結果を得ています。
----------------------------------------------------------------------
【HTML】
----------------------------------------------------------------------
<div class="hoge">
<table cellspacing="0" cellpadding="0" border="0" summary="サンプル">
<tr>
<th>見出し1</th>
<td>データデータデータデータ</td>
</tr>
<tr>
<th>見出し2</th>
<td>データデータデータデータ</td>
</tr>
<tr>
<th>見出し3</th>
<td>データデータデータデータ</td>
</tr>
</table>
</div>
----------------------------------------------------------------------
【CSS】
----------------------------------------------------------------------
div.hoge {
width: 140px;
height: 100px;
overflow: auto;
}
div.hoge table {
border-collapse: collapse;
}
th, td {
font-size: 12px;
border: solid 1px #000000;
padding: 5px;
}
----------------------------------------------------------------------
・"overflow: scroll"とすると、必ずXY両軸のスクロールバーが表示されます。"overflow: auto"にしておけば、子要素(この場合は<table>)の幅が親要素の幅を超えていない限り、X軸のスクロールバーは表示されません。Y軸のスクロールバーは子要素の高さが親要素の高さを超えた時点から発生します。高さに満たない場合は自動的に表示となります。
・"overflow-y""overflow-x:"はIEの独自拡張の為、他の環境では効きません。
・"visibility"の値はディフォルが"visible"なので、この場合は特に定義する必要はありません。
> スクロールバーの色を変更して
"scrollbar-foo-color"(fooの部分:base、face、track、arrow、highlight、shadow、3dlight、darkshadow)"というプロパティがありますが、同じくIEの独自拡張の為、他の環境では効きません。
実現したいイメージが異なる様であれば補足して下さい。
詳しい説明をありがとうございます。
お聞きしたかったのは、正にAのことでした。
Table要素では出来ないんですね。
他にも色々とありがとうございます。
参考になりました。
回答ありがとうございます。
No.4
- 回答日時:
すみません、タイポがありましたので訂正しておきます。
【誤】
> 高さに満たない場合は自動的に表示となります。
↓
【正】
> 高さに満たない場合は自動的に非表示となります。
No.2
- 回答日時:
divをなくして「どこに」スクロールバー(overflow)を付けるのですか?
>横(X軸)のスクロールバーも消したいのですが
divの横幅が300px。tableの横幅が300px、スクロールバーの幅が20pxとして、divの中身が300+20ですから横スクロールバーが出ます。
divの横幅を増やせば解決できるかと。
質問がわかりづらくて申し訳ありません。
自分でも良くわからなかったもので、質問が変になってしまいました。
横のスクロールバーは、横幅を増やせば良いのですね。
参考になりました。
回答ありがとうございます。

No.1
- 回答日時:
/* div02 */
div.div02{
height:100px;
overflow:auto;
border:1px solid #cccccc;
padding:0.5em;
margin:1em auto;
}
<div class="div02">
<p>吾輩(わがはい)は猫である。名前はまだ無い。
どこで生れたかとんと見当(けんとう)がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。</p>
</div>
早速のご回答ありがとうございます。
やってみたのですが、出来ませんでした。
何分初心者なもので…すみません。
でも参考になりました。
もう少し出来るかどうかやってみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
- gooブログ 記事の下にスクロールバーが表示される 2 2022/08/19 20:42
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- HTML・CSS (Javascript)印刷するファイルに応じて印刷プレビュー画面で用紙を自動的に切り替えたい!! 2 2022/04/11 12:04
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ページ全体をインラインフレー...
-
XHTML+CSS で、ブラウザごとに...
-
css
-
カーソルが乗ったときリンクの...
-
divの入れ子が上手くいきません。
-
css
-
【CSS】firefoxで背景が表示さ...
-
htmlの文字が縦書きになる
-
横並びリスト ブラウザ縮小 カ...
-
テーブルの線を上に引っ付けたい
-
CSSについて教えて下さい ブロ...
-
背景画像をセットしたh1にmargi...
-
wrapperなしでCSSのレイアウト...
-
ドリームウィーバー、CSSの質問...
-
<li>の黒い点を消したい。
-
レイヤーの上にレイヤー?
-
Dreamweaver上で、背景の領域に...
-
CSSでテーブルを作成
-
ボタンフォームに対するマウス...
-
外部CSSの入れ子によるWEBペー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
CSSがなぜかfont-sizeだけ効か...
-
form input テキストを上下中央...
-
【CSS】ヘッダーの高さが不明の...
-
画像イメージの上下左右、欲し...
-
css初心者 フレックスボックス...
-
余分な縦スクロールバーが出て...
-
W3Cのソースコードの検証サービ...
-
表示倍率を変えるとレイアウト...
-
safariでの横並びリスト(List...
-
<div>と<div>の間の10px程の...
-
border-style:solidで文字がずれる
-
入力フォームとセレクトボック...
-
div内に外部のurlを表示させたい
-
divの中にspanを右寄せにするに...
-
dl,dt,ddタグでdtに対して、row...
-
divで囲まれたpaddingの指定を...
-
footer を横幅いっぱいに広げる...
-
CSSで指定した背景画像にリンク...
おすすめ情報