BLOG

PCサイトとスマホサイトで違うテーブルデザイン

2013-04-17

テーブルに情報が多すぎて、スマホサイトでは、幅が足りない・・・
そんな方に、レスポンシブデザインのCSSで、便利な技がありました。

table, thead, tbody, th, td, tr {
		display: block;
	}

	/* Hide table headers (but not display: none;, for accessibility) */
	thead tr {
		position: absolute;
		top: -9999px;
		left: -9999px;
	}

	tr { border: 1px solid #ccc; }

	td {
		/* Behave  like a "row" */
		border: none;
		border-bottom: 1px solid #eee;
		position: relative;
		padding-left: 50%;
	}

	td:before {
		/* Now like a table header */
		position: absolute;
		/* Top/left values mimic padding */
		top: 6px;
		left: 6px;
		width: 45%;
		padding-right: 10px;
		white-space: nowrap;
	}

	/*
	Label the data
	*/
	td:nth-of-type(1):before { content: "First Name"; }
	td:nth-of-type(2):before { content: "Last Name"; }
	td:nth-of-type(3):before { content: "Job Title"; }
	td:nth-of-type(4):before { content: "Favorite Color"; }
	td:nth-of-type(5):before { content: "Wars of Trek?"; }
	td:nth-of-type(6):before { content: "Porn Name"; }
	td:nth-of-type(7):before { content: "Date of Birth"; }
	td:nth-of-type(8):before { content: "Dream Vacation City"; }
	td:nth-of-type(9):before { content: "GPA"; }
	td:nth-of-type(10):before { content: "Arbitrary Data"; }
}

テーブルの属性をtable-cellなどから、blockに変換。
5行目でテーブルヘッダを画面の外へ追いやって、22行目でテーブル見出し

に当たる部分を擬似的に作成、
36行目からその見出し文字を設定。というところでしょうか。

テーブルでHTMLを組むと、固定概念的に表組みだけという感覚になりますが、
いわば一対のHTMLですからね。こういうこともできるのです。
こういうところが、WEB制作の面白いところでしょうね。

参考サイト様、ありがとうございました。