Maison  >  Article  >  développement back-end  >  La bonne façon d'écrire des styles CSS

La bonne façon d'écrire des styles CSS

小云云
小云云original
2018-03-30 10:36:045053parcourir

Cet article vous présente principalement les spécifications d'écriture de style CSS, y compris les paramètres de codage, les spécifications d'espace de noms et d'autres connaissances. Il est très bon et a une valeur de référence. Les amis qui en ont besoin peuvent s'y référer.

Paramètres d'encodage

utilise l'encodage UTF-8 et est utilisé dans l'en-tête du code CSS :

@charset "utf-8";

Notez que @charset doit être défini devant tous les caractères du fichier CSS (y compris les commentaires d'encodage) pour que @charset prenne effet.

Par exemple, les exemples suivants invalideront @charset :


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

Spécification de l'espace de noms

•Mise en page : g est l'espace de noms, par exemple : .g-wrap, .g-header, .g-content.

•State : avec s comme espace de noms, il représente un état dynamique et interactif, tel que : .s-current, s-selected.

• Outils : avec u comme espace de noms, il représente des outils réutilisables qui ne sont pas couplés à une logique métier, tels que u-clearfix et u-ellipsis.

•Component : m est l'espace de noms, représentant des modules de composants réutilisables et portables, tels que : m-slider, m-dropMenu.

•Hook : Avec j comme espace de noms, il représente le nom de classe spécifique aux appels JavaScript, tels que : j-request, j-open.

Pensée sur l'espace de noms

Au lieu de choisir BEM, qui est trop strict en matière de dénomination et dont les noms de style sont trop longs et laids, nous avons adopté un A solution plus de compromis.

Il n'est pas recommandé d'utiliser le trait de soulignement_ pour la connexion

•Enregistrez les opérations, appuyez sur une touche Maj de moins lors de la saisie

•Peut bien distinguer le nom des variables JavaScript

Les caractères sont en minuscules

définit les noms des sélecteurs, les attributs et les valeurs d'attribut en minuscules.

Sélecteurs

Lorsqu'une règle contient plusieurs sélecteurs, chaque sélecteur occupe sa propre ligne.

, +, ~, > Laissez un espace de chaque côté du sélecteur.


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

Le nom est court et sémantiquement bon

Pour la dénomination des sélecteurs, essayez être aussi concis que possible. Et c'est sémantique, et il ne devrait pas y avoir de noms sémantiquement ambigus comme g-abc.

Bloc de déclaration de règle

•Lorsqu'il y a plusieurs déclarations de style dans le bloc de déclaration de règle, chaque style occupe sa propre ligne.

• Ajoutez un espace avant l'accolade ouvrante { dans le bloc de déclaration de règle.

•Ajouter un espace après les deux points : dans l'attribut style et aucun espace avant.

• Terminez chaque style par un point-virgule ;.

•L'accolade fermante } d'un bloc de déclaration de règle occupe sa propre ligne.

• Séparez chaque déclaration de règle par une ligne vide.

• Utilisez des guillemets simples ‘ pour toutes les guillemets les plus à l’extérieur.

•Lorsqu'un attribut a plusieurs valeurs d'attribut, séparez les valeurs d'attribut par des virgules et ajoutez un espace après chaque virgule. Lorsqu'une seule valeur d'attribut est trop longue, chaque valeur d'attribut occupe sa propre ligne.

L'exemple complet est le suivant :


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

Valeur et unité

• Lorsque la valeur de l'attribut ou le paramètre de couleur est un nombre compris entre 0 et 1, le 0 avant le point décimal est omis. color: rgba(255, 255, 255, 0.5)color: rgba(255, 255, 255, .5);

•L'unité est omise lorsque la valeur de longueur est 0. margin: 0px automargin: 0 auto

•Utilisez autant que possible les valeurs d'attribut de couleur hexadécimales minuscules et abrégées. color: #ffcc00color: #fc0

Ordre des attributs de style

Les attributs sous une seule règle de style doivent être regroupés par fonction lors de l'écriture et écrire. dans l'ordre Modèle de positionnement > Modèle de boîte > Typographique > Visuel pour améliorer la lisibilité du code.

•Si l'attribut de contenu est inclus, il doit être placé à l'avant

•Le mode de mise en page du modèle de positionnement, la position, les attributs associés incluent : position / haut / droite / bas / gauche / z-index / display / float / …

•Box Model modèle de boîte, les attributs associés incluent : largeur / hauteur / remplissage / marge / bordure / débordement / …

•Mise en page du texte typographique, associée les attributs incluent : police / hauteur de ligne / alignement du texte / retour à la ligne / …

•L'apparence visuelle, les propriétés associées incluent : couleur / arrière-plan / style de liste / transformation / animation / transition / …

Le positionnement vient en premier car il peut retirer un élément du flux de texte normal et remplacer les styles liés au modèle de boîte. Le modèle de boîte suit de près, car il détermine la taille et la position d'un composant. D'autres propriétés ne fonctionnent qu'à l'intérieur du composant ou n'ont aucun effet sur les résultats des deux premiers cas, elles arrivent donc plus tard.

Utilisez les guillemets de manière appropriée

Dans certains styles, certains mots-clés contiennent des espaces ou des mots-clés chinois.

Utilisez des guillemets dans la famille de polices

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn