提高css性能的方法

这篇文章主要介绍了css性能优化提高css性能的方法,不规范的css会导致很多性能问题,所以学习掌握css性能优化技巧是非常必要的,对css性能优化知识感兴趣的朋友一起学习吧

不规范的css会导致很多性能问题,这些问题可能在一些小的项目中不够明显,但是在大型项目中就会显现出来。

css匹配原理

在优化css之前我们需要了解下css是怎么进行工作的,我们都知道css是由选择器,属性和属性值构成的。

我们可能会这样写上一行代码

立即学习“前端免费学习笔记(深入)”;

//css   .con .loulan1 p span{ display: block; }   //html   

文字

在这里我们对con类里面的loulan类里的p标签里面的span标签进行样式定义。我说出来都嫌累更别说写起来了,其实你可以把浏览器看作一个人,它渲染起来肯定也会浪费性能。

而且css的匹配原理不是从左到右的,而是从右到左的,也就是说我们的这行代码里面,先查找到页面里面所有的span元素形成一个集合,再在所有的span元素往上查找,看看有多span的父元素是p元素或者父元素的父元素是p元素或者……慢慢寻找,把父元素不是p元素的删去,再往上查找看集合里的有p元素又多少它的父元素的类是loulan…浏览器说:我好累…

其实呢浏览器从右到左进行查找的好处是为了尽早过滤掉一些无关的样式规则和元素。并且Firefox 称这种查找方式为 keyselector(关键字查询),所谓的关键字就是样式规则中最后(最右边)的规则,上面的 key 就是 span。人家本来是为了能尽快过滤到一些无关样式规则的,我们这里缺一层套一层,层层不停歇。所以只是想定义一个span的样式在span上加个类岂不是更好。有人这时要说了,那样是需要在每个元素上都加上类吗?那肯定不是必须的,只不过我们要了解浏览器是怎么查找匹配的,然后结合现在的结构来做出一个最好的最方便的写法。

//css .loulanSpan{ display: block; }   //html 

文字

css选择器权值

这里说下CSS的 ID Class Tag选择器的权值,也就是他们的优先级,权值越大,优先级越高

ID:100

Class:10

Tag:1

有了上面两个的基础我们再详细说下应该怎样来优化css提高性能

1,减少css嵌套,最好不要套三层以上,一般情况下块级元素加上类,里面的内联元素不用加,css写的时候块级class套内联tag,这样不仅可以减少css文件大小,还能减少性能浪费。

2,不要在ID选择器前面进行嵌套,ID本来就是唯一的而且人家权值那么大,前方嵌套完全是浪费性能。

3,建立公共样式类,把长段相同样式提取出来作为公共类使用,比如我们常用的清除浮动,单行超出显示省略号等等等,当然如果你使用sass,继承会让你更加方便,同时我是比较提倡使用sass的,之后肯定也会写一篇sass的博客。

4,缩写css,其中包括缩写maigin,padding,颜色值等等,要是有两个或者两个以上的margin-****,写成margin: * * * *有助于文件大小。

5,减少通配符*或者类似[hidden=”true”]这类选择器的使用,挨个查找所有…这性能能好吗?当然重置样式这些必须的东西是不能少的。

6,有些人喜欢在类名前面加上标签名:p.ty_p 来进行更加精确的定位,但是这样往往效率更差,类名应该在全局范围除非公用是唯一的,所以这种做法是应该便面的。

7,巧妙运用css的继承机制,在css中很多属性是可以继承的比如颜色字体等等,父节点定义了,子节点就无需定义。

8,拆分出公共css文件,对于比较大的项目我们可以将大部分页面的公共结构的样式提取出来放到单独css文件里,这样一次下载后就放到缓存里,当然这种做法会增加请求,具体做法应以实际情况而定。

9,不用css表达式,可能大家接触比较少,但是要记住的是无论我们怎么炫酷,到了最后都是静态的,所以表达式只是让你的代码显得更加炫酷,但是他对性能的浪费可能是超乎你的想象的,因为它并不只是计算一次,一些小的事件可能都会增加它为了有效准确而进行计算求值的次数。

10,少用css rest,可能你会觉得重置样式是规范,但是其实其中有很多的操作是不必要不友好的,有需求有兴趣的朋友可以选择normolize.css

11,cssSprite,合成所有icon图片,用宽高加上bacgroud-position的背景图方式显现出我们要的icon图,这是一种十分实用的技巧,极大减少了http请求。

当然我们还需要一些善后工作,CSS压缩(这里提供一个在线压缩 YUI Compressor ,当然你会用其他工具来压缩是十分好的),GZIP压缩,Gzip是一种流行的文件压缩算法,详细做法可以谷歌或者百度。

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

CSS样式的覆盖规则

以上就是提高css性能的方法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1610070.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何通过CSS3进行2D转换
上一篇 2025年12月24日 01:12:32
下一篇 2025年12月24日 01:12:47

相关推荐

  • VSCode怎么编写地图定位_VSCode集成地图API开发位置服务应用教程

    答案是集成地图API实现定位需选择服务商、引入SDK、初始化地图并调用定位功能。具体为:在VSCode中创建Web项目,引入百度等地图API的SDK,通过HTML页面加载地图容器,使用JavaScript初始化地图实例,并结合浏览器Geolocation API或地图SDK自带控件获取位置,最后添加…

    2026年8月29日
    000
  • ThinkPHP 6 环境配置(Nginx/Apache + PHP 8)

    配置 thinkphp 6 环境需要在 nginx 或 apache 上结合 php 8 进行设置。1) nginx 配置:编辑 nginx.conf 文件,设置 server 块以正确处理 php 文件。2) apache 配置:在 httpd.conf 文件中添加 virtualhost 配置,…

    2026年8月29日
    200
  • Mac+IDEA+百度富文本UEditor

    Mac+IDEA+百度富文本UEditorMac+IDEA+百度富文本UEditorMac+IDEA+百度富文本UEditorMac+IDEA+百度富文本UEditor

    最近,我在项目中需要嵌入一个富文本编辑器,考虑到百度ueditor的强大功能,决定使用它。然而,从%ignore_a_1%+eclipse环境转到mac+idea后,遇到了几个问题。经过一番努力,终于解决了这些问题,现分享我的经验。 环境:Mac + IDEA + UEditor 基于 Maven+…

    2026年8月29日 用户投稿
    200
  • 如何解决HTML解析问题?使用paquettg/php-html-parser可以!

    可以通过一下地址学习composer:学习地址 在开发一个需要从网页中提取特定数据的项目时,我遇到了一个棘手的问题:如何高效地解析和操纵html内容。尝试了几种方法后,我发现这些方法要么过于复杂,要么不够灵活,无法满足我的需求。最终,我找到了paquettg/php-html-parser这个库,它…

    用户投稿 2026年8月29日
    400
  • VSCode怎么更改鼠标颜色_VSCode自定义鼠标指针颜色与样式教程

    答案:可通过修改VSCode设置自定义光标颜色、样式、粗细及闪烁方式以提升编码体验。具体包括在settings.json中配置editor.cursorStyle、editor.cursorWidth、editor.cursorBlinking,以及通过workbench.colorCustomiz…

    2026年8月28日
    100
  • MySQL索引原理与实战优化_提升查询性能的关键技术解析

    MySQL索引原理与实战优化_提升查询性能的关键技术解析MySQL索引原理与实战优化_提升查询性能的关键技术解析MySQL索引原理与实战优化_提升查询性能的关键技术解析MySQL索引原理与实战优化_提升查询性能的关键技术解析

    mysql索引类型包括b-tree、哈希、全文索引等,适用于不同查询场景。1.b-tree索引以树状结构存储数据,适合范围查询和排序;2.哈希索引适用于等值查询,但不支持范围查询;3.全文索引用于文本搜索。选择索引需考虑查询需求、数据类型及维护成本。索引失效常见原因包括使用函数、表达式、or条件不当…

    2026年8月28日 用户投稿
    200
  • 推荐几款好用的文本编辑器

    推荐几款好用的文本编辑器推荐几款好用的文本编辑器推荐几款好用的文本编辑器推荐几款好用的文本编辑器

    作为程序员,编写和查看代码是日常工作的重要部分。今天,我将为大家介绍几款实用的文本编辑器。 Sublime Text 是一款轻量、简洁、高效且跨平台的编辑器。 Sublime Text的特色功能包括: 出色的扩展功能,官方称为安装包(Package)。它没有传统的右侧滚动条,而是用代码缩略图代替,这…

    2026年8月28日 用户投稿
    200
  • 如何解决PHP中生成随机内容的问题?使用pragmarx/random库可以!

    可以通过一下地址学习composer:学习地址 在开发一个php项目时,我需要生成各种随机内容,包括字符串、数字和符合特定模式的文本。这个需求看似简单,但实际上却充满了挑战。最初,我尝试使用php的内置函数如rand()和mt_rand(),但这些函数生成的随机数不够安全,无法满足我的需求。此外,我…

    用户投稿 2026年8月28日
    100
  • 如何清理浏览器缓存_各浏览器缓存清除指南

    清理浏览器缓存是指删除浏览器为加速网页加载而存储的临时文件,如图片、css、javascript等;2. 主要目的是解决网页显示错乱、加载旧内容等问题,并释放硬盘空间;3. 操作核心是进入浏览器设置或使用快捷键,选择清除数据类型时务必勾选“缓存的图片和文件”;4. 不同浏览器操作路径略有差异:chr…

    2026年8月28日
    200
  • VSCode怎么建立外部样式_VSCode链接外部CSS文件方法教程

    首先创建style.css文件并编写样式,然后在HTML的head中通过link标签引入,最后用Live Server插件实现实时预览;若样式未生效,需检查路径、语法、优先级、缓存及HTML结构,并利用开发者工具调试;大型项目应按模块或页面拆分CSS,结合预处理器、BEM规范和CSS Reset提升…

    2026年8月28日
    200
  • ThinkPHP 性能优化:10个提升速度的技巧

    提升thinkphp应用性能的10个技巧包括:1.优化数据库查询,减少查询次数;2.使用缓存策略,降低数据库负载;3.实施延迟加载,减少初始加载时间;4.进行批量操作,减少数据库连接次数;5.避免n+1查询问题,使用关联查询;6.优化模板渲染,使用缓存模板;7.启用编译模式,提升启动速度;8.优化日…

    2026年8月28日
    100
  • 悟空浏览器如何设置打印网页时不带页眉页脚_悟空浏览器打印网页去掉页眉页脚方法

    在悟空浏览器中打印网页时,可通过打印预览设置取消页眉页脚:打开打印界面后展开更多设置并取消勾选“页眉和页脚”;2. 使用开发者工具添加CSS样式@media print { @page { margin: 0; } }可彻底去除页眉页脚及边距;3. 或将网页导出为PDF:选择虚拟PDF打印机并关闭页…

    2026年8月28日
    100
  • 如何通过 Yii 框架的缓存机制提升系统性能?

    通过 yii 框架的缓存机制提升系统性能的方法是:1)减少数据库查询和复杂计算的次数,2)选择合适的缓存类型,如文件缓存、数据库缓存、memcached 或 redis。具体操作包括缓存不经常变化的数据,并通过性能分析工具优化缓存策略。 提升系统性能是每个开发者的终极目标,而在 Yii 框架中,缓存…

    2026年8月28日
    600
  • HTTP1.1与HTTP2的区别_HTTP1.1与HTTP2有哪些区别

    http/2通过多路复用在单个tcp连接上并行传输多个独立的数据流,每个流的数据被分割为带流id的二进制帧并交错发送,接收方根据流id重新组装,从而避免了http/1.1中因单个请求阻塞导致后续请求等待的队头阻塞问题;2. hpack头部压缩通过静态字典、动态字典和哈夫曼编码减少重复头部信息的传输量…

    2026年8月28日
    400
  • 如何进入调试模式_怎样启用开发者调试模式

    启用开发者调试模式的具体步骤因设备或软件环境而异,最常见的场景是网页浏览器和安卓设备;在chrome浏览器中可通过f12快捷键或右键“检查”开启开发者工具,其中包含元素、控制台、网络等调试功能;安卓设备需在“关于手机”中连续点击“版本号”七次以激活“开发者选项”,随后可启用usb调试等功能。2. 调…

    2026年8月27日
    200
  • SSL证书是什么_SSL证书申请方式有哪些

    SSL证书是什么_SSL证书申请方式有哪些SSL证书是什么_SSL证书申请方式有哪些SSL证书是什么_SSL证书申请方式有哪些SSL证书是什么_SSL证书申请方式有哪些

    SSL证书是网站安全的保障,通过加密技术保护数据传输,提升用户信任和搜索引擎排名。申请方式主要有从CA机构购买或通过云服务商获取免费/付费证书。根据网站类型选择合适的证书:DV适合个人网站,OV适合企业,EV适合高安全需求的金融类网站。手动配置较复杂,但云平台提供的一键部署功能可简化流程。免费证书虽…

    2026年8月27日 用户投稿
    300
  • 如何解决前端项目中的图标管理问题?使用Composer可以轻松集成BootstrapIcons

    可以通过以下地址学习Composer:学习地址 在前端开发中,图标的选择和管理一直是一个让人头疼的问题。最近在开发一个新项目时,我遇到了一个棘手的情况:项目中需要使用大量图标,但这些图标来自不同的来源,导致样式不统一,管理起来也非常复杂。这不仅影响了项目的美观度,还严重拖慢了开发进度。 为了解决这个…

    用户投稿 2026年8月27日
    100
  • 如何优雅地在LaravelBlade视图中使用图标?mallardduck/blade-boxicons助你轻松搞定!

    可以通过一下地址学习composer:学习地址 在现代 web 应用中,图标扮演着不可或缺的角色。它们不仅能美化界面,还能直观地传达信息,提升用户交互体验。然而,对于 laravel 开发者来说,将图标整合到 blade 视图中,却常常伴随着一些“甜蜜的烦恼”。 还记得那些日子吗?为了在项目中引入一…

    用户投稿 2026年8月27日
    100
  • Laravel与Livewire实现实时前端

    使用laravel和livewire实现实时前端可以通过以下步骤实现:1. 安装和配置livewire,使用composer安装并在视图中添加必要的样式和脚本;2. 创建livewire组件,使用命令行工具生成组件文件,并在其中定义属性和方法;3. 在laravel视图中使用livewire组件,实…

    2026年8月27日
    100
  • VSCode怎么调出HTML模板_VSCode快速生成HTML基础模板结构教程

    答案:在VSCode中输入!后按Tab键即可快速生成HTML5模板,也可使用html:5或doc等Emmet缩写,若失效需检查文件类型和设置,还可通过自定义snippets.json实现个性化模板。 在VSCode中快速生成HTML基础模板结构,最直接也最常用的方法就是利用其内置的Emmet功能。你…

    2026年8月26日
    200

发表回复

登录后才能评论
关注微信