Maison >interface Web >tutoriel CSS >Résumé des méthodes d'optimisation et d'amélioration des performances en CSS
L'optimisation CSS se concentre principalement sur quatre aspects :
Performances de chargement
Il existe trop de bonnes pratiques liées à cet aspect. Il suffit de chercher sur Internet et vous en trouverez beaucoup. d'informations. Par exemple, n'utilisez pas l'importation, la compression, etc., principalement pour réduire la taille du fichier, réduire le chargement bloqué et améliorer la concurrence. Aucune astuce ne peut échapper à ces instructions générales.
Performances du sélecteur
Mais l'impact du sélecteur sur les performances globales est négligeable, sélecteur
L'inspection porte davantage sur la standardisation, la maintenabilité et la robustesse. Peu de gens se concentreront sur les performances du sélecteur dans le travail réel, mais comme mentionné dans ce partage GitHub, il vaut mieux savoir que ne pas savoir.
Performances de rendu
Les performances de rendu sont la préoccupation la plus importante pour l'optimisation CSS. Le rendu des pages est trop compliqué ? Voir si text-shadow est largement utilisé ? Avez-vous activé l'anticrénelage des polices ? Comment l’animation CSS est-elle implémentée ? L’accélération GPU est-elle correctement utilisée ? Qu'avez-vous utilisé le modèle de boîte flexible ? Avez-vous testé l'impact du changement de stratégie de mise en page sur les performances de rendu ? Si vous recherchez des performances de rendu CSS ou des performances d'animation CSS à cet égard, vous trouverez de nombreuses informations à titre de référence.
Maintenabilité et robustesse
La dénomination est-elle raisonnable ? La conception de la hiérarchie structurelle est-elle suffisamment robuste ? Les styles sont-ils réutilisés de manière abstraite ? Un CSS élégant affectera non seulement les coûts de maintenance ultérieurs, mais affectera également les performances de chargement et d'autres aspects. À cet égard, vous pouvez trouver plus d'informations sur l'OOCSS (non pas que vous devez utiliser l'OOCSS, mais que vous devriez en savoir plus) et d'autres stratégies CSS, et apprendre des forces de chacun.
NO2
[Le chemin vers la reconstruction et l'optimisation du code CSS]
Les étudiants qui écrivent du CSS se rendent souvent compte que, comme l'échelle du projet augmente, il y aura de plus en plus de codes CSS dans le projet. Si le code CSS n'est pas maintenu à temps, le nombre de codes CSS continuera d'augmenter. Le code CSS est entrelacé et complexe, comme une immense toile d'araignée distribuée à différents endroits du site Web. Vous ne savez pas quel impact aura la modification de cette ligne de code, donc si des modifications ou de nouvelles fonctionnalités sont ajoutées, les développeurs n'osent souvent pas le supprimer. l'ancien. L'inconvénient ultime du code redondant et de l'ajout de nouveau code en toute sécurité est qu'il y aura de plus en plus de CSS dans le projet, et il finira par tomber dans un gouffre sans fond.
Le but de la reconstruction du code CSS
Lorsque nous écrivons du code CSS, nous devons non seulement compléter l'effet de la conception de la page, mais également rendre le code CSS facile à gérer et maintenir. Nous avons deux objectifs principaux pour refactoriser le code CSS :
1. Améliorer les performances du code
2. Améliorer la maintenabilité du code
Améliorer les performances du code
Il y a deux points principaux pour améliorer les performances du code CSS :
1. Améliorer les performances de chargement de la page
Pour améliorer les performances de chargement de la page, en termes simples, réduisez la taille du fichier CSS, améliorez la vitesse de chargement de la page et utilisez le cache http autant que possible
2. Améliorez les performances du code CSS
Différents codes CSS ont des vitesses d'analyse différentes selon les navigateurs .Comment améliorer la vitesse d'analyse du code CSS du navigateur est également ce que nous devons considérer
Améliorer la maintenabilité du code
Améliorer la maintenabilité du code CSS est principalement. reflété dans les aspects suivants Points :
1. Réutilisabilité
De manière générale, le style de conception global d'un projet est cohérent. Il doit y avoir plusieurs modules avec des styles identiques mais légèrement différents dans la page. . Comment utiliser Réutiliser autant de code CSS que possible et ajouter le moins de nouveau code possible est un point très important dans le code CSS. Si la réutilisabilité du code CSS est élevée, nous n'aurons peut-être besoin que d'écrire à des endroits différents, ce qui sera d'une grande aide pour les performances et la maintenabilité des pages, et pour améliorer l'efficacité du développement.
2. Évolutivité
Si une certaine fonctionnalité est ajoutée au produit, nous devons nous assurer que le code CSS nouvellement ajouté n'affectera pas l'ancien code CSS et les anciennes pages, et en ajouter le moins possible nouveau code et réutiliser l’ancien code.
3. Modifiabilité
Si le chef de produit d'un module estime qu'il doit modifier le style ou le supprimer, si le code CSS correspondant n'est pas prévu, après un certain temps, le développement Le personnel peut ne pas se souvenir du nombre d'endroits où ce code fonctionne et n'ose pas le modifier ou le supprimer. Si cela continue, il y aura de plus en plus de codes CSS, affectant les performances de la page et augmentant la complexité du code.
Méthodes de base pour la reconstruction du code CSS
J'ai déjà mentionné l'objectif de la reconstruction du code CSS, parlons maintenant de quelques méthodes de base pour atteindre ces objectifs. Ce sont des méthodes faciles à comprendre et à mettre en œuvre, et tout le monde peut les utiliser sans le savoir.
Méthodes pour améliorer les performances CSS
Parlons d'abord de la façon d'améliorer les performances CSS En fonction des performances de chargement des pages et des performances du code CSS, le résumé principal est le suivant. :
1. Essayez d'écrire le style dans un fichier CSS séparé et référencez-le dans l'élément head
Parfois, pour plus de commodité ou pour obtenir rapidement la fonction, nous pouvons écrire le style directement dans le balise de style de la page Ou directement en ligne sur l'élément. Bien que cela soit simple et pratique, cela est très préjudiciable à la maintenance future. Il y a plusieurs avantages à écrire le code dans un fichier CSS séparé :
(1)Séparation du contenu et du style, facile à gérer et à entretenir
(2)Réduire la taille de la page
(3)Les fichiers CSS peuvent être mis en cache et réutilisés, réduisant ainsi les coûts de maintenance
2. N'utilisez pas @import
Cette méthode est déjà bien connue Voici une brève mention, @import affecte la vitesse de chargement des fichiers CSS
3. Évitez d'utiliser. sélecteurs complexes. Moins il y a de niveaux, mieux c'est
Parfois, le projet comporte de plus en plus de modules et les fonctions deviennent de plus en plus complexes. Le sélecteur CSS que nous écrivons aura plusieurs couches à l'intérieur et deviendra de plus en plus complexe.
Il est recommandé que l'imbrication des sélecteurs ne dépasse pas trois niveaux, par exemple :
.header .logo .text{}
Il peut être optimisé en
.haeder .logo-text{}
A Le sélecteur concis n'est pas seulement Il peut réduire la taille des fichiers CSS, améliorer les performances de chargement des pages, rendre l'analyse du navigateur plus efficace, améliorer l'efficacité du développement des développeurs et réduire les coûts de maintenance.
4. Rationalisez les fichiers de style de la page et supprimez les styles inutilisés
Plusieurs fois, nous fusionnons tous les fichiers de style en un seul fichier, mais il y a un problème : le CSS de nombreuses autres pages Ils sont référencés dans la page actuelle en même temps, mais la page actuelle ne les utilise pas. Cette situation entraînera deux problèmes :
(1) Le fichier de style est trop volumineux, affectant la vitesse de chargement
(2) ) Le navigateur effectuera une correspondance de style redondante, affectant le temps de rendu. La bonne méthode consiste à fusionner les fichiers CSS utilisés par la page actuelle en fonction du CSS requis par la page actuelle. PS : La fusion en un seul fichier présente un avantage : le fichier de style sera mis en cache par le navigateur et vous n'avez pas besoin de télécharger le fichier de style lorsque vous entrez dans d'autres pages. Cette règle doit être traitée différemment selon le scénario. S'il s'agit d'un projet volumineux, il doit être fusionné dans des fichiers de styles différents. S'il s'agit d'un projet simple, il est recommandé de le fusionner en un seul fichier. Si l'échelle du projet ne peut pas être confirmée, il est recommandé de le séparer en différents fichiers de style, qu'il sera plus pratique de fusionner à l'avenir. 5. Utilisez l'héritage CSS pour réduire la quantité de code Nous savons que certains codes CSS peuvent être hérités Si l'élément parent a défini le style, l'élément enfant n'a pas besoin de le définir. le style. C’est également un moyen éprouvé d’améliorer les performances. Propriétés héritables communes telles que : couleur, taille de police, famille de polices, etc. Propriétés non héritables telles que : position , display, float, etc.Méthodes pour améliorer la maintenabilité
Améliorer la maintenabilité du code CSS, en termes simples, il s'agit de le rendre facile à comprendre pour les développeurs Le code CSS et faciliter sa modification ne détruira pas la fonction d'origine. Parlons de quelques méthodes courantes. 1. Nommage et remarques Le nommage est la première étape pour améliorer la lisibilité du code, et c'est aussi une étape extrêmement importante. Beaucoup de gens ont cette expérience : nommer est l'une des choses les plus gênantes pour les programmeurs lors de l'écriture de code. Surtout pour les développeurs dont la langue maternelle n'est pas l'anglais, il n'est pas facile de trouver un nom approprié. Pour améliorer vos compétences en matière de dénomination, vous pouvez consulter le code d'autres personnes. Voici quelques suggestions de noms en CSS : En-tête : en-tête Contenu : content/container Pied de page : pied de page Navigation : nav Barre latérale : barre latérale Colonne : colonne Contrôle périphérique de la page Largeur globale de la mise en page : wrapper Centre gauche et droit : centre gauche droit Barre de connexion : barre de connexion Logo : logo Publicité : bannière Corps de la page : principale Hotspot : chaud Actualités : actualités Téléchargement : téléchargerSous-navigation : subnavMenu : menuSous-menu : sous-menuRecherche : rechercherLiens amicaux : lien ami Pied de page : pied de page Copyright : copyright Défilement : défilement Contenu : contenu Balises : tags Liste des articles : liste Message d'invite : msg Conseils : conseils Titre de la colonne : titre Rejoindre : joins Guide : guide Service : service Inscription : regsiter Statut : statut Vote : vote
Partenaires : partenaire Navigation : nav Navigation principale : mainnav Sous-navigation : subnav Navigation supérieure : topnav Navigation latérale : barre latérale Navigation gauche : barre latérale gauche Navigation droite : barre latérale droite Menu : menu Sous-menu : sous-menu Titre : titreRésumé : résumé 2. Extraire les styles répétés Cette méthode est facile à comprendre En termes simples, il s'agit d'extraire le même style dans une classe séparée puis. En citant, cela réduit non seulement la taille du fichier CSS, mais réduit également le code CSS, ce qui facilite sa réutilisation et sa maintenance. Par exemple, l'exemple suivant : Le code original est comme ceci :
.about-title{ margin: 0 auto 6rem; color: #333; text-align: center; letter-spacing: 4px; font-size: 2rem; } .achieve-title{ margin: 0 auto 6rem; color: #fff; text-align: center; letter-spacing: 4px; font-size: 2rem; }La différence entre ces deux styles réside dans les différentes couleurs de texte. Nous pouvons extraire leurs styles communs puis définir. leurs différents styles respectivement
.column-title{ margin: 0 auto 6rem; text-align: center; letter-spacing: 4px; font-size: 2rem; } .about{ color: #333; } .achieve{ color:#fff; }
提取公用的部分,然后在页面上分别引用column-title和about等,这样代码更简洁,维护起来也更方便了。这个例子非常简单,实际上项目中可能有更复杂的情况,总之就要要尽可能的DRY,尽可能的提取重复的东西。
3、书写顺序
这个书写顺序指的是各个样式的书写顺序,下面是推荐的CSS书写顺序
(1)位置属性(position, top, right, z-index, display, float等)
(2)大小(width, height, padding, margin)
(3)文字系列(font, line-height, letter-spacing, color- text-align等)
(4)背景(background, border等)
(5)其他(animation, transition等)
书写顺序不一定非得按照上面的推荐来进行,而是根据你自己的习惯,但是最好能保证前后的习惯一致的,或者团队应该有一个共同的代码规范去遵守,这样后期维护起来也会方便许多。
以上是我个人总结的一些简单的写好和重构CSS代码的方法,大家当然不必拘泥于此,有不同的意见和建议欢迎进行交流!
CSS方法论
什么是CSS方法论呢?简单地说就是一些同行为了提高CSS可维护性、提出的一些编写CSS代码的规范和方法。他们提出了一些概念,这些概念可能听起来很高大上,但是实际你平时可能不知不觉也会用到这些所谓的CSS方法论。下面我简单地介绍下几个比较常见的CSS方法论。
OOCSS
OOCSS是(Object Oriented CSS),顾名思义就是面向对象的CSS。
OOCSS主要有两个原则:
1、结构和样式分离
我们平时一定遇到过这种情况,比如一个页面存在着多个不同功能的按钮,这些按钮的形状大小都差不多,但是根据不同的功能会有不同的颜色或背景来加以区分。如果不进行结构和样式分离,我们的CSS代码可能是这样的
.btn-primary{ width:100px; height:50px; padding:5px 3px; background:#ccc; color:#000; } .btn-delete{ width:100px; height:50px; padding:5px 3px; background:red; color:#fff; }
这两个或者可能更多的按钮拥有一些不同的样式,但是它们同时拥有相同的大小样式等,我们将其抽象的部分提取出来,结果如下:
.btn{ width:100px; height:50px; padding:5px 3px; } .primary{ background:red; color:#fff; } .delete{ background:red; color:#fff; }
这样提取公用的样式出来,然后按钮同时引用btn和primary等。这种做法除了减少重复的代码精简CSS之外,还有一个好处是复用性,如果需要增加其他额外的按钮,只需要编写不同的样式,和btn配合使用即可。
(2)容器和内容分离
我们平时写代码一定写过这样代码
.content h3{ font-size:20px; color:#333; }
这样的代码就是内容依赖于容器,没有分离的代码,也就是说h3的样式依赖于.content容器,如果其他地方要用到相同的样式,但是它的容器却不是.content,那你可能就是要再写一遍.something h3。
所以OOCSS推荐分离容器和内容,可以修改成:
.title{ font-size:20px; color:#333; }
关于这一点,我个人建议要分情况来看,像前面这个例子,它适合样式和容器分离。但是比如下面这种情况:
.menu li{ font-size:12px; }
这种ul,li列表的样式,我觉的就按照我们原先的做法就可以,不一定非得给一个类给li来设定样式,即
.menu-item{ font-size:12px; }
这样页面的li标签需要引用menu-item类。
当然采用哪一种方式更好我也不却确定,我自己比较喜欢.menu li的写法,大家自行思考。
这就是OOCSS的两个基本原则,这里只是简单介绍OOCSS,各位如果有兴趣的话请自行Google查找相关资料。
SMACSS
SMACSS是什么呢,它的全称是Scalable and Modular Architecture forCSS。简单说就是可扩展和模块化的CSS架构。
SMACSS将样式分成5种类型:Base,Layout,Module,State,Theme,我们简单来说说每一种类型分别指什么。
1、Base
基础样式表,定义了基本的样式,我们平时写CSS比如reset.css就是属于基础样式表,另外我认为清除浮动,一些动画也可以归类为基础样式。
2、Layout
布局样式,用于实现网页的基本布局,搭起整个网页的基本骨架。
3、Module
网页中不同的区域有这个不同的功能,这些功能是相对独立的,我们可以称其为模块。模块是独立的,可重用的组件,它们不依赖于布局组件,可以安全的删除修改而不影响其他模块。
4、State
状态样式,通常和js一起配合使用,表示某个组件或功能不同的状态,比如菜单选中状态,按钮不可用状态等。
关于状态样式,我个人觉得要分情况进行讨论:
(1)不同组件的同一状态的样式是一样的,比如头部的导航菜单的选中状态样式和侧栏的菜单选中状态样式是一样的,我认为这部分状态样式可以归类为State
(2)不同组件的统一状态的样式是不一样的,即两个地方的菜单虽然都是选中状态,但是他们却又不同的选中样式,这部分样式不应该被认为是State类型,而是应该放在其组件对应的Module中。
5、Theme
皮肤样式,对于可更换皮肤的站点来说,这个是很有必要的,分离了结构和皮肤,根据不同的皮肤应用不同的样式文件。
BEM
BEM是Block,Element,Modifier的缩写。下面分别来介绍一下这三个概念:
(1)Block:在BEM的理论中,一个网页是由block组成的,比如头部是个block,内容是block,logo也是block,一个block可能由几个子block组成。
(2)Element:element是block的一部分,具有某种功能,element依赖于block,比如在logo中,img是logo的一个element,在菜单中,菜单项是菜单的一个element
(3)Modifier:modifier是用来修饰block或者element的,它表示block或者element在外观或行为上的改变
我们通过BEM命名法写样式如下:
.block{} .block-element{} .block-modifier{} .block-element-modifier{}
BEM将页面解析为block和element,然后根据不同的状态使用modifier来设置样式。
我对BEM的思想理解可能不到位,对BEM的看法主要是由两点:
(1)页面CSS模块化,每个block就是一个模块,模块间相互独立
(2)多级的class命名,避免选择器的嵌套结构
关于CSS方法论
上面提到的这些CSS方法论,大家看了就会发现,它们其实有很多思想是相同的,比如:
1、选择器的嵌套的优化
2、CSS代码模块化
3、抽象CSS代码
…
这些方法论,我们学习的时候,最重要的是去理解其思想,不一定非得照搬它的实现形式,多种方法结合使用。
总结
谈了这么多,下面来说说我自己总结的写CSS代码的一些关键点。
1、写代码之前:从PSD文件出发
当我们拿到设计师给的PSD时,首先不要急于写CSS代码,首先对整个页面进行分析,主要关注点是下面几个:
(1)页面分成了几个模块,哪些模块是公用的,常见的比如头部和底部,还有一些菜单栏等等
(2)分析每一个模块都有什么样式,提取出公用的样式,注意公用样式是全局公用(整个页面公用)还是局部公用(模块内公用),公用样式包括公用的状态样式,比如公用的选中状态,禁用状态等等。
2、开始写代码
根据对PSD文件的分析,我们就可以开始着手写代码,我比较推荐SMACSS将样式分成不同类型的做法:
(1)第一步是搭好页面的骨架,也就是base样式,layout样式。
(2)第二步就是依次实现不同的模块,在这里我推荐BEM的命名思想,但是可以嵌套一到两层的选择器结构
3、优化代码
我相信当我们完成基本的页面效果后,还是会存在着一些重复的或者不够简洁的代码,这时候就是要去优化这些代码,主要是在提取重复代码,尽可能地精简代码。
NO3:
css性能优化的地方很多,结合以上几位大神的回答,总结如下:
1.慎重使用高性能属性:浮动、定位;
2.尽量减少页面重排、重绘
重排按照css的书写顺序:
位置:positon、top、left、z-index、float、dispay
大小:width、height、margin、padding
文字系列: font、line-height、color、letter-spacing
背景边框:background、 border
其它:anmation、transition
重绘:border、outline、background、box-shadow,能使用background-color,就尽量不要使用background;
3.去除空规则:{};
4.属性值为0时,不加单位;
5.属性值为浮动小数0.**,可以省略小数点之前的0;
6.标准化各种浏览器前缀:带浏览器前缀的在前。标准属性在后;
7.不使用@import前缀,它会影响css的加载速度;
8.充分利用css继承属性,减少代码量;
9.抽象提取公共样式,减少代码量;
10.选择器优化嵌套,尽量避免层级过深;
11.css雪碧图,同一页面相近部分的小图标,方便使用,减少页面的请求次数,但是同时图片本身会变大,使用时,优劣考虑清楚,再使用;
12.将css文件放在页面最上面
.....
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!