ホーム

OFF-SOFT.net

OFF-SOFT.net

ウェブやソフトウェアに関するサポート&情報サイトです。サイト構築からソフトウェアの作成、利用まであなたの助けになるかも・・・・しれません。たぶん・・。

HTMLで幅を調整する

公開日| 2009年04月07日 | コメントはまだありません。

HTMLで、よく躓くのは、幅の調整だ。今回は、初級編として、pre , table の幅の固定について調査してみる。

テーブルの幅の問題
一般的に、TABLEは、width(幅)を指定できるのだから、固定できるのでは・・・?
実は、HTMLの勉強を始めたころ、筆者自身もそう思っていた。

例えば、以下のような場合、どうだろう。
1
2
3
4
5
6
7
8
9
	<table width="300px" border="1" bgcolor="#f0f0f0">
		<tr>
			<td>カラム1</td><td>カラム2</td><td> カラム3</td>
		</tr>
		<tr>
			<td>データ1</td><td>データ2</td><td> データ3</td>
		</tr>
	</table>
 
実例
カラム1カラム2 カラム3
データ1データ2 データ3

では、次に、このパターンではどうだろう。

1
2
3
4
5
6
7
8
9
	<table width="300px" border="1" bgcolor="#f0f0f0">
		<tr>
			<td>カラム1</td><td>カラム2</td><td> カラム3</td>
		</tr>
		<tr>
			<td>データ1</td><td>データ2</td><td> 012345678901234567890123456789012345678901234567890123456789</td>
		</tr>
	</table>
 
実例
カラム1カラム2 カラム3
データ1データ2 012345678901234567890123456789012345678901234567890123456789

このように突き抜ける。
これを解消するには、tableのスタイルを設定してあげるだけで可能だ。
1
2
3
4
5
6
7
8
9
	<table width="300px" border="1" bgcolor="#f0f0f0" style="table-layout: fixed;">
		<tr>
			<td>カラム1</td><td>カラム2</td><td> カラム3</td>
		</tr>
		<tr>
			<td>データ1</td><td>データ2</td><td> 012345678901234567890123456789012345678901234567890123456789</td>
		</tr>
	</table>
 
style="table-layout: fixed;"が追加されただけだ。
実例
カラム1カラム2 カラム3
データ1データ2 012345678901234567890123456789012345678901234567890123456789

と、固定されるのがわかる。
ただ、文字は突き抜けている。

文字のつきぬけの問題(連続した半角文字の折り返し)
先のようにテーブルは固定できたが、文字が突き抜ける。これを対処するには、次のように設定すると良い。
  • <wbr>或いは半角ブランクを折り返しても良いところに埋め込む
  • style="word-break: break-all;"を追加する(IEのみ)

1
2
3
4
5
6
7
8
9
	<table width="300px" border="1" bgcolor="#f0f0f0" style="table-layout: fixed;white-space: -moz-pre-wrap;">
		<tr>
			<td>カラム1</td><td>カラム2</td><td> カラム3</td>
		</tr>
		<tr>
			<td>データ1</td><td>データ2</td><td> 0123456789<wbr>0123456789<wbr>0123456789<wbr>0123456789<wbr>0123456789<wbr>0123456789</td>
		</tr>
	</table>
 
<wbr>を折り返しても良いところに埋め込んだ例。
実例
カラム1カラム2 カラム3
データ1データ2 012345678901234567890123456789012345678901234567890123456789

半角ブランクを折り返しても良いところに埋め込んだ例。
実例
カラム1カラム2 カラム3
データ1データ2 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789

1
2
3
4
5
6
7
8
9
	<table width="300px" border="1" bgcolor="#f0f0f0" style="table-layout: fixed;white-space: -moz-pre-wrap;">
		<tr>
			<td>カラム1</td><td>カラム2</td><td> カラム3</td>
		</tr>
		<tr>
			<td>データ1</td><td>データ2</td><td><p style="word-break: break-all;"> 012345678901234567890123456789012345678901234567890123456789</p></td>
		</tr>
	</table>
 
1
style="word-break: break-all;"
を追加した例。IEのみ折り返される。
実例
カラム1カラム2 カラム3
データ1データ2

012345678901234567890123456789012345678901234567890123456789


上記以外にもサーバ側の設定等々で切り抜ける方法もある。詳しくは、Googleなどで検索されると良いと思う。


文字のつきぬけの問題(preタグでの折り返し)
先のようにテーブルでは、(完全とはいえないが)固定できたが、以下のようにpreタグでも文字が突き抜ける。
1
2
3
4
5
6
7
8
9
	<table width="300px" border="1" bgcolor="#f0f0f0" style="table-layout: fixed;">
		<tr>
			<td>カラム1</td><td>カラム2</td><td> カラム3</td>
		</tr>
		<tr>
			<td>データ1</td><td>データ2</td><td><pre> 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789</pre></td>
		</tr>
	</table>
 
例)
カラム1カラム2 カラム3
データ1データ2
 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789

半角ブランクを折り返しても良いところに埋め込んでも、preタグでくくられると突き抜ける。
これを対処するには、次のように設定すると良い。
style="white-space: -moz-pre-wrap;"(FireFox用),
style="word-wrap: break-word;"(IE用),
style="white-space: -pre-wrap;"(Opera 4-6用),
style="white-space: -o-pre-wrap;"(Opera 7用),
style="white-space: pre-wrap;"(CSS3用)
を設定すればよい。
1
2
3
4
5
6
7
8
9
	<table width="300px" border="1" bgcolor="#f0f0f0" style="table-layout: fixed;">
		<tr>
			<td>カラム1</td><td>カラム2</td><td> カラム3</td>
		</tr>
		<tr>
			<td>データ1</td><td>データ2</td><td><pr style="white-space: -moz-pre-wrap;"e> 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789</pre></td>
		</tr>
	</table>
 
例)(FireFox)
カラム1カラム2 カラム3
データ1データ2
 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789

例)(IE)
カラム1カラム2 カラム3
データ1データ2
 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789

このpreタグの対策は、CSSファイルに以下のコードを埋め込んで対処しているものが多いようだ。
1
2
3
4
5
6
7
pre {
	white-space: -moz-pre-wrap;	/*(FireFox用)*/
	word-wrap: break-word;		/*(IE用)*/
	white-space: -pre-wrap;		/*(Opera 4-6用)*/
	white-space: -o-pre-wrap;	/*(Opera 7用)*/
	white-space: pre-wrap;		/*(CSS3用)*/
};

コメント

コメントをどうぞ







  • はてなブックマークへ追加する
  • Facebookでシェアする
  • twitter でつぶやく
  • Google Plusでシェアする
  • Pocketでシェアする
ページトップへ