CSS でショートカット プロパティを記述する際は、トラブルの順序に注意してください (落とし穴を避けるため)

CSS でショートカット プロパティを記述する際は、トラブルの順序に注意してください (落とし穴を避けるため)

ショートハンドプロパティは、複数のプロパティに同時に値を割り当てるために使用されます。たとえば、font は複数のフォント プロパティを設定するために使用できるショートカット プロパティです。フォントスタイル、フォントの太さ、フォントサイズ、フォントの高さ、フォントファミリーを指定します。

フォント: 斜体 太字 18px/1.2 "Helvetica"、"Arial"、サンセリフ;

次のようなプロパティもあります。

  • background は、background-color、background-image、background-size、background-repeat、background-position、background-origin、background-chip、background-attachment などの複数の背景プロパティのショートカット プロパティです。
  • border は、border-width、border-style、border-color のショートハンド プロパティであり、これらのプロパティもショートハンド プロパティです。
  • border-width は、上、右、下、左の境界線の幅を表すショートカット プロパティです。

ショートカット プロパティを使用すると、コードを簡潔かつ明確にすることができますが、奇妙な動作が隠れてしまうこともあります。

ショートカットプロパティは他のスタイルを暗黙的に上書きします

ほとんどのショートハンド プロパティでは、一部の値を省略し、必要な値のみを指定できます。ただし、そうすることで省略された値も設定され、暗黙的に初期値に設定されることに注意してください。これにより、他の場所で定義されたスタイルが自動的に上書きされます。たとえば、Web ページのタイトルに短縮フォント属性を使用し、font-weight を省略すると、フォントの太さは通常に設定されます。

省略された値を初期値に設定するショートカットプロパティ

次の CSS を追加します。

h1{ 
  フォントの太さ: 太字; 
} 
。タイトル{ 
  フォント: 32px Helvetica、Arial、sans-serif; 
}

一見すると、<h1 class="title">CSS プロパティのショートカット</h1> によってタイトルが太字になると思われるかもしれませんが、実際にはそうではありません。上記のコードは次のコードと同等です。

h1 { 
  フォントの太さ: 太字; 
} 
 
。タイトル { 
  font-style: normal; (次の 5 行) これらのプロパティの初期値は font-variant: normal; です。 
  フォントの太さ: 標準; 
  フォント伸縮: 通常; 
  行の高さ: 通常; 
  フォントサイズ: 32px; 
  フォントファミリー: Helvetica、Arial、sans-serif; 
}

これらのスタイルを <h1> に追加すると、太字ではなく通常のフォントで表示されます。これらのスタイルは、祖先要素から継承されたフォント スタイルもオーバーライドします。すべてのショートカット プロパティのうち、フォントはプロパティ値が多すぎるため、最も深刻な問題を抱えています。したがって、<body> 要素の一般的なスタイル以外ではフォントを使用しないでください。もちろん、他のショートカット プロパティでも同じ問題が発生する可能性があるので、注意してください。

省略値の順序を理解する

ショートハンド プロパティは、指定されたプロパティ値の順序に対応しようとします。 border: 1px solid black または border: black 1px solid を設定できます。どちらも機能します。これは、ブラウザが幅、色、境界線のスタイルがどのタイプの値に対応しているかを認識しているためです。

しかし、値が曖昧な属性も数多くあります。この場合、値の順序が重要になります。これらの省略形プロパティの順序を理解することが重要です。

1. 上、右、下、左

要素の 4 辺すべてに値を指定する margin、padding、border などのプロパティの場合、開発者がこれらの短縮プロパティの順序を間違えてしまう可能性が高くなります。これらのプロパティの値は、上から時計回りの順にリストされます。

順序を覚えておくと間違いを避けることができます。これを記憶するには TRouBLe です: top、right、bottom、left。

この数式を使用して、要素の 4 辺すべてにパディングを設定します。下の画像に示すリンクの場合、上部のパディングは 10 ピクセル、右側のパディングは 15 ピクセル、下部のパディングは 0、左側のパディングは 5 ピクセルです。これらのパディングは均一に見えないかもしれませんが、ショートハンド プロパティの順序を示しています。

.nav { 
  色: 白; 
  背景色: #13a4a4; 
  padding: 10px 15px 0 5px; /* 上、右、下、左のパディング*/ 
  境界線の半径: 2px; 
  テキスト装飾: なし; 
}

このモードでは属性値を省略することもできます。宣言の最後に 4 つのプロパティ値のうち 1 つが指定されていない場合、指定されていない側は反対側の値を取得します。 3 つの値を指定すると、2 番目の値が左側と右側の両方に使用されます。 2 つの値を指定すると、最初の値が上部と下部に使用されます。 1 つの値のみを指定した場合、その値は 4 つの方向すべてに使用されます。したがって、次の宣言はすべて同等です。

パディング: 1em 2em; 
パディング: 1em 2em 1em; 
パディング: 1em 2em 1em 2em;

次の宣言も同等です。

パディング: 1em; 
パディング: 1em 1em; 
パディング: 1em 1em 1em; 
パディング: 1em 1em 1em 1em;

多くの開発者にとって難しいのは、3 つの値を指定することです。この場合は、上、右、下の値を指定することに注意してください。左側の値が指定されていないため、右側の値と同じになります。 2 番目の値は左側と右側に適用されます。したがって、padding: 10px 15px 0 は、左余白と右余白を 15px、上余白を 10px、下余白を 0 に設定します。

ただし、ほとんどの場合、指定する必要がある値は 2 つだけです。特に小さい要素の場合は、左右のパディングを上下のパディングよりも大きくするのが最適です。このスタイルは、下の図に示すように、Web ページ上のボタンやナビゲーション リンクに非常に適しています。

.nav { 
  色: 白; 
  背景色: #13a4a4; 
  padding: 5px 15px; /* 上下のパディング、次に左右のパディング*/ 
  境界線の半径: 2px; 
  テキスト装飾: なし; 
}

ショートカット プロパティを使用して、最初に垂直方向にパディングを追加し、次に水平方向にパディングを追加します。

多くのプロパティがこれに従うので、覚えておくことをお勧めします。

2. 水平、垂直

「TRouBLe」式は、ボックスの 4 つの方向に個別に値を設定するプロパティにのみ適用されます。また、background-position、box-shadow、text-shadow など、最大 2 つの値のみの指定をサポートするプロパティもいくつかあります (厳密に言えば、これらはショートハンド プロパティではありません)。これらの属性値の順序は、パディングなどの 4 つの値を持つ属性の順序とまったく逆になります。たとえば、padding: 1em 2em は最初に垂直方向の上下のプロパティ値を指定し、次に水平方向の左右のプロパティ値を指定しますが、background-position: 25% 75% は最初に水平方向の左右のプロパティ値を指定し、次に垂直方向の上下のプロパティ値を指定します。

定義を逆の順序にするのは直感に反するように思えるかもしれませんが、その理由は簡単です。2 つの値は直交グリッドを表しているからです。デカルトグリッド測定は通常、x、y (水平、垂直) の順序になります。たとえば、図 1-15 に示すように、要素に影を追加するには、まず x (水平) 値を指定する必要があります。

.nav .featured{ 
  背景色: オレンジ; 
  box-shadow: 10px 2px #6f9090; /* 影は右に 10px、下に 2px オフセットされます */ 
}
<div class="nav"> 
  <a href="#">ホーム</a> 
  <a href="#">コーヒー</a> 
  ブルワーズ 
  <a href="#" class="featured">スペシャル</a> 
</div>

最初の (大きい) 値は水平オフセットを指定し、2 番目の (小さい) 値は垂直オフセットを指定します。

プロパティが 1 つのポイントから 2 つの方向に値を指定する必要がある場合は、「直交グリッド」を検討してください。プロパティが 4 方向の要素の値を指定する必要がある場合は、「時計」を考えます。

要約する

CSS のショートハンド プロパティにおける TRouBLe の順序に注意する (落とし穴を避けるため) という記事はこれで終わりです。CSS のショートハンド プロパティにおける TRouBLe の順序に注意する、というより関連性の高い内容については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  JavaScript クロージャの詳細

>>:  MySQL のテーブル内のレコード数を制限する方法

推薦する

Linux システムで grub.cfg ファイルの破損を修復する手順

目次1. grub.cfg ファイルの紹介1. grub.cfg ファイルの場所2. grub.cf...

Vue2.0+ElementUI+PageHelperで実装されたテーブルページング機能

序文最近、いくつかのフロントエンド プロジェクトに取り組んでおり、ページにいくつかのテーブルを表示す...

共有サイドバーを実装するためのネイティブJS

この記事では、ネイティブ JS で実装された共有サイドバーを紹介します。効果は次のとおりです。 以下...

SSH接続を介してXshellを使用したUbuntu 20.04で報告されたサービス問題の詳細な説明

1. 最近、Ubuntu の新しいバージョンをインストールしました。/etc/ssh/sshd_co...

CSS の flex と inline-flex の違いの詳細な説明

inline-flex は inline-block と同じです。内部要素用の display:fl...

Nginx ドメイン名の書き換えとワイルドカードドメイン名の解決を設定する方法

この記事では、ドメイン名の書き換えとワイルドカードドメイン名の解決を行うための Nginx の設定方...

jsはFileReaderを使用してローカルファイルまたはBLOBを読み取ります

目次FileReaderはローカルファイルまたはBLOBを読み取ります1. FileReaderの使...

MySQL の集計関数 count の使用法とパフォーマンスの最適化テクニック

この記事の環境はWindows 10、MySQLのバージョンは5.7.12-logです1. 基本的な...

Centos に MYSQL8.X をインストールするチュートリアル

MySQLのインストール(4、5、6は省略可能)ステートメント: CentOS のバージョンは 7....

IDEA で mysql8.0.3 と mybatis-generator を使用する際に発生するバグ

1. プラグインを追加し、pomファイルの下に次の設定を追加します。 <!-- mybatis...

ウェブデザインスキル:中国語と英語が混在するウェブページの上位表示の問題

<br />私はこの問題で気が狂いそうです。症状は次のとおりです。 症状の説明: Int...

mysql データ型変換の実装

1. 問題下図のような表があり、結果値がreference_high値より大きいデータを見つける必要...

MySQLのページング制限のパフォーマンス問題についての簡単な説明

MySQL ページング クエリは通常、制限を通じて実装されます。 limit は 1 つまたは 2 ...

jsはクリックしてカードを切り替える機能を実現します

この記事の例では、クリックしてカードを切り替える機能を実現するためのjsの具体的なコードを共有してい...

MySQLで置換関数を実装するためのいくつかの実用的なシナリオ

REPLACE構文REPLACE(String,from_str,to_str)つまり、String...