css点击后变颜色_Web 性能优化:21 种优化 CSS 和加快网站速度的方法

news/2024/5/14 7:38:15/文章来源:https://blog.csdn.net/weixin_28746223/article/details/112116443

这是 Web 性能优化的第 4 篇,上一篇在下面看点击查看:

  • Web 性能优化:使用 Webpack 分离数据的正确方法
  • Web 性能优化:图片优化让网站大小减少 62%
  • Web 性能优化:缓存 React 事件来提高性能

CSS 必须通过一个相对复杂的管道,就像 HTML 和 JavaScript 一样,浏览器必须从服务器下载文件,然后进行解析并将其应用于 DOM。由于优化程度极高,这个过程通常非常快——对于不基于框架的小型 web 项目,CSS 通常只占总资源消耗的一小部分。

框架打破了这种平衡。包括一个 JavaScript GUI 堆栈,如 jQuery UI,可以观察 CSS, JS 和 HTML 大小逐渐的变大。通常,开发人员最后才会感到压力,当他们用一个强大的 8 核工作站后面,使用 T3 internet 时,没有人关心速度,这随着延迟或 cpu 受限设备的出现而改变。

优化 CSS 需要一个多维的方法。虽然手工编写的代码可以使用各种技术进行简化,但是手工检查框架代码是低效的。在这些情况下,使用自动化的简化会产生更好的结果。

下面的步骤将带我们进入 CSS 优化的世界。并不是每一个都可以直接应用到你的项目中,但是一定要记住它们。

01. 使用简写

62727a02b68e3d0b9d9a771549b2b60e.png

使用缩写语句,如下面所示的 margin 声明,可以从根本上减小 CSS 文件的大小。在 google 上搜索 CSS Shorthand 可以找到许多其他的速记形式。

p {margin-top: 1px;margin-right: 2px;margin-bottom: 3px;margin-left: 4px;
}p {margin: 1px 2px 3px 4px;
}

02. 查找并删除未使用的 CSS

528c2fc8609fad27f68ad589b9d317f7.png

删除不必要的部分 CSS,j 显然会加快网页的加载速度。谷歌的 Chrome 浏览器有这种开箱即用的功能。只需转到查看>开发人员>开发人员工具,并在最近的版本中打开 Sources 选项卡,然后打开命令菜单。然后,选择 Show Coverage,在 Coverage analysis 窗口中高亮显示当前页面上未使用的代码,让您大开眼界。

打开谷歌浏览器开发都工具,在 Conlse 旁边更多选择 Coverage,就可以看到未使用的 CSS, 点击对应的项,高亮显示当前页面上未使用的代码,让你大开眼界:

f822af7e92c84f67ad4749780be74eb1.png

03. 以更便捷的方式做到这一点

44d8d5655e661e07cc9defcd45f54ad8.png

在逐行分析中导航并不一定便捷,使用谷歌浏览器的 Audits 就可以快速帮我们分析,使用方式,打开开发者工具,点击 Audits 栏位,点击 Run audits 后就开始分析结果。

04. 注意这些问题

请记住,对 CSS 的自动分析总是会导致错误。用压缩后的 CSS 文件替换 未压缩 CSS 文件之后,对整个网站进行彻底的测试——没有人知道优化器会导致什么错误。

05. 内联关键 CSS

加载外部样式表需要花费时间,这是由于延迟造成的——因此,可以把最关键的代码位放在 head 中。但是,请确保不要做得过火,记住,执行维护任务的人员也必须读取代码。

<html><head><style>.blue {color: blue;}</style></head><body><div class="blue">Hello, world!</div></body>
</html>

06. 允许反并行解析

@import 将 CSS 样式方便添加代码中。遗憾的是,这些好处并不是没有代价的:由于 @import 可以嵌套,因此无法并行解析它们。更并行的方法是使用一系列 标记,浏览器可以立即获取这些标记。

@import url("a.css"); @import url("b.css"); @import url("c.css");<link rel="stylesheet" href="a.css" />
<link rel="stylesheet" href="b.css" />
<link rel="stylesheet" href="c.css" />

07. 用 CSS 替换图片

几年前,一套半透明的 png 在网站上创建半透明效果是司空见惯的。现在,CSS 过 滤器提供了一种节省资源的替代方法。例如,以下这个代码片段可以确保所讨论的图片显示为其自身的灰度版本。

img {-webkit-filter: grayscale(100%);/* old safari */filter: grayscale(100%);
}

08. 使用颜色快捷方式

常识告诉我们,六位数的颜色描述符是表达颜色最有效的方式。事实并非如此——在某些情况下,速记描述或颜色名称可以更短。

target {background-color: #ffffff;
}
target {background: #fff;
}

09. 删除不必要的零和单位

CSS 支持多种单位和数字格式。它们是一个值得感谢的优化目标——可以删除尾随和跟随的零,如下面的代码片段所示。此外,请记住,零始终是零,添加维度不会为包含的信息附带价值。

padding: 0.2em;
margin: 20em;
avalue: 0px;
padding: 0.2em;
margin: 20em;
avalue: 0;

10. 消除过多分号

这种优化需要谨慎,因为它会影响代码的更改。CSS 的规范允许省略属性组中的最后一个分号。由于这种优化方法所节省的成本很小,所以我们主要针对那些正在开发自动优化的程序员说明这一点。

p {. . . font-size: 1.33em;
}

代码部署后可能存在的 BUG 没法实时知道,事后为了解决这些 BUG,花了大量的时间进行 log 调试,这边顺便给大家推荐一个好用的 BUG 监控工具 Fundebug

11. 使用纹理图集

由于协议开销的原因,加载多个小图片的效率很低。CSS 精灵将一系列小图片组合成一个大的 PNG 文件,然后通过 CSS 规则将其分解。TexturePacker 等程序大大简化了创建过程。

.download {width: 80px;height: 31px;background-position: -160px -160px;
}.download:hover {width: 80px;height: 32px;background-position: -80px -160px;
}

12. 省略 px

提高性能的一个简单方法是使用 CSS 标准的一个特性。为 0 的数值默认单位是 px—— 删除 px 可以为每个数字节省两个字节。

h2 {padding: 0px;margin: 0px;
}h2 {padding: 0;margin: 0;
}

13. 避免需要性能要求的属性

分析表明,一些标签比其他标签更昂贵。以下这些解析会影响性能—如果在没有必要的情况,尽量不要使用它们。

border-radius
box-shadow
transform
filter
:nth-child
position: fixed;

14. 删除空格

空格——考虑制表符、回车符和空格——使代码更容易阅读,但从解析器的角度看,它没有什么用处。在发布前删除它们,更好的方法是将此任务委托给 shell 脚本或类似的工具。

15. 删除注释

注释对编译器也没有任何作用。创建一个自定义解析器,以便在发布之前删除它们。这不仅节省了带宽,而且还确保攻击者和克隆者更难理解手头代码背后的思想。

16. 使用自动压缩

Yahoo  的用户体验团队创建了一个处理许多压缩任务的应用程序。它以  JAR  文件的形式发布,在这里可用,并且可以使用所选的 JVM 运行。

java -jar yuicompressor-x.y.z.jar
Usage: java -jar yuicompressor-x.y.z.jar[options] [input file]
Global Options-h, --help                Displays thisinformation--type <js|css>           Specifies thetype of the input file

17. 在 NPM 运行它

如果你希望将产品集成到 Node.JS 中,请访问 npmjs.com/package/yuicompressor。维护不良的存储库包含一组包装器文件和 JavaScript API。

var compressor = require('yuicompressor');compressor.compress('/path/to/
file or String of JS', {//Compressor Options:charset: 'utf8',type: 'js',

18. 保持 Sass 的检查

虽然 CSS 选择器的性能不像几年前那么重要(请参阅参考资料),但是像 Sass 这样的框架有时会产生非常复杂的代,不时查看输出文件,并考虑优化结果的方法。

19. 设置缓存

有句老话说,最快的文件永远不会通过网络发送。让浏览器缓存请求有效地实现这一点。遗憾的是,缓存头的设置必须在服务器上进行。充分上面讲的的两个 Chrome 工具,它们提供了一种快速分析更改结果的方法。

20. 打破缓存

设计人员通常不喜欢缓存,因为他们担心浏览器会缓存上次的样式表。解决这个问题的一个简单方法是包含带有文件名的标记。遗憾的是,由于一些代理拒绝缓存具有“动态”路径的文件,此步骤所附带的代码中概述的方案并不适用于所有地方。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_826859.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

外链发布,如何一箭双雕,而非仅仅为了SEO?

目前&#xff0c;我们不可否认的是社交媒体对SEO的影响&#xff0c;特别是新媒体平台&#xff0c;很多比较成熟的公司都会在原有的SEO部门增加新媒体部&#xff0c;这就意味着&#xff0c;基础性的营销推广&#xff0c;不单单存在于SEO&#xff0c;以往通过SEO获取大量流量的操…

记录 OpenGL 学习网站

LearnOpenGL CNhttp://learnopengl.com 系列教程的简体中文翻译https://learnopengl-cn.github.io/http://learnopengl.com 系列教程的简体中文翻译https://learnopengl-cn.github.io/ OpenGL入门&#xff08;一&#xff09;-- 图形API简介与作用 - 简书由于第一次的文章排版有…

如何处理 网站被网安大队下发的信息系统安全等级保护限期整改通知书

2018年6月&#xff0c;我们接到一位来自北京的新客户反映&#xff0c;说是他们单位收到一封来自北京市公安局海淀分局网安大队的通知书&#xff0c;通知称&#xff1a;贵单位网站存在网络安全漏洞,网站被植入后门程序&#xff0c;要求你单位要在XX日之前&#xff0c;对网站进行…

社交媒体(social media)网站设计尺寸参考(转)

社交媒体网站&#xff0c;这里主要指的是国外的几大网站&#xff0c;比如说&#xff1a;Facebook、Twitter、Google、LinkedIN、Pinterest、Instagram和Youtube七个。今天不说别的&#xff0c;主要将其设计图尺寸发于大家参考&#xff0c;希望这这几张图对设计人员有所帮助。 社…

网站快照被劫持 标题描述被篡改成博彩内容的解决方法

三年前用dedecms织梦系统&#xff0c;帮公司设计了一个网站&#xff0c;平常的网站更新&#xff0c;以及优化也都是我在负责&#xff0c;前段时间发现网站的流量越来越少&#xff0c;用爱站站长工具查看了一下&#xff0c;竟然发现网站快照被劫持了&#xff0c;网站快照标题和实…

初创企业没网站,如何利用SEO推广?

在日常工作中&#xff0c;我们经常会遇到一些初创的企业&#xff0c;由于刚刚成立而没有建立自有网站&#xff0c;但这个时候&#xff0c;仍然有业务需要配合线上推广。 那么&#xff0c;初创企业没网站&#xff0c;如何利用SEO推广&#xff1f; 根据以往的SEO工作经验&#…

企业网站建设前所需的准备哪些?

目前&#xff0c;在仍有不少传统的企业想建设自已的网站&#xff0c;可是大多数却不知道网站建设的具体流程和一些建站的物料准备工作。所以&#xff0c;今天搜客建设网站公司小编就和大家谈一谈网站建设前所需的准备物料。 一、网站建设流程 第1步&#xff1a;域名注册 任何…

获取网站的Logo图标

当我们访问不同的网站时&#xff0c;IE会根据不同的网站显示不同的图标&#xff0c;如下图所示。 在IE的收藏夹里也可以看到类似的情况&#xff08;IE6经常获取不到Logo图标&#xff0c;IE7就好多了&#xff09;。 其实这个图标就存放在网站的根目录下&#xff0c;名字为"…

mysql 昨天访问量_PHP+MySQL实现精确统计网站访问量(IP个数)

基于WordPress的网站有很多统计功能。但是只能统计文章阅读数。不能统计访客人数。以下代码可以实现获取来访用户的IP地址&#xff0c;一个IP对应一次访问。即使刷新也不会增加访问量。这个非常精确。1、创建一个存储数据的表。进入MySQL后直接创建即可。create table wp_jc_co…

建站之星检测不到mysql_建站之星安装,建站之星安装教程 | 帮助信息-动天数据...

建站之星安装,建站之星安装教程作者&#xff1a;dthost |时间&#xff1a;2016-07-23 |26,443 次阅读建站之星是美橙科技开发的一套完美的建站系统&#xff0c;这套系统和PHPWEB有异曲同工之处。而且没有BUG&#xff0c;非常好用&#xff0c;很多人在使用这套程序建设网站&…

2012年移动SEO启示

2012年是搜索营销真正成熟的一年 &#xff0c;手机成为增长最大的组成部分之一&#xff0c;其整体搜索市场已达到20&#xff05;的份额。移动媒体的出现&#xff0c;使得搜索引擎优化更难。 展望未来&#xff0c;预计到2012年一年&#xff0c;语义搜索Web 3.0&#xff0c;极大地…

20个网站测试工具

1. PageSpeed Online – Make Your Web Site Faster – Test Tools PageSpeed ​​online to analyze the content of a web page and then generates suggestions to make this page more quickly. Reducing page load times may reduce the bounce rate and increase convers…

ajax data传form.serialize()多个参数_Django建站历程:(十一)ajax实现文章添加评论...

为了结构清晰&#xff0c;我们新创建一个comment APP来做评论系统&#xff0c;如何创建和配置具体可以看前面的章节&#xff0c;这里就不详细写了。需要注意的是&#xff0c;本文只实现了对文章的评论&#xff0c;对于对评论进行回复和评论没有实现&#xff0c;其实实现方法类似…

建站之星php 漏洞,建站之星任意文件上传漏洞

#1 漏洞产生/module/mod_media.phpflash_picker() 和 image_picker() 两个函数image_picker() 函数$typeArr array(image/jpeg,image/pjpeg);$flash_typeArr array(image/jpeg,image/pjpeg);$file_info & ParamHolder::get(localfile, array(), PS_FILES);$file_info[nam…

网站需要显示在线访问人数

Insus.NET开发这样多网站&#xff0c;客户一直没有这个要求。不过&#xff0c;现在有客户有这样的要求了。在线用户访问人数&#xff0c;也就是说&#xff0c;要为网站写一个计数器&#xff0c;计数器的初始值为0&#xff0c;网站一开始运行时(Application_Start)&#xff0c;就…

个人网站制作模板

前言 小伙伴们&#xff0c;大家好&#xff0c;今天和大家分享主题是个人网页设计作品&#xff0c;此作品包含css文件、fonts文件夹、images文件夹、js文件夹和index.html文件&#xff0c;支持PC端和手机端浏览&#xff0c;使用chrome浏览器&#xff0c;浏览效果更佳。 主题 …

清新漂亮简约好看的个人博客网站模板

该从哪里开始呢&#xff1f;好久没来&#xff0c;有点生疏&#xff0c;有点茫然&#xff0c;那就按常规套路来吧&#xff0c;首先对你们的驻足说声3q&#xff0c;本次分享的是一款个人博客设计&#xff0c;主题为《周末s博客》&#xff0c;本来代码算是早就写好&#xff0c;但因…

个人网站模板

/ 01 / 主题 《周末の飞扬》 / 02 / 图摘

我的家乡网站设计

/ 01 / 主题 《我的家乡》 / 02 / 图摘

简单的个人主页网站制作

/ 01 / 主题 《周末のWIN》 / 02 / 图摘