阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      CSS优化、提高性能的方法有哪些?

      CSS 优化主要是四个方面

      • 1、加载性能

        • 这个方面相关的 best practice 太多了,网上随便找一找就是一堆资料,比如不要用 import 啊,压缩啊等等,主要是从减少文件体积、减少阻塞加载、提高并发方面入手的,
        • 任何 hint 都逃不出这几个大方向。
      • 2、选择器性能

        • selector 的对整体性能的影响可以忽略不计了,selector 的考察更多是规范化和可维护性、健壮性方面,很少有人在实际工作当中会把选择器性能作为重点关注对象的,
        • 但也像 GitHub 这个分享里面说的一样——知道总比不知道好。
      • 3、渲染性能

        • 渲染性能是 CSS 优化最重要的关注对象。页面渲染 junky 过多?看看是不是大量使用了 text-shadow?是不是开了字体抗锯齿?CSS 动画怎么实现的?
        • 合理利用 GPU 加速了吗?什么你用了 Flexible Box Model?有没有测试换个 layout 策略对 render performance 的影响?
        • 这个方面搜索一下 CSS render performance 或者 CSS animation performance 也会有一堆一堆的资料可供参考。
      • 4、可维护性、健壮性

        • 命名合理吗?结构层次设计是否足够健壮?对样式进行抽象复用了吗?优雅的 CSS 不仅仅会影响后期的维护成本,也会对加载性能等方面产生影响。
        • 这方面可以多找一些 OOCSS(不是说就要用 OOCSS,而是说多了解一下)等等不同 CSS Strategy 的信息,取长补短。
      • 修复解析错误

      • 避免使用多类选择符

      • IE6以及更古老的浏览器对类似.foo.bar的多类选择符解析不正确,参考IE6下的多类选择符一文。 

      • 移除空的css规则

      • 这个规则不包含任何属性,类似:.foo { }空规则的产生原因一般来说是为了预留样式。去除这些空规则无疑能减少css文档体积。 

      • 正确使用display的属性

      • 由于display的作用,某些样式组合会无效,徒增样式体积的同时也影响解析性能。CSS Lint会检查一下几点: 

      • display:inline后不应该再使用width、height、margin、padding以及float。 

      • display:inline-block后不应该再使用float。 

      • display:block后不应该再使用vertical-align。 

      • display:table-*后不应该再使用margin或者float。 

      • 不滥用浮动

      • 虽然浮动不可避免,但不可否认很多css bug是由于浮动而引起。CSS Lint一旦检测出样式文件中有超过10次的浮动便会提示警告。 

      • 不滥用web字体

      • 对于中文网站来说Web Fonts可能很陌生,国外却很流行。web fonts通常体积庞大,而且一些浏览器在下载web fonts时会阻塞页面渲染损伤性能。 

      • 不声明过多的font-size

      • 这是设计层面的问题,设计精良的页面不会有过多的font-size声明。 

      • 不在选择符中使用ID标识符

      • 主要考虑到样式重用性以及与页面的耦合性。 

      • 不给h1~h6元素定义过多的样式

      • 全站统一定义一遍heading元素即可,若需额外定制样式,可使用其他选择符作为代替。 

      • 不重复定义h1~h6元素

      • 值为0时不需要任何单位

      • 标准化各种浏览器前缀

      • 通常将浏览器前缀置于前面,将标准样式属性置于最后,类似: 

      • .foo {-moz-border-radius: 5px;border-radius: 5px; } 

      • 使用CSS渐变等高级特性,需指定所有浏览器的前缀

      • 避免让选择符看起来像正则表达式

      • CSS3添加了一些类似~=等复杂属性,也不是所有浏览器都支持,需谨慎使用。 

      • 遵守盒模型规则

      更多面试题

      如果你想了解更多的前端面试题,可以查看本站的WEB前端面试题 ,这里基本包涵了市场上的所有前端方面的面试题,也有一些大公司的面试图,可以让你面试更加顺利。

      面试题
      HTMLCSSJavaScript
      jQueryVue.jsReact
      算法HTTPBabel
      BootStrapElectronGulp
      Node.js前端经验相关前端综合
      Webpack微信小程序-

      这些题库还在更新中,如果你有不错的面试题库欢迎分享给我,我整理后放上来;人人为我,我为人人,互帮互助,共同提高,祝大家都拿到心仪的Offer!

      目录
      本文目录
      目录