: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;” の続きを読む