HTML/CSSの最近のブログ記事

li を float:left で横並びにした場合、li の中の文章の量や画像の高さが違ってくると、綺麗に回り込みしてくれません。
これを綺麗に回り込みさせる場合、display:inline-block;を使用します。
inline-blockは、あまり知られていないマイナーなプロパティですが。。。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>横並びにしたliの高さを揃える</title>
<style type="text/css">
body {
font-size:small;
}
h1 {
font-size:medium;
margin:0px;
padding:10px;
}
ul {
width:350px;
padding:0px;
background:#ffff99;
}
li {
width:100px;
margin:5px;
background:#ccffcc;
list-style:none;

display:inline-block;
vertical-align:top;
}
* html li { /* IE 6 */
display:inline;
zoom:1;
}
*:first-child+html li{ /* IE 7 */
display:inline;
zoom:1;
}

ul#t1 li {
margin:0px;
}
</style>
</head>
<body>

<h1>横並びにしたliの高さを揃える</h1>

<ul>
<li>1番目ああああ</li>
<li>2番目ああああああああああああ</li>
<li>3番目ああああああああああああああああああああ</li>
<li>4番目ああああああああああああああああああああ</li>
<li>5番目ああああああああああああ</li>
<li>6番目ああああ</li>
<li>7番目ああああ</li>
<li>8番目ああああああああああああ</li>
<li>9番目ああああああああああああああああああああ</li>
<li>10番目ああああああああああああああああああああ</li>
</ul>

<p>firefoxは、&lt;/li&gt;の後ろの改行が邪魔して、li の margin を 0 にしても、横が離れてしまう。</p>

<ul id="t1">
<li>1番目ああああ</li>
<li>2番目ああああああああああああ</li>
<li>3番目ああああああああああああああああああああ</li>
<li>4番目ああああああああああああああああああああ</li>
<li>5番目ああああああああああああ</li>
<li>6番目ああああ</li>
<li>7番目ああああ</li>
<li>8番目ああああああああああああ</li>
<li>9番目ああああああああああああああああああああ</li>
<li>10番目ああああああああああああああああああああ</li>
</ul>

</body>
</html>

サンプルはこちらです。

float:left; で横並びにさせず、display:inline-block; を使うことで横並びになります。
IE6、IE7は代替手段で。

firefox の場合、li のマージンを 0 にしても、横が離れてしまいます。HTMLソース上の </li> の後ろの改行が悪さをしているようです。完全にくっつける場合は、HTMLソース上で改行を無くす必要があります。

また、サンプルを見ていただければわかりますが、正確には高さを揃えているのではなく、li の上辺を揃えているだけです。ですので、li 自体を border で囲む場合は、やはり、ずれてしまいます。

WindowsXP IE6、WindowsXP Firefox3、WindowsVista IE7 で行いました。

今回参考にさせていただいたサイト

IE 6, IE 7 の inline-block 考察 | ヨモツネット
書籍などに紹介されていない display : inline-block について
商品写真と説明文のリストなどのための CSS | ヨモツネット

メニューなど、リンクをテキストで書いて、CSSでテキストを画像に置き換えます。
IE6だと、この時、マウスオーバーで画像がちらつく時があります。

こういう場合、aタグに background:url で画像を指定するわけですが、aタグが乗っかっている li や div の背景にも同じ画像を指定することで回避出来ます。

参考エントリー
IEでマウスオーバーすると画像がちらつく

CSSでフッターを固定することが出来たので、次はヘッダーを固定してみる。

まずは、一般的なホームページの書き方から。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CSSでヘッダーを固定する 第1歩</title>
<style type="text/css">
body {
 margin:0px;
}
#header {
 background:#ccffcc;
 height:100px;
}

#main {
 background:#ffff99;
}

#footer {
 background:#ffcc99;
 height:80px;
}
</style>
</head>
<body>

<div id="header">
ヘッダー
</div>

<div id="main">
コンテンツ1<br />
コンテンツ2<br />
コンテンツ3<br />
コンテンツ4<br />
コンテンツ5<br />
コンテンツ6<br />
コンテンツ7<br />
コンテンツ8<br />
コンテンツ9<br />
コンテンツ10<br />
コンテンツ11<br />
コンテンツ12<br />
コンテンツ13<br />
コンテンツ14<br />
コンテンツ15<br />
コンテンツ16<br />
コンテンツ17<br />
コンテンツ18<br />
コンテンツ19<br />
コンテンツ20<br />
コンテンツ21<br />
コンテンツ22<br />
コンテンツ23<br />
コンテンツ24<br />
コンテンツ25<br />
コンテンツ26<br />
コンテンツ27<br />
コンテンツ28<br />
コンテンツ29<br />
コンテンツ30<br />
コンテンツ31<br />
</div>

<div id="footer">
フッター
</div>

</body>
</html>

サンプルはこちらです。
当然ですが、このままだと、ヘッダーはブラウザの上に固定されません。

CSSで擬似フレームにトライ中で、まずは、フッターを固定する方法を自分なりにまとめました。

まずは、一般的なホームページの書き方から。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CSSでフッターを固定する 第1歩</title>
<style type="text/css">
body {
 margin:0px;
}
#header {
 height:100px;
 background:#ccffcc;
}
#main {
 background:#ffff99;
}
#footer {
 height:80px;
 background:#ffcc99;
}
</style>
</head>
<body>
<div id="header">
ヘッダー
</div>
<div id="main">
コンテンツ
</div>
<div id="footer">
フッター
</div>
</body>
</html>

サンプルはこちらです。
当然ですが、このままだと、フッターはブラウザの下に固定されません。

CSSで擬似フレームにトライしていたところ、森下屋さんから情報をいただき、そこから派生しまして、IEだけにCSSを適用する方法をまとめてきました。
サンプルは記事の一番最後にあります。

アンダースコアハック

プロパティ名の先頭にアンダースコアを記述することでIEに適用することが出来ます。IE6のみでIE7には適用しません。

スターHTMLハック

属性の前に *html を記述することでIEのみに読み込ませることが出来ます。IE6のみでIE7には適用しません。
CSSの親子関係の解釈の違いでIEだけ適用されます。考え方はたぶんこういう考えだと思います。
スターハック

スターHTMLハック改

勝手に命名してますが(汗)、上のスターハックの仲間です。属性の前に *+html を記述することでIEのみに読み込ませることが出来ます。こちらはIE6ではなくIE7のみに適用します。

スターHTMLハックを組み合わせると、IE6、IE7、FirefoxとでCSSを別々に適用することが出来ます。

ただ、これはあくまでもハックなので、正道はないのか?と探すと

Firefoxは表示エリア内にコンテンツが収まる場合、スクロールバーを表示しません。IEはコンテンツ量にかかわらずスクロールバーを表示します。

センタリングで表示する場合、ページによってスクロールバーが表示されたり非表示になったりだと、スクロールバーの幅の分だけ表示がずれてしまいます。
出来ればIEのように常にスクロールバーを表示していたい。

この場合

html {
  overflow-y:scroll;
}

とCSSに記述することで常にスクロールバーを表示されます。これでページのコンテンツ量にかかわらず、センタリングでズレなくなります。

ウェブサイトのページやブログにYahoo!に地図を貼り付ける方法です。

Yahoo!の地図のサイトではりつけたい場所を探して、縮尺を調整します。

画面右上の「この地図のURL」をクリックすると、図のような画面が表示されます。ここの中の「この地図をブログ、サイトにはりつける」という長いURLをコピペで貼るだけでOKです。
Googleと同じく、iframeで表示されます。
地図の大きさは、iframeの中の width と height で指定可能です。

yahoomaps.jpg

個人的には、GoogleよりもYahoo!の地図のほうが好きですね。

ウェブページ

Powered by Movable Type 4.261

このアーカイブについて

このページには、過去に書かれたブログ記事のうちHTML/CSSカテゴリに属しているものが含まれています。

前のカテゴリはASPです。

次のカテゴリはioncubeです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。