<legend>はFirefoxやwebkit系でdisplayを変更できない

スマートフォン用にtable-cellでtable風の左右並びレイアウトを組む事があったのですが
何度やってもFirefoxとChrome、Safari(webkit系)で<legend>タグのdisplayがtable-cellに変わらない!

ずいぶん試した末に、<legend>を<span>や<div>など他のタグに変更したら同じCSSでdisplay:table-cellを指定できました。
まさかそこが原因だったとは。
不覚にも、<legend>が原因というのにたどり着くまで時間がかかりました。

くわしくはサンプルで。
“<legend>はFirefoxやwebkit系でdisplayを変更できない” の続きを読む

CSSのhoverだけでどこまでテーブルを読みやすくできるか

CSSのhoverでテーブルの情報を読みやすくしてみたサンプルです。
縦軸が取ってこれないところが残念なんですけどね。
お天気アイコンを用意できてないところもご愛嬌で…。

サンプル

10(月) 11(火) 12(水) 13(木) 14(金) 15(土) 16(日)
北海道 曇/雪 晴/雪 曇/雪 晴/雪 曇/雪 雪/曇 曇/雪
東北 曇/晴 晴/雪 曇/晴 晴/曇 曇/雪 曇/晴
関東・甲信 曇/雪 曇/晴 晴/曇 曇/晴 曇/晴 曇/晴 晴/曇
中部・北陸 曇/雪 曇/雪 曇/雪 曇/雪 曇/雪 曇/雪
近畿 曇/雪 曇/晴 曇/晴 曇/晴 曇/晴 晴/曇
中国・四国 雪/曇 曇/晴 晴/曇 曇/晴 晴/曇 晴/曇
九州 雨/曇 晴/曇 晴/曇 曇/晴 晴/曇 曇/晴 晴/曇
沖縄 曇/雨 曇/雨 曇/晴 晴/曇 晴/曇

“CSSのhoverだけでどこまでテーブルを読みやすくできるか” の続きを読む

CSS間接セレクタ「~」と隣接兄弟セレクタ「+」の使いどころ

Internet Exolorer 6 以外で使える、CSSの隣接兄弟セレクタ、間接セレクタの使いどころを発見!
CMSで項目の組み合わせが変わる場合、2番め以降だけにセパレータ的な線やマージをつけるのに便利です。

間接セレクタをつかうと、2番め以降に登場する要素にスタイルを適用できます。

.section dl ~ dl {
	border-top: 1px dotted #666;
}

隣接兄弟セレクタをつかうと、直後にならぶ要素にスタイルを適用できます。

.section dl + div {
	margin-top: 1em;
}

くわしくは、サンプルで!

“CSS間接セレクタ「~」と隣接兄弟セレクタ「+」の使いどころ” の続きを読む

:not()などのCSS擬似クラスを複数設定する

CSS3から使えるようになった擬似セレクタ、
そのなかで「~以外」を指定できる:not()を複数指定する方法をご紹介します。

たとえば
.typeA または .typeB ではない親要素を持つものへスタイルを適用
というケースです。

:not()は、自分でHTMLとCSSをセットで設計する場合に使う機会はなかなかないのですが
既存のHTMLに手を加えることができず、CSSだけで見た目を変更しなければならない案件で使うことがあります。

なお、擬似クラスはIE8では使えませんのでご注意ください!
Internet Explorer 8では使えないCSS

“:not()などのCSS擬似クラスを複数設定する” の続きを読む

IE6と7でリンクの中の画像をクリックできない

リンクの<a>タグの中にブロック要素を入れ、そのなかへ画像をいれると
IE6と7では画像の部分をクリックしてもリンク先に遷移しなくなる。

たとえばこんな感じのメニュー。

<ul id="navigation">
	<li class="current"><a href="/"><span><img src="home.gif" alt="home" /><span></a></li>
	<li><a href="/service/"><span><img src="service.gif" alt="service" /><span></a></li>
	<li><a href="/products/"><span><img src="products.gif" alt="products" /><span></a></li>
	<li><a href="/contact/"><span><img src="contact.gif" alt="contact" /><span></a></li>
</ul>
#navigation {
	display: block;
	border: 1px solid #000;
	border-left: none;
}
#navigation:after {
	content: '';
	display: block;
	clear: both;
	height: 0;
	width: 0;
}
#navigation li {
	display: block;
	float: left;
	border-left: 1px solid #000;
}
#navigation li a {
	display: block;
	border: 1px solid #eee;
}
#navigation li a span {
	display: block;
	text-align: center;
	border-top: 3px solid #ccc;
	padding: 1em 0;
	width: 6em;
}
#navigation li.current a span {
	border-color: #f00;
}

IE6でposition:fixed;

cssで固定表示させるためにはposition:fixed;を設定しますが
IE6がこのプロパティに対応していないという…。

IE6用にposition:absolute;でいったん絶対位置表示を設定しておいて、
javascriptのスクロールイベントでスクロールした分だけcssのtopの値を増やすという手もありますが
これだとスクロールしたときガタつきがでてしまいます。

IE6だけの対策をわざわざ行うなら、スクロールがなめらかに仕上がるので expression のほうがおすすめです。

“IE6でposition:fixed;” の続きを読む