table内でpositionが使えるようになっていた

table内でpositionを使った配置をするとFirefoxでうまくできなかった記憶があるのですが、いつのまにか大丈夫になっていたみたいなので、備忘録としてメモしておきます。

サンプルコード

HTML

<table>
	<tr>
		<th>
			お名前
			<span class="required">必須</span>
		</th>
		<td>
			<input type="text" name="name" />
			<div class="error-arrow">
				<p>全角で入力してください</p>
			</div>
			<div class="required-check">入力済</div>
		</td>
	</tr>
</table>

CSS

table {
	border-collapse: collapse;
	border-spacing: 0;
	width: 600px;
	margin: 0 auto;
}
th, td {
	position: relative;
	border: #cccccc 1px solid;
	padding: 10px 15px;
}
th {
	width: 150px;
	padding-right: 30px;
	font-weight: normal;
	text-align: left;
	background: #cccccc;
}
input {
	width: 300px;
}
.required {
	position: absolute;
	top: 50%;
	right: 5px;
	margin-top: -11px;
	padding: 3px 5px;
	font-size: 10px;
	color: #ffffff;
	background: #ff0000;
}
.error-arrow {
	position: absolute;
	top: 0;
	left: 0;
}
.error-arrow p {
	position: absolute;
	bottom: -8px;
	left: 20px;
	width: 250px;
	margin: 0;
	border-radius: 5px;
	padding: 5px;
	border: #999999 1px solid;
	font-size: 14px;
	background: #ffffff;
}
.error-arrow p:after {
	content: '';
	display: block;
	position: absolute;
	bottom: -6px;
	left: 20px;
	width: 10px;
	height: 10px;
	border: #999999 1px solid;
	border-top: none;
	border-left: none;
	background: #ffffff;
	transform: rotate(45deg);
}
.required-check {
	position: absolute;
	top: 0;
	right: 0;
	top: 50%;
	right: 5px;
	margin-top: -10px;
	font-size: 12px;
}

以前はFirefoxだとtable系の要素でposition:relative;が効かなかったのですが、Firefox・chrome・IEで確認した限り問題なさそうでした。
table内でpositionを使った配をするデモページ

フォームでエラー文言を出すときだったり、意外とtable内でpositionを使いたい場面はあると思うので、こうして使えるようになると便利ですね。
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年4月
 123456
78910111213
14151617181920
21222324252627
282930