CSS スタイルの正しい書き方

Mar 30, 2018 am 10:36 AM
css 方法

この記事は、コーディング設定、名前空間の仕様、その他の知識を含む、CSS スタイルの記述仕様を主に紹介するもので、必要な方は参考にしていただければ幸いです。

エンコーディング設定

CSS コードヘッダーで使用される UTF-8 エンコーディングを使用する:

@charset "utf-8";

@charset は CSS ファイル内のすべての文字 (エンコーディング コメントを含む) の前に定義する必要があることに注意してください。効果。

たとえば、次の例では @charset が無効になります:


/* 字符编码 */
@charset "utf-8";
html,
body {
  height: 100%;
}
@charset "utf-8";
ログイン後にコピー

名前空間の指定

•レイアウト: g を名前空間として使用します。例: .g-wrap、.g-header、。 gコンテンツ。

•状態: 名前空間として s を使用すると、.s-current、s-selected などの動的で対話的な状態を表します。

•ツール: 名前空間として u を使用すると、u-clearfix や u-ellipsis など、ビジネス ロジックと結合されていない再利用可能なツールを表します。

•コンポーネント: 名前空間として m を使用すると、m-slider、m-dropMenu など、再利用可能で移植可能なコンポーネント モジュールを表します。

•フック: j を名前空間として使用し、j-request、j-open などの JavaScript 呼び出しに固有のクラス名を表します。

名前空間の考え方

厳しすぎる命名ルールと長すぎて醜いスタイル名を持つ BEM を選択する代わりに、私たちはより妥協的なソリューションを採用しました。

接続に underscore_ を使用することはお勧めしません

•操作を保存し、入力するときに Shift キーを 1 つ減らしてください

•JavaScript 変数の名前をよく区別できます

文字の小文字

定義されたセレクター名、属性、および属性値は小文字で書かれます。

セレクター

ルールに複数のセレクターが含まれる場合、各セレクターは独自の行を占有します。

、+、~、> セレクターの両側にスペースを残します。


.g-header > .g-header-des,
.g-content ~ .g-footer {
}
ログイン後にコピー

名前は短くて意味的に適切である必要があります

セレクターの名前については、簡潔かつ意味的にするようにしてください。g-abc のような意味的に曖昧な名前は使用できません。

ルール宣言ブロック

•ルール宣言ブロックに複数のスタイル宣言がある場合、各スタイルは独自の行を占有します。

•ルール宣言ブロックの左中括弧 { の前にスペースを追加します。

•style 属性のコロン : の後にスペースを追加し、その前にスペースを追加しないでください。

•各スタイルはセミコロン ; で終了します。

•ルール宣言ブロックの右中括弧 } は、独自の行を占めます。

• 各ルール宣言は空行で区切ります。

•すべての最も外側の引用符には一重引用符 ‘ を使用してください。

•属性に複数の属性値がある場合は、属性値をカンマで区切って、各カンマの後にスペースを追加します。単一の属性値が長すぎる場合、各属性値が独自の行を占有します。

完全な例は次のとおりです:


.g-footer,
.g-header {
  position: relative;
}
.g-content {
  background:
    linear-gradient(135deg, deeppink 25%, transparent 25%) -50px 0,
    linear-gradient(225deg, deeppink 25%, transparent 25%) -50px 0,
    linear-gradient(315deg, deeppink 25%, transparent 25%),
    linear-gradient(45deg, deeppink 25%, transparent 25%);
  }
.g-content::before {
  content: '';
}
ログイン後にコピー

値と単位

•属性値または色のパラメータが0〜1の数値の場合、小数点の前の0を省略します。 color: rgba(255, 255, 255, 0.5)color: rgba(255, 255, 255, .5);

•長さの値が0の場合、単位は省略されます。 margin: 0px automargin: 0 auto

•可能な限り小文字および省略された 16 進数のカラー属性値を使用してください。 color: #ffcc00color: #fc0

スタイル属性の順序

記述するときは、単一​​のスタイル ルールに基づく属性を、ポジショニング モデル > タイポグラフィック > ビジュアルの順にグループ化する必要があります。コードの可読性を向上させるために記述する。

•content 属性が含まれる場合は、前面に配置する必要があります。

•配置モデルのレイアウト モード、位置、関連する属性には、position / top / right /bottom / left / z-index / display / float / が含まれます。 …

• Box Model ボックス モデル、関連プロパティには、幅 / 高さ / パディング / マージン / ボーダー / オーバーフロー / …

• 活版印刷のテキスト レイアウト、関連プロパティには次のものがあります: font / line-height / text-align / word-wrap / …

•視覚的な外観、関連プロパティには次のものが含まれます: カラー / 背景 / リストスタイル / 変換 / アニメーション / トランジション / …

要素を通常のテキスト フローから切り離すことができるため、まず配置が重要です。ボックス モデル関連のスタイルをオーバーライドします。ボックス モデルは、コンポーネントのサイズと位置を決定するため、そのすぐ後に続きます。他のプロパティはコンポーネント内でのみ機能するか、最初の 2 つのケースの結果に影響を与えないため、後から使用されます。

合理的に引用符を使用してください

一部のスタイルでは、スペースまたは中国語のキーワードを含むキーワードがいくつかあります。

フォントファミリー内では引用符を使用してください

当字体名字中间有空格,中文名字体及 Unicode 字符编码表示的中文字体,为了保证兼容性,都建议在字体两端添加单引号或者双引号:


body {
  font-family: 'Microsoft YaHei', '黑体-简', '\5b8b\4f53';
}
ログイン後にコピー

background-image 的 url 内使用引号

如果路径里面有空格,旧版 IE 是无法识别的,会导致路径失效,建议不管是否存在空格,都添加上单引号或者双引号:


p {
  background-image: url('...');
}
ログイン後にコピー

避免使用 !important

除去某些极特殊的情况,尽量不要不要使用 !important。

!important 的存在会给后期维护以及多人协作带来噩梦般的影响。

当存在样式覆盖层叠时,如果你发现新定义的一个样式无法覆盖一个旧的样式,只有加上 !important 才能生效时,是因为你新定义的选择器的优先级不够旧样式选择器的优先级高。所以,合理的书写新样式选择器,是完全可以规避一些看似需要使用 !important 的情况的。

代码注释

单行注释

星号与内容之间必须保留一个空格。

/* 表格隔行变色 */

多行注释

星号要一列对齐,星号与内容之间必须保留一个空格。


/** * Sometimes you need to include optional context for the entire component. Do that up here if it's important enough. */
ログイン後にコピー

规则声明块内注释

使用 // 注释,// 后面加上一个空格,注释独立一行。


.g-footer {     border: 0;     // .... }
ログイン後にコピー

文件注释

文件顶部必须包含文件注释,用 @name 标识文件说明。星号要一列对齐,星号与内容之间必须保留一个空格,标识符冒号与内容之间必须保留一个空格。

/** * @name: 文件名或模块名 * @description: 文件或模块描述 * @author: author-name(mail-name@domain.com) * author-name2(mail-name2@domain.com) * @update: 2015-04-29 00:02 */

•@description为文件或模块描述。 •@update为可选项,建议每次改动都更新一下。

当该业务项目主要由固定的一个或多个人负责时,需要添加@author标识,一方面是尊重劳动成果,另一方面方便在需要时快速定位责任人。

SASS 使用建议

嵌套层级规定

使用 SASS 、 LESS 等预处理器时,建议嵌套层级不超过 3 层。

组件/公用类的使用方法

组件/公用类使用 %placeholders 定义,使用 @extend 引用。如:


%clearfix {   overflow: auto;   zoom: 1; } .g-header {   @extend %clearfix; }
ログイン後にコピー

组件类的思考

使用 SASS ,经常会预先定义好一些常用公用组件类,譬如清除浮动,水平垂直居中,文字 ellipsis。又或者多个元素具有同样的样式,我们希望能够少写这部分代码,公共部分抽离出来只写一次,达到复用。

但是复用的方式在 SASS 中有多种,那么是使用单独使用一个类定义,给需要的标签添加,还是使用 @include 或者 @extend在定义的类中引入一个 @mixin,或者一个 @function 呢?

基于让 CSS 更简洁以及代码的复用考虑,采用上面的使用 %placeholders 定义,使用 @extend 引用的方案。

•%placeholders,只是一个占位符,只要不通过 @extend 调用,编译后不会产生任何代码量

•使用 @extend 引用,则是因为每次调用相同的 %placeholders 时,编译出来相同的 CSS 样式会进行合并(反之,如果使用 @include 调用定义好的 @mixin,编译出来相同的 CSS 样式不会进行合并)

•这里的组件类特指那些不会动态改变的 CSS 样式,注意与那些可以通过传参生成不同数值样式的 @mixin 方法进行区分

尽量避免使用标签名

使用 SASS ,或者说在 CSS 里也有这种困惑。

假设我们有如下 html 结构:


<span>   <p class="g-content">     <ul class="g-content-list"><li class="item"/>         <li class="item"/>         <li class="item"/>         <li class="item"/>     </ul></p> </span>
ログイン後にコピー

在给最里层的标签命名书写样式的时候,我们有两种选择:


.g-content {   .g-content-list {     li {       ...     }   } }
ログイン後にコピー

或者是


.g-content {   .g-content-list {     .item {       ...     }   } }
ログイン後にコピー

也就是,编译之后生成了下面这两个,到底使用哪个好呢?

•.g-content .g-content-list li { }

•.g-content .g-content-list .item { }

基于 CSS 选择器的解析规则(从右向左),建议使用上述第二种 .g-content .g-content-list .item { } ,避免使用通用标签名作为选择器的一环可以提高 CSS 匹配性能。

浏览器的排版引擎解析 CSS 是基于从右向左(right-to-left)的规则,这么做是为了使样式规则能够更快地与渲染树上的节点匹配。

以上がCSS スタイルの正しい書き方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Vue におけるプレースホルダーの意味 Vue におけるプレースホルダーの意味 May 07, 2024 am 09:57 AM

Vue.js では、placeholder 属性は、input 要素のプレースホルダー テキストを指定します。これは、ユーザーがコンテンツを入力していないときに表示され、入力のヒントや例を提供し、フォームのアクセシビリティを向上させます。その使用方法は、input 要素にプレースホルダー属性を設定し、CSS を使用して外観をカスタマイズすることです。ベスト プラクティスには、入力に関連すること、短く明確にすること、デフォルトのテキストを避けること、アクセシビリティを考慮することが含まれます。

jsでのスパンの意味は何ですか jsでのスパンの意味は何ですか May 06, 2024 am 11:42 AM

スパン タグは、テキストにスタイル、属性、または動作を追加できます。 色やフォント サイズなどのスタイルを追加するために使用されます。 idやclassなどの属性を設定します。クリック、ホバーなどの関連する動作。さらに処理または引用するためにテキストにマークを付けます。

jsでレムは何を意味しますか jsでレムは何を意味しますか May 06, 2024 am 11:30 AM

CSS の REM は、ルート要素 (html) のフォント サイズに対する相対単位です。次の特性があります: ルート要素のフォント サイズに相対し、親要素の影響を受けません。ルート要素のフォント サイズが変更されると、REM を使用する要素もそれに応じて調整されます。任意の CSS プロパティとともに使用できます。 REM を使用する利点は次のとおりです。 応答性: さまざまなデバイスや画面サイズでもテキストを読みやすい状態に保ちます。一貫性: Web サイト全体でフォント サイズが一貫していることを確認します。スケーラビリティ: ルート要素のフォント サイズを調整することで、グローバル フォント サイズを簡単に変更できます。

vueに画像を導入する方法 vueに画像を導入する方法 May 02, 2024 pm 10:48 PM

Vue に画像を導入するには、URL、require 関数、静的ファイル、v-bind ディレクティブ、CSS 背景画像の 5 つの方法があります。動的画像は Vue の計算プロパティまたはリスナーで処理でき、バンドルされたツールを使用して画像の読み込みを最適化できます。パスが正しいことを確認してください。そうでないと、読み込みエラーが表示されます。

jsのノードとは何ですか jsのノードとは何ですか May 07, 2024 pm 09:06 PM

ノードは、HTML 要素を表す JavaScript DOM 内のエンティティです。これらはページ内の特定の要素を表し、その要素にアクセスして操作するために使用できます。一般的なノード タイプには、要素ノード、テキスト ノード、コメント ノード、ドキュメント ノードなどがあります。 getElementById() などの DOM メソッドを通じて、ノードにアクセスし、プロパティの変更、子ノードの追加/削除、ノードの挿入/置換、ノードのクローン作成などの操作を行うことができます。ノードトラバーサルは、DOM 構造内を移動するのに役立ちます。ノードは、ページ コンテンツ、イベント処理、アニメーション、およびデータ バインディングを動的に作成するのに役立ちます。

ブラウザのプラグインは何語で書かれていますか? ブラウザのプラグインは何語で書かれていますか? May 08, 2024 pm 09:36 PM

ブラウザ プラグインは通常、次の言語で作成されます。 フロントエンド言語: JavaScript、HTML、CSS バックエンド言語: C++、Rust、WebAssembly その他の言語: Python、Java

vscodeで不明な属性を設定する方法 vscodeで不明な属性を設定する方法 vscodeで不明な属性を設定する方法 vscodeで不明な属性を設定する方法 May 09, 2024 pm 02:43 PM

1. まず、左下隅にある設定アイコンを開き、設定オプションをクリックします。 2. 次に、ジャンプしたウィンドウで CSS 列を見つけます。 3. 最後に、不明なプロパティ メニューのドロップダウン オプションをエラー ボタンに変更します。 。

Vueのrefとidは何をするのでしょうか? Vueのrefとidは何をするのでしょうか? May 02, 2024 pm 08:42 PM

Vue.js では、JavaScript で ref を使用して DOM 要素 (サブコンポーネントおよび DOM 要素自体にアクセス可能) を参照し、id を使用して HTML id 属性を設定します (CSS スタイル、HTML マークアップ、および JavaScript ルックアップに使用できます) )。

See all articles