cssスタイルシートの十大テクニック
6787 ワード
1.cssフォントの略記規則
cssを使用してフォントを定義すると、次のようになります.
実際には、これらのプロパティを簡単に書くことができます.
今はだいぶよくなったでしょうが、この簡単な書き方を使うには、少なくともfont-sizeとfont-familyのプロパティを指定し、他のプロパティ(font-weight、font-style、font-varientなど)は指定しないと自動的にデフォルト値を使用します.
2.同時に2つのclassを使用
通常、属性にはclassを1つだけ指定しますが、これは1つしか指定できないわけではありません.実際には、指定したいだけ指定できます.たとえば、次のようにします.
...
カンマではなくスペースを使用して2つのclassを同時に使用することで、この段落には2つのclassで作成されたルールが同時に適用されます.両方のルールが重複している場合、後者は実際の優先アプリケーションを取得します.
3.cssのボーダーのデフォルト値
枠線のルールを作成すると、通常は色、幅、スタイルを指定します(任意の順序で使用できます).たとえばborder:3 px solid 0000(3画素幅の黒い実線フレーム)ですが、この例で唯一指定する値はスタイルだけです.スタイルを実線(solid)に指定すると、残りの値はデフォルト値を使用します.デフォルトの幅は中等(3~4ピクセル相当)です.既定の色は枠線のテキスト色です.これがあなたが望む効果であれば、cssで指定しなくてもいいです.
4.!importantはIEに無視されます
cssでは、通常最後に指定されたルールが優先されます.しかし、IE以外のブラウザでは、後に表示されます!importantの文は、次のような絶対的な優先度を取得します.
IE以外のすべてのブラウザの上部境界は3.5 emであり、IEは2 emである場合、特に相対境界値を使用する場合(この例のように)、IEと他のブラウザとのわずかな違いを示すことができる場合がある.
(cssのサブセレクタもIEに無視されることに気づいた人も多いかもしれません)
5.画像置換のテクニック
画像ではなく標準的なhtmlを使用して文字を表示するのは、通常より賢明であり、ダウンロードを速めるだけでなく、より良い可用性を得ることができます.しかし、訪問者のマシンにないフォントを使うと決心した場合は、画像しか選択できません.
例えば、各ページの上部に「Buy widgets」というタイトルを使いたいと思っていますが、検索エンジンに発見されることを望んでいます.珍しいフォントを美しくするためには、画像で表示しなければなりません.
もちろんそうですが、検索エンジンが実際のテキストをaltテキストよりも重視している証拠があります(altテキストをキーワードとして使用しているサイトが多すぎるため)、別の方法を使用しなければなりません.
今、あなたはきれいな画像を使って、実際のテキストをよく隠しています.cssを借りて、テキストは画面の左側-2000ピクセルに位置しています.
6.cssボックスモデルhackの別の選択
cssボックスモデルhackは、IE 6以前のブラウザ表示の問題を解決するために使用され、IE 6.0以前のバージョンでは、ある要素の枠線値と塗りつぶし値が幅に含まれる(幅値に加算されるのではなく).たとえば、次のcssを使用して、コンテナのサイズを指定することができます.
htmlに適用します:...
ボックスの総幅は、ほとんどのブラウザで150ピクセル(100ピクセル幅+5ピクセルの枠線2本+20ピクセルの塗りつぶし)であり、IE 6以前のブラウザでは100ピクセル(枠線値と塗りつぶし値が幅値に含まれている)であったが、ボックスモデルのhackはこの問題を解決するためであるが、面倒をもたらす.より簡単な方法は次のとおりです.
これにより、どのブラウザでもボックスの総幅は150ピクセルになります.
7.ブロック要素を中央に配置
あなたのサイトが固定幅のレイアウトを使用していると仮定し、すべてのコンテンツを画面の中央に配置し、以下のcssを使用することができます.
htmlのbody内の任意の項目を中に置くことができます.この項目は自動的に等しい左右の境界値を取得し、中央表示を保証します.ただし、これはIE 6以前のバージョンのブラウザではまだ問題があり、中央には表示されませんので、次のように変更する必要があります.
bodyの設定は本体コンテンツを中心にしますが、すべての文字も中心にします.これはおそらくあなたが望んでいる効果ではありません.このため、contentのdivにはtext-align:leftという値を指定します.
8.cssによる垂直中央
垂直中央はテーブルにとっておかずの一皿であり、vertical-align:middleとしてセルを指定するだけでよいが、これはcssレイアウトでは役に立たない.ナビゲーションメニューの高さを2 emに設定し、cssで垂直に位置合わせするルールを指定すると、テキストがボックスの上部に並べられ、何の違いもありません.
この問題を解決するには、ボックスの行の高さをボックスの高さと同じにするだけでよい.この例では、ボックスの高さは2 emで、cssにline-height:2 emを追加するだけで垂直中心を実現することができる.
9.容器内のcss位置決め
cssの最大の利点の1つは、ドキュメントの任意の場所にオブジェクトを配置することができ、同じようにコンテナ内にオブジェクトを配置することもできます.コンテナにcssルールを追加するだけです.
容器内の任意の要素の位置は、容器に対して相対的である.次のhtml構造を使用するとします.
...
navigationをコンテナ内の左境界から30ピクセル、上部から5ピクセルに配置するには、次のcss文を使用します.
10.画面下部に広がる背景色
cssの欠点の1つは、垂直方向の制御が欠けていることであり、テーブルレイアウトに問題が発生しないことです.ページの左側にWebサイトを配置するためのナビゲーションの列を設定したとします.ページは白いバックグラウンドですが、ナビゲーションする列を青いバックグラウンドにしたい場合は、次のcssを使用します.
問題は、ナビゲーション項目がページの下部まで伸びず、自然と背景色が下部まで伸びないことです.すると左列の青い背景がページで途中で遮断され、あなたのデザインを無駄にしました.どうしようかな?残念なことに、bodyの背景を左列と同じ色の幅の画像に指定するには、詐欺の方法しかありません.cssは以下の通りです.
背景図は幅150ピクセルの青い画像であるべきです.この方法の欠点は,emを用いて左列の幅を指定することができず,ユーザが文字の大きさを変更してコンテンツの幅を拡張した場合,背景色の幅はそれに伴って変化しないことである.
cssを使用してフォントを定義すると、次のようになります.
font-size: 1em;
line-height: 1.5em;
font-weight: bold;
font-style: italic;
font-variant: small-caps;
font-family: verdana,serif;
実際には、これらのプロパティを簡単に書くことができます.
font: 1em/1.5em bold italic small-caps verdana,serif
今はだいぶよくなったでしょうが、この簡単な書き方を使うには、少なくともfont-sizeとfont-familyのプロパティを指定し、他のプロパティ(font-weight、font-style、font-varientなど)は指定しないと自動的にデフォルト値を使用します.
2.同時に2つのclassを使用
通常、属性にはclassを1つだけ指定しますが、これは1つしか指定できないわけではありません.実際には、指定したいだけ指定できます.たとえば、次のようにします.
...
カンマではなくスペースを使用して2つのclassを同時に使用することで、この段落には2つのclassで作成されたルールが同時に適用されます.両方のルールが重複している場合、後者は実際の優先アプリケーションを取得します.
3.cssのボーダーのデフォルト値
枠線のルールを作成すると、通常は色、幅、スタイルを指定します(任意の順序で使用できます).たとえばborder:3 px solid 0000(3画素幅の黒い実線フレーム)ですが、この例で唯一指定する値はスタイルだけです.スタイルを実線(solid)に指定すると、残りの値はデフォルト値を使用します.デフォルトの幅は中等(3~4ピクセル相当)です.既定の色は枠線のテキスト色です.これがあなたが望む効果であれば、cssで指定しなくてもいいです.
4.!importantはIEに無視されます
cssでは、通常最後に指定されたルールが優先されます.しかし、IE以外のブラウザでは、後に表示されます!importantの文は、次のような絶対的な優先度を取得します.
margin-top: 3.5em !important; margin-top: 2em
IE以外のすべてのブラウザの上部境界は3.5 emであり、IEは2 emである場合、特に相対境界値を使用する場合(この例のように)、IEと他のブラウザとのわずかな違いを示すことができる場合がある.
(cssのサブセレクタもIEに無視されることに気づいた人も多いかもしれません)
5.画像置換のテクニック
画像ではなく標準的なhtmlを使用して文字を表示するのは、通常より賢明であり、ダウンロードを速めるだけでなく、より良い可用性を得ることができます.しかし、訪問者のマシンにないフォントを使うと決心した場合は、画像しか選択できません.
例えば、各ページの上部に「Buy widgets」というタイトルを使いたいと思っていますが、検索エンジンに発見されることを望んでいます.珍しいフォントを美しくするためには、画像で表示しなければなりません.
もちろんそうですが、検索エンジンが実際のテキストをaltテキストよりも重視している証拠があります(altテキストをキーワードとして使用しているサイトが多すぎるため)、別の方法を使用しなければなりません.
Buy widgets
, ? css :
h1
{
background: url(/uploadfile/200806/17/96162027360.gif) no-repeat;
}
h1 span
{
position: absolute;
left:-2000px;
}
今、あなたはきれいな画像を使って、実際のテキストをよく隠しています.cssを借りて、テキストは画面の左側-2000ピクセルに位置しています.
6.cssボックスモデルhackの別の選択
cssボックスモデルhackは、IE 6以前のブラウザ表示の問題を解決するために使用され、IE 6.0以前のバージョンでは、ある要素の枠線値と塗りつぶし値が幅に含まれる(幅値に加算されるのではなく).たとえば、次のcssを使用して、コンテナのサイズを指定することができます.
#box
{
width: 100px;
border: 5px;
padding: 20px;
}
htmlに適用します:...
ボックスの総幅は、ほとんどのブラウザで150ピクセル(100ピクセル幅+5ピクセルの枠線2本+20ピクセルの塗りつぶし)であり、IE 6以前のブラウザでは100ピクセル(枠線値と塗りつぶし値が幅値に含まれている)であったが、ボックスモデルのhackはこの問題を解決するためであるが、面倒をもたらす.より簡単な方法は次のとおりです.
css:
#box
{
width: 150px;
}
#box div {
border: 5px;
padding: 20px;
}
html:
...
これにより、どのブラウザでもボックスの総幅は150ピクセルになります.
7.ブロック要素を中央に配置
あなたのサイトが固定幅のレイアウトを使用していると仮定し、すべてのコンテンツを画面の中央に配置し、以下のcssを使用することができます.
#content
{
width: 700px;
margin: 0 auto;
}
htmlのbody内の任意の項目を中に置くことができます.この項目は自動的に等しい左右の境界値を取得し、中央表示を保証します.ただし、これはIE 6以前のバージョンのブラウザではまだ問題があり、中央には表示されませんので、次のように変更する必要があります.
body
{
text-align: center;
}
#content
{
text-align: left;
width: 700px;
margin: 0 auto;
}
bodyの設定は本体コンテンツを中心にしますが、すべての文字も中心にします.これはおそらくあなたが望んでいる効果ではありません.このため、contentのdivにはtext-align:leftという値を指定します.
8.cssによる垂直中央
垂直中央はテーブルにとっておかずの一皿であり、vertical-align:middleとしてセルを指定するだけでよいが、これはcssレイアウトでは役に立たない.ナビゲーションメニューの高さを2 emに設定し、cssで垂直に位置合わせするルールを指定すると、テキストがボックスの上部に並べられ、何の違いもありません.
この問題を解決するには、ボックスの行の高さをボックスの高さと同じにするだけでよい.この例では、ボックスの高さは2 emで、cssにline-height:2 emを追加するだけで垂直中心を実現することができる.
9.容器内のcss位置決め
cssの最大の利点の1つは、ドキュメントの任意の場所にオブジェクトを配置することができ、同じようにコンテナ内にオブジェクトを配置することもできます.コンテナにcssルールを追加するだけです.
#container
{
position: relative;
}
容器内の任意の要素の位置は、容器に対して相対的である.次のhtml構造を使用するとします.
...
navigationをコンテナ内の左境界から30ピクセル、上部から5ピクセルに配置するには、次のcss文を使用します.
#navigation
{
position: absolute;
left: 30px;
top: 5px;
}
10.画面下部に広がる背景色
cssの欠点の1つは、垂直方向の制御が欠けていることであり、テーブルレイアウトに問題が発生しないことです.ページの左側にWebサイトを配置するためのナビゲーションの列を設定したとします.ページは白いバックグラウンドですが、ナビゲーションする列を青いバックグラウンドにしたい場合は、次のcssを使用します.
#navigation
{
background: blue;
width: 150px;
}
問題は、ナビゲーション項目がページの下部まで伸びず、自然と背景色が下部まで伸びないことです.すると左列の青い背景がページで途中で遮断され、あなたのデザインを無駄にしました.どうしようかな?残念なことに、bodyの背景を左列と同じ色の幅の画像に指定するには、詐欺の方法しかありません.cssは以下の通りです.
body
{
background: url(blue-image.gif) 0 0 repeat-y;
}
背景図は幅150ピクセルの青い画像であるべきです.この方法の欠点は,emを用いて左列の幅を指定することができず,ユーザが文字の大きさを変更してコンテンツの幅を拡張した場合,背景色の幅はそれに伴って変化しないことである.