下記のhtmlを、
<h4>あああ</h4><p>あああ</p>
<h4>いいい</h4><p>いいい</p>
<h4>ううう</h4><p>ううう</p>
下記のようなテーブルのときと同じ見た目にしたいです。
<table>
<tr>
<th>あああ</th><th>いいい</th><th>ううう</th>
</tr>
<tr>
<td>あああ</td><td>いいい</td><td>ううう</td>
</tr>
</table>
つまり、h4同士、p同士の高さが、
それぞれ一番高いセルに追従するということです。
※文法を遵守したまま見た目だけテーブル組みが狙いですので、
テキストの順番を入れ替えるのはNGです。
display:table-cellがIE8から実装されますので、
tableの代用品として使えると思ったのですが、
もし、このケースがdisplay:table-cellではできないとなると、
とんだ紛い物となってしまいます。
現在、自分でも調べているところですが、
ご存知の方がいらっしゃいましたら、
ご教授よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
さすがに分かりにくいので、すこし書き直します。
<div id="table">
<h4 id="a">見出しA</h4>
<p>Aの内容</p>
<h4 id="b">見出しB</h4>
<p>Bの内容</p>
<h4 id="c">見出しC</h4>
<p>Cの内容</p>
</div>
ですね。これをtable-cellという、実装ほとんどされていないものを利用して配置するのは感心しません。
まあ、XMLとXSLTなら簡単ですが、それでも汎用性にはかけます。
スタイルーとだと・・・・思いついたものを適当に書いたので、他に、もっと良い方法があるはず・・・。これは、制約が多くてあまり進められない方法です。出来るという意味だけで見てください。
div#table{
position:relative;
margin-left:20%;
margin-right: 20%;
height: 5em;
}
div#table h4{
margin:0px;
padding: 0.4em 0.1em;
font-size: 1em;
font-weight: normal;
border:solid 1px gray;
display: inline-table;
position: absolute;
top: 0px;
width: 32%;
text-align: center;
}
div#table h4#b{
left: 33%;
}
div#table h4#c{
left: 66%;
}
div#table p{
border:solid 1px gray;
padding: 0.4em 0.1em;
position: absolute;
top: 2em;
width: 32%;
height: 2em;
}
div#table h4#b+p{
left: 33%;
}
div#table h4#c+p{
left: 66%;
}
div#table h4#a{
ご回答ありがとうございます。
説明不足ですみません。
h4、pのテキストの長さはランダムで1行だったり2行だったりします。
どこかが2行になってもテーブル組みの縦に連動して伸びる性質でそろえたいです。
ちなみに現状は、それぞれをfloatで並べて、
一番高い枠の高さの取得してheightを各タグに書き込むようなJavaScriptを利用して対処しています。
また、display:tableはtableタグを表以外に使わないように、
見た目だけテーブルレイアウトができるように実装された
W3C勧告に準じているスタイルですので、
ターゲット層の閲覧者に見やすいレイアウトとして利用するかぎりは、
どのタグに適用しても問題ないスタイルだと認識しています。
このスタイルが使われていないのは
IE6と7に実装されてないからという
しょっぱい理由だけだと思っています。。
No.3
- 回答日時:
結構適当ですが似たようなのができました。
<style type="text/css">
*{margin:0; padding:0;}
h4 {float:left; clear:left;}
p {float:left;}
</style>
<h4>あああ</h4><p>あああ</p>
<h4>いいい</h4><p>いいい</p>
<h4>ううう</h4><p>ううう</p>
firefoxでしか確認していませんが、一応できるみたいですね。
No.2
- 回答日時:
さすがに実用的ではないのでまだ試していないのですが、h4に対してtable-cellではなく、table-header-groupの指定をすると良いのではないでしょうか。
ただ、IE8は多分対応していません。あまり過度な期待はしない方が良いでしょう。
ご回答ありがとうございます。
こちらでもいろいろ試してみましたが、
単純な縦割りのカラムレイアウトにしか活用できなさそうですね。
ただfloatも印刷対応など不具合の原因になりやすいこともあり、
それだけでもかなり使えそうだとは思っています。
Windows7が軽いとの噂があったので、
IE8の普及も意外と早くくるのではないかと思い、
先取りしておこうと思ったのですが、
少し様子を見たほうがよさそうですね。
お二方ともありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブルとテーブルの間隔について
-
HTML5で、テーブル内tdタグの高...
-
<th>タグを使っても太字にしな...
-
同じ幅指定のつもりなのに、ブ...
-
table表を横に並べる際の間隔指定
-
【HTML】セル同士の間隔を指定...
-
スタイルの無効化
-
CSSで特定のテーブルだけに...
-
正規表現で「より前」と「より後」
-
テーブルの高さを100%にしたけ...
-
TABLEのセルの中の文字を行単位...
-
tableを画面中央に配置する方法
-
tableを縦に続けるとtable間の...
-
IE8などでCSSでテーブルを中央...
-
html5のテーブル内でdivのタブ...
-
画面サイズを取得し、テーブル...
-
スタイルシートで左側だけ色を...
-
ラインを端から端まで画面いっ...
-
TABLEタグの位置
-
HTMLで<HR>以外で線を引く方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TABLEのセルの中の文字を行単位...
-
テーブルとテーブルの間隔について
-
<th>タグを使っても太字にしな...
-
CSSで特定のテーブルだけに...
-
HTML5で、テーブル内tdタグの高...
-
HTML tableのセルにtextareaを...
-
テーブル内のセル間にスペース...
-
画面幅に合わせてテーブルのカ...
-
同じ幅指定のつもりなのに、ブ...
-
table表を横に並べる際の間隔指定
-
(HTML)Tableを任意の位置に置...
-
正規表現で「より前」と「より後」
-
CSS スタイルを子要素の子要素...
-
tableの位置がIEとその他ブラウ...
-
<fieldset>タグについて
-
<table>のclass指定が継承されない
-
html5のテーブル内でdivのタブ...
-
HTMLのテーブルをExcelにCopy&P...
-
テーブルデータを折り返して表...
-
tableのcellpadding="0" cellsp...
おすすめ情報