<br style="clear:both;" /> を使わないfloatクリア(IE対応)
複雑なデザインのサイトをコーディングしていてfloatを多用すると、クリアするのをを忘れたりすることがあって、その原因を探すのに無駄な時間を使ってしまうことがあります。floatをクリアする方法として一番楽なのは<br style="clear:both;" />を用いた方法です。しかしこの方法も完璧ではありません。例えばリストを使った時などです。
続きを読む »
<div>〜</div>の中でfloatをクリアするのはさほど難しくありません。
floatした後続の要素でクリアすれば良いだけです。
html
<div>
<img src="写真">
<p id="date">撮影日時</p>
<p>テキスト</p>
</div>
css
div img{
float: left;
}
div #date{
float: right;
}
div p{
clear: both;
}
もし後続する要素がなくても<br style="clear:both;" />を一番下に書き込めば良いだけです。例えば以下のように。
<div>
<img src="写真">
<p id="date">撮影日時</p>
<br style="clear:both;" />
</div>
しかし以下のようなhtmlとcssを書いた場合、floatをクリアするにはどうしますか?
html
<ul>
<li>リスト1<l/i>
<li>リスト2<l/i>
<li>リスト3<l/i>
</ul>
css
ul li{
float: left;
}
FirefoxやSafariで見るぶんにはafter擬似要素でクリアするだけで良いのですが、IE6、7のことを考えるとそうもいきません。そこでhtmlに通常は必要のない無駄な記述を追加することになります。
<ul>
<li>リスト1<l/i>
<li>リスト2<l/i>
<li>リスト3<l/i>
<li style="display: none;"><br style="clear:both;" /></li>
</ul>
<br style="clear:both;" />を<ul>〜</ul>内に直接書くことは出来ませんのでこのような面倒な書き方になります。一応これでW3CのチェックでもValidになります。しかし、腑に落ちない。なぜスタイルのためだけに通常は必要のないhtmlを追加しなくてはいけないのか、それもIEのためだけに。<div>〜</div>に<br style="clear:both;" />を記述するのもちょっとためらうのに。
そう思っていたのですが、とても有用な方法を見つけました。いつも拝見させて頂いているの小粋空間さんの『CSS の after 擬似要素で回り込みを解除する』というエントリーです。
方法は至って簡単、cssを以下のように記述するだけです。
ul{
zoom: 100%;
}
ul:after{
content: "";
clear: both;
height: 0;
display: block;
visibility: hidden;
}
FirefoxやSafariなどのafter擬似要素に対応したブラウザはul:afterでfloatをクリアし、IE6、7対策として、ulに zoom: 100%;を指定します。zoomプロパティは、もともとIEの独自拡張で、指定要素を拡大表示するためのものですが、これを記述すると自動的にfloatがクリアされるようです。
この方法を使うとfloatのクリア忘れなどが減ってコーディング作業がとても効率化しました。唯一デメリットはzoomはIE独自のものなのでCSS valid にならなくなります。
« 元に戻す
CSSの背景画像をランダムに表示
CSSのbackground-imageをランダムに表示させることが出来たら良いなと思っていたのですが、とても手軽に実現する方法がありました。Desgin Walkerさんで配布されているrotator.phpです。
CSSのバックグラウンド画像をランダムに表示してみる
続きを読む »
こちらのエントリーで詳しく説明されていますが、同リンク先よりrotator.zipをダウンロードして解凍して出来たフォルダをまるごとサーバーにアップロード。そのフォルダの中にランダム表示したい画像をアップロード。cssに下記を追記します。
#rotator{
background: url(/rotator/rotator.php) no-repeat top center;
width: 350px; /*横幅のサイズはお好きなように */
height: 230px; /*縦幅のサイズはお好きなように */
}
htmlのランダム表示したい箇所に
<div id="rotator"></div>
を追加すれば完了です。
とても簡単にランダム表示が実現されます。
ヘッダーの画像を毎回変えたりとか、見る人が楽しんでくれそうな仕掛けを作れそうですね。
« 元に戻す
Mac版 IE5のCSS対策 専用CSS もしくは除外
Mac版 IE5はCSSでレイアウトしたサイトにとってかなりの難関です。
既にサポートされていないし、使用者も殆どいない筈ですがゼロではありません。そんな環境で見ている方が悪いと切り捨てるのは簡単ですが、そんな人にも見てほしいと思うならMac版 IE5だけに適応するCSSを作るか、もしくはMac版 IE5だけCSSを適応せずにHTMLだけで見せる、という方法があります。
前者は専用のCSSをCSSハックなどしてを作る手間がありますが、レイアウトを殆ど意図した通りに表示させることが可能でしょう。後者は多少読みにくくなりますが、CSSはレイアウトを決めているだけですので、情報だけなら十分HTMLで伝えることが出来ます。
続きを読む »
Mac版 IE5に専用のCSSを読み込ませる方法。
/*?*//*/
@import "ie5mac.css";
/**/
@import/*〜〜〜?*/で囲むことによってほかのブラウザはコメントと認識するのですが、Mac版 IE5だけは普通に読み込んでしまうというCSSハックです。
Mac版 IE5にCSSを読み込ませない方法
@import 'main.css';
Mac版 IE5は@importの命令文を二重引用符("")ではなく一重引用符('')で囲うと、その外部スタイルシートを読み込まなくなります。これを利用して一旦読み込んだ外部スタイルシートから「@import 'main.css';」のようにメインとなるCSSを読み込むことでMac版 IE5をCSSの対象外にすることが可能です。
« 元に戻す
1emを10pxにする方法
一般的なブラウザはデフォルトの文字サイズが16ピクセルになっています。
ですから「%」や「em」で文字サイズを指定するとそれが何ピクセルにあたるのか、直感的に分かりません。しかしブラウザのデフォルトの文字サイズを10ピクセルにしてしまえば、「1.3em=13px」、「2em=20px」というように分かりやすくなります。方法は実に簡単でbodyに対して以下の一行を加えるだけです。
body { font-size: 62.5%; }
上記を加えるだけでCSSの編集中文字サイズの指定が直感的に行えるようになります。
フリーでValidなCSS/XHTMLテンプレート
CSS/XHTMLのテンプレートを配布します。
テンプレートサンプル
CSS/XHTMLともにValidでSEOにも少し気をつかっています。
さらにメールフォームも同梱しています(サンプル)
PHPが利用出来るサーバーでご利用頂けます。
(Docodemo HeadlineさんのPHPフォームを利用させて頂いています。)
利用は無料です。
使用条件
1.アダルト不可です(商用サイトはご相談下さいメールフォーム)
2.下部のAirNXへのリンクは外さないで下さい。
ダウンロード
近々、MovableTypeやWordpressのテンプレートへの対応も考えています。