Heim  >  Artikel  >  Backend-Entwicklung  >  Der richtige Weg, CSS-Stile zu schreiben

Der richtige Weg, CSS-Stile zu schreiben

小云云
小云云Original
2018-03-30 10:36:045045Durchsuche

Dieser Artikel stellt Ihnen hauptsächlich CSS-Stil-Schreibspezifikationen vor, einschließlich Codierungseinstellungen, Namespace-Spezifikationen und andere Kenntnisse. Er ist sehr gut und hat Referenzwert. Ich hoffe, er kann jedem helfen.

Kodierungseinstellungen

verwendet UTF-8-Kodierung und wird im CSS-Code-Header verwendet:

@charset "utf-8";

Beachten Sie, dass @charset vor allen Zeichen in der CSS-Datei (einschließlich Codierungskommentaren) definiert werden muss, damit @charset wirksam wird.

Beispielsweise machen die folgenden Beispiele @charset ungültig:


/* 字符编码 */
@charset "utf-8";
html,
body {
  height: 100%;
}
@charset "utf-8";

Namespace-Spezifikation

•Layout: g ist der Namespace, zum Beispiel: .g-wrap, .g-header, .g-content.

•Zustand: Mit s als Namespace stellt er einen dynamischen und interaktiven Zustand dar, wie zum Beispiel: .s-current, s-selected.

• Tools: Mit u als Namespace stellt es wiederverwendbare Tools dar, die nicht mit der Geschäftslogik gekoppelt sind, wie z. B. u-clearfix und u-ellipsis.

•Komponente: m ist der Namespace, der wiederverwendbare und tragbare Komponentenmodule darstellt, wie zum Beispiel: m-slider, m-dropMenu.

•Hook: Mit j als Namespace stellt es einen Klassennamen dar, der für JavaScript-Aufrufe spezifisch ist, wie zum Beispiel: j-request, j-open.

Namespace-Denken

Anstatt BEM zu wählen, das bei der Benennung zu streng ist und Stilnamen zu lang und hässlich sind, haben wir ein A übernommen eher eine Kompromisslösung.

Es wird nicht empfohlen, den Unterstrich_ für die Verbindung zu verwenden

•Vorgänge speichern, bei der Eingabe eine Umschalttaste weniger drücken

•Kann die Benennung von JavaScript-Variablen gut unterscheiden

Zeichen sind Kleinbuchstaben

definiert Selektornamen, Attribute und Attributwerte in Kleinbuchstaben.

Selektoren

Wenn eine Regel mehrere Selektoren enthält, belegt jeder Selektor eine eigene Zeile.

, +, ~, > Lassen Sie auf jeder Seite des Selektors ein Leerzeichen.


.g-header > .g-header-des,
.g-content ~ .g-footer {
}

Der Name ist kurz und semantisch gut

Für die Benennung von Selektoren versuchen Sie es so prägnant wie möglich sein Und es ist semantisch, und es sollte keine semantisch mehrdeutigen Namen wie g-abc geben.

Regeldeklarationsblock

•Wenn im Regeldeklarationsblock mehrere Stildeklarationen vorhanden sind, belegt jeder Stil eine eigene Zeile.

• Fügen Sie vor der öffnenden Klammer { im Regeldeklarationsblock ein Leerzeichen ein.

•Fügen Sie nach dem Doppelpunkt ein Leerzeichen hinzu: im Stilattribut und kein Leerzeichen davor.

• Beenden Sie jeden Stil mit einem Semikolon ;.

•Die schließende Klammer } eines Regeldeklarationsblocks belegt eine eigene Zeile.

• Trennen Sie jede Regeldeklaration durch eine Leerzeile.

• Verwenden Sie einfache Anführungszeichen ‘ für alle äußersten Anführungszeichen.

•Wenn ein Attribut mehrere Attributwerte hat, trennen Sie die Attributwerte durch Kommas und fügen Sie nach jedem Komma ein Leerzeichen ein. Wenn ein einzelner Attributwert zu lang ist, belegt jeder Attributwert eine eigene Zeile.

Das vollständige Beispiel lautet wie folgt:


.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: '';
}

Wert und Einheit

• Wenn der Attributwert oder Farbparameter eine Zahl zwischen 0 und 1 ist, wird die 0 vor dem Dezimalpunkt weggelassen. Farbe: rgba(255, 255, 255, 0.5)Farbe: rgba(255, 255, 255, .5);

•Die Einheit wird weggelassen, wenn der Längenwert 0 ist. margin: 0px automargin: 0 auto

•Verwenden Sie Kleinbuchstaben und abgekürzte hexadezimale Farbattributwerte. Farbe: #ffcc00Farbe: #fc0

Reihenfolge der Stilattribute

Attribute unter einer einzigen Stilregel sollten beim Schreiben und Schreiben nach Funktion gruppiert werden in der Reihenfolge Positionierungsmodell > Typografisch > Visual, um die Lesbarkeit des Codes zu verbessern.

•Wenn das Inhaltsattribut enthalten ist, sollte es im Vordergrund platziert werden

•Positionierung Modelllayoutmodus, Position, zugehörige Attribute umfassen: Position / oben / rechts / unten / links /; z-index / display / float / …

•Box-Modell Box-Modell, zugehörige Attribute umfassen: Breite / Höhe / Polsterung / Rand / Rand / Überlauf / …

•Typografisches Textlayout, verwandt Zu den Attributen gehören: Schriftart / Zeilenhöhe / Textausrichtung / Zeilenumbruch / …

•Visuelle visuelle Erscheinung, zugehörige Eigenschaften umfassen: Farbe / Hintergrund / Listenstil / Transformation / Animation / Übergang / …

Die Positionierung steht an erster Stelle, da sie ein Element aus dem normalen Textfluss herausnehmen und Boxmodell-bezogene Stile überschreiben kann. Das Box-Modell folgt dicht dahinter, da es die Größe und Position einer Komponente bestimmt. Andere Eigenschaften funktionieren nur innerhalb der Komponente oder haben in den ersten beiden Fällen keinen Einfluss auf die Ergebnisse und kommen daher später.

Verwenden Sie Anführungszeichen angemessen

In einigen Stilen gibt es einige Schlüsselwörter, die Leerzeichen oder chinesische Schlüsselwörter enthalten.

Verwenden Sie Anführungszeichen innerhalb der Schriftfamilie

当字体名字中间有空格,中文名字体及 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)的规则,这么做是为了使样式规则能够更快地与渲染树上的节点匹配。

Das obige ist der detaillierte Inhalt vonDer richtige Weg, CSS-Stile zu schreiben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn