
<html>
<body>
<table border=1>
<tr>
<td>
<table border=1>
<tr>
<td rowspan=2 style="height: 10px;">
<a href="#" style="display: block; height: 100%;">
う
</a>
</td>
<td>
え
</td>
</tr>
<tr>
<td>
え
</td>
</tr>
</td>
</tr>
<tr>
<td>
い
</td>
</tr>
</table>
</body>
</html>
上記のソースで「う」のリンクをセル全てに指定したいです。
IEやchromeではセル全てがリンクになりますがfirefoxは外側の「height: 10px;」の高さしか
リンクになりません。
どうすればfirefoxでもセル全てがリンクになるのでしょうか。
No.3ベストアンサー
- 回答日時:
こんにちは。
height: 100%ってそもそも融通聞かないんですよね。親要素の高さ指定が必ず必要な上、それが基準となり影響してきます。
ソースを見るとaの親要素のtdに10pxと指定しているので、これが基準でaも10pxにしかならないのだと思います。
考えてみれば、囲っている親要素より大きくないのが普通です。
今回はrowspanが絡んできていておかしなことになっているので、本来はFireFoxが正しいのだと思います。
この場合、
①親要素のtdに実際必要な高さ分のpx数を記述するか、
②aのheight:100%を諦め実際に必要な高さ分のpx数を記述するか、
③もし何かしらの理由で(変動するとか)HTMLやCSSに実数を記述できないのであれば、jQueryで親要素のtdの実際(ブラウザ上で表示されている)の高さを取得してaに適用するか
この3つしかないと思います。ただしメルマガとかのソースだと③は無理かも。
ちなみにjQueryの場合は以下の感じ。
ただしクラスを設定していないので、他にこのaとtdのような関係性のところ全てに適用されるので必要に応じてクラス指定が要ります。
【jQuery】
<script>
$(function () {
hsize = $("a").parent().height();
$("a").css("height", hsize + "px");
});
</script>
【説明】
aの親要素の高さを取得
aのcssに取得した高さを実行
tableって表以外は本来使わないほうが良いのですが、例えばECサイト運営とかメルマガのお仕事だと、結構無理やり使ってるところが多いですよね…
頑張ってください。
回答していただいた内容のファンクションで出来ました。
動的な場合だとやはり計算等が必要なのですね。
あまりcssに詳しくないものでtableを使用してしまったため今回の問題が発生しました。
次回からは注意しなければなりませんね。
No.4
- 回答日時:
CSSの仕様ではBOXの寸法は、下記の様にpadding辺の内側です。
tableは、「、単に文書内容を整形する目的だけで表を用いるべきでない。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )」「ページレイアウトの目的で表を用いる。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )」と1999年のHTML4.01の勧告以来、デザイン目的で使用する事は強く否定されています。
リストでマークアップされている方がデザインの融通性も高く、HTMLもシンプルで、制約も少ない。特に検索エンジン最適化(SEO)上も有利です。
【参考】
ナビゲーションリストを様々にデザインしてみよう。( http://www.ichiya.com/WebService/Howto/sample/HT … )
ソースを見ると分かるように単純な二階層のリストです(からメンテナンスは簡単)が、スタイルシートでデザインされています。ブラウザ(firefox)の表示メニューから[スタイルシート]を選択して、色々なスタイルを選択して見たり、印刷プレビューを確認して御覧なさい。tableよりはるかに優れているのが分かるかと。
下記にウェブ標準のサンプルを上げておきます。
・Another HTML Lint - Gateway( http://www.htmllint.net/html-lint/htmllint.html# )
のDATAで検索済みのHTML4.01strict+CSS2.1です。
文字コードはShift_JIS
・タブは_に置換してあるので戻す事。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
_<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
_<title>サンプル</title>
_<meta name="author" content="ORUKA1951">
_<meta http-equiv="Content-Style-Type" content="text/css">
_<link rev="made" href="mailto:oruka1951@hoge.com" title="send a mail" >
_<link rel="START" href="../index.html">
_<style type="text/css">
<!--
html,body{margin:0;padding:0;}
h1,h2,h3,h4,h5,h6{margin:0;line-height:1.6em;}
p{text-indent:1em;}
div.header,div.section,div.footer{width:90%;min-width:630px;max-width:900px;margin:0 auto;padding:5px;}
table[summary="50音"]{
_width:50%;
_margin:10px auto;
_border:none;
}
table[summary="50音"] td,table[summary="50音"] th{
_border:none;
_padding:0;
}
table[summary="50音"] th{
_background-color:orange;
}
table[summary="あ"]{
_width:100%;
_border:none;
}
table[summary="あ"] td{
_height:30px;
_position:relative;
_padding:0;
_position:relative;
_border:outset 3px orange;
}
table[summary="50音"] td a{
_display:block;
_height:100%;
_width:100%;
_background-color:aqua;
}
div.nav{
_margin:0 auto;
_background-color:yellow;
_width:50%;
}
div.nav ul,div.nav ul li{
_list-style:none;
_margin:0;
_padding:0;
_text-align:center;
_font-size:0;
}
div.nav ul{
_width:100%;
_display:block;
_background-color:orange;
}
div.nav ul li{
_font-size:12px;
_line-height:2em;
_width:100%;
}
div.nav ul li ul li{
_display:inline-block;
_width:20%;
}
div.nav ul li ul li a{
_display:block;
_background-color:aqua;
_border:outset 3px orange;
_text-decoration:none;
}
-->
_</style>
</head>
<body>
_<div class="header">
__<h1>タイトル</h1>
__<table summary="50音" border="1">
___<tbody>
____<tr>
_____<th abbr="あ行">あ行
______<table summary="あ" border="1">
_______<tbody>
________<tr>
_________<td><a href="./A">あ</a></td>
_________<td><a href="./B">い</a></td>
_________<td><a href="./C">う</a></td>
_________<td><a href="./D">え</a></td>
_________<td><a href="./E">お</a></td>
________</tr>
_______</tbody>
______</table>
_____</th>
____</tr>
___</tbody>
__</table>
__<div class="nav">
___<ul>
____<li>あ行
_____<ul>
______<li><a href="./A">あ</a></li>
______<li><a href="./B">い</a></li>
______<li><a href="./C">う</a></li>
______<li><a href="./D">え</a></li>
______<li><a href="./E">お</a></li>
_____</ul>
____</li>
___</ul>
__</div>
_</div>
_<div class="section">
__<h2>見出し</h2>
__<p>本文はsection</p>
__<div class="section">
___<h3>項見出し</h3>
___<p>本文項記事</p>
___<p>sectionの階層でレベルが判断される</p>
__</div>
_</div>
_<div class="footer">
__<h2>文書情報</h2>
__<dl class="documentHistry">
___<dt id="FIRST-PUBLISHED">First Published</dt>
___<dd>2013-03-03</dd>
__</dl>
_</div>
</body>
</html>
申し訳ありません、回答内容をあまり理解できていないかもしれません。
回答内容が質問内容と合っていないと思うのですが。
結合したセル全てをリンクにしたいのですが、回答だと結合されていません。
試しにテーブルを結合してみましたが、質問と同じで一つのセルの高さにしかリンクになりません。
そもそもtableを使うこと自体が間違いだというのでしょうか。
No.2
- 回答日時:
>tableでリンクを作らなければならないのでli等は使えません。
それは、具体的にどんなリンク集なのか分からないと
>tableの中にtableを入れた場合にしか質問の問題は発生せず
ありえません。
より具体的な内容が分からないと答える事ができません。
どんなリンクの一覧なのか。
スタイルシートをどう書かれているのか
tableにtableを入れなくても同じ問題が発生しました。
申し訳ありません。
どんなリンクなのかは質問の通りです。
リンクやスタイルシートは質問のままです。
セルの高さを指定して、rowspanで結合して、そのセル全てをリンクにしたいだけです。
No.1
- 回答日時:
firefoxの挙動が正しいのですけど・・・
a要素はインライン要素ですからね。そもそも、セル内に収まるのもおかしい(^^)
height,widthはそれの先祖のstatic以外の抱合ブロックのサイズですよ。
Box model - CSS 2.1 spec (ja)( http://momdo.s35.xrea.com/web-html-test/spec/CSS … )
そもそもそんなリンクにtableは使いませんし。
<nav>
<ol>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
</ol>
</nav>
じゃまずいのですか・
質問では簡略化していますが実際は色々と書いています。
tableでリンクを作らなければならないのでli等は使えません。
tableの中にtableを入れた場合にしか質問の問題は発生せず
table1つだとfirefoxでもセル全てがリンクになります。
table2つ以上でも同じだと思っているのですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
cssで、テーブルのtdの中の文字...
-
テーブル内に棒グラフを作る方法
-
HTMLに詳しい方に質問です。。
-
IEでテーブル内のテキストが...
-
html でのテキスト結合について
-
FireFoxで背景が表示されない。
-
表の作成をスタイルシートで
-
formのinputなどの幅100%指定
-
HTMLのTableの段組について
-
ドキュメントタグについて
-
[css]tableのtr、10行ごとに背...
-
作成したメールフォームの内容...
-
テーブルが左右上下中央表示に...
-
ie8のcssでcol要素のwidthがき...
-
tableがbodyにはみ出る。。
-
ブラウザによってテーブルのセ...
-
htmlのボタンを左寄席にしたい
-
同じクラス名はつけないほうが...
-
CSSで空けた文頭の全角スペース...
-
インラインフレームの大きさの変更
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
html でのテキスト結合について
-
tableタグとformタグの組み合わせ
-
Firefoxを使ってるのですがズー...
-
同じクラス名はつけないほうが...
-
テーブルの一部分のセルだけに...
-
divで囲んだ文字が消える
-
Tableタグ内のspan styleが適応...
-
<img>タグにCSSのclass設定可能?
-
cssで、テーブルのtdの中の文字...
-
vbscriptで時計を作りたい
-
td要素内のdiv要素をセンタリン...
-
Tableタグで作成した表の縮小
-
XHTMLに関する質問 順序が逆に...
-
trとtrの間
-
formのinputなどの幅100%指定
-
firefoxで「height: 100%;」と...
-
画像を並べて配置したい
-
表とリスト(ulとtable)の違い...
-
CSSで空けた文頭の全角スペース...
-
Visual Studio で CLR 開発でデ...
おすすめ情報