服务与支持 |咨询热线 0931-8733767
  • 金城在线
  • 公司简介
  • 发展历程
  • 企业文化
  • 售后服务
  • 工作机会
  • 联系我们

如何在响应式设计中优化CSS提高前端性能

来源:发布时间:2017/7/27 11:19:49

  如今,手持移动设备正以空前的速度发展,但与pc比较在性能上还有一定的差距。浏览器能够实现的特性越来越多,相对于前端消耗,后端消耗只占整个流程的10%-20%,网页访问、用户交互、网页解析、渲染、布局绘制都会消耗内存。而在手持移动设备中,系统资源分配给浏览器的资源是有限的。这就要求在对网页进行响应式设计时,除了考虑各设备分辨率的兼容问题,还必须考虑到设备性能问题,从而提高用户体验感,提升网站整体性能。本文仅就如何利用css对前端性能的优化进行归纳总结。

  CSS是网页的表现层,新的标准规范CSS3的充分利用可以使web应用更加优美,但是使用不当则会加剧内存的损耗,从而有损于网页的呈现。我们可以从以下几个方面去进行优化:

  1、将CSS写在网页头部。CSS文件放到文档头部(及外部调用文件)会让网页加载更快,因为它们是可以被缓存的。引用外部样式也可以让页面逐渐加载。 如果把样式表放到文件里面或者文件尾部它会阻止页面元素的逐渐显示,并且还会导致页面内容以没有样式的形式显示出来,待完全加载样式后,页面重绘,影响用户体验。

  2、尽量避免在HTML标签中写Style属性。CSS (Cascading Style Sheets) 通常存储在样式表中,使用外部样式表是为了解决内容与表现分离的问题,从而极大提高工作效率,减少代码冗余。

  3、避免CSS表达式。CSS Expression (CSS 表达式),是一种使用动态设置 CSS 属性的方式。其实 CSS 表达式非常强大,我们可以使用 它实现 min-width 属性以及隔行换色,模拟伪类等等;在你改变窗口大小,滚动页面甚至移动鼠标都会触发表达式进行求值,如此频繁的求值以至于浏览器的性能产生严重的影响。所以为了网页速度和浏览器负担,尽可能避免css表达式。

  4、移除空的CSS规则。空的css规则指的是该规则不包含任何属性,如:.clear{}。空的CSS规则增加了CSS文件的大小,而且会影响CSS树的执行,所以需清除空的CSS规则。

  5、正确使用Display的属性。CSS display属性基本上有inline,block,和none三个属性值。inline将他所定义的元素显示为行元素。如strong,input,span默认元素为行元素。block元素是块级元素,会使前后元素产生换行效果。hn和p元素默认情况为块级元素。none,意思是不显示元素。

  除了以上的Display基本属性,腾讯总结了以下的一些合理使用的规则。

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

  b) display:inline-block后不应该再使用float

  c) display:block后不应该再使用vertical-align

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

  6、不滥用Float。Float浮动在实际应用种是非常广泛,但由于Float在渲染的时候计算量比较大,对终端浏览器增加不必要的负担,所以在一些不应该使用float的地方尽量减少使用。如:无序链接替代无序列表。当可以使用a标签进行排列时,就不要使用无序列表。A标签是行元素,他会自动的横向排列。Li为块级元素,要想横向显示,必须配合float。也可以设定li标签display:inline,将块级变为行级达到页面所要的效果。这样会使代码更简洁。

  7、不滥用Web字体。在Web编码中,CSS默认应用的Web字体是有限的,虽然在新版本的CSS3,我们可以通过新增的@font-face属性来引入特殊的浏览器加载字体,但浏览器遇到本机没有的字体时会进行网络下载,解析,重绘当前页面。所以多数情况下,考虑各个因素的影响我们还是应该尽量充分利用这些系统默认web安全字体实现CSS的编写。

  8、不声明过多的Font-size。元素的font-size属性会自动继承它父级元素的font-size属性值,除非你重新定义覆盖它。一般来说,大多数情况下使用em或者%,这样在响应式显示时字体就能被更精细比例的字号支持。本人建议使用百分比或em来定义font-size大小,在兼容浏览器时也会得到很好的支持。所以尽量合理的定义字体大小,以便于在页面放缩的时候仍然保持良好的可读性,提高css效率。

  9、值为0时不需要任何单位。0 是最好的兼容策略,0 以不变应万变。为了浏览器的兼容性和性能,值为0时不要带单位。

  10、标准化各种浏览器前缀。浏览器前缀为-webkit(Chrome/Safari),-moz(Firefox),-ms(IE),-o(Opera,现在该浏览器改用blink内核,已经淘汰)。在CSS属性尚未完全成为W3C标准,我们会使用浏览器前缀。在使用时,应该先将所有私有的CSS3属性写在前面,最后再写标准的CSS3属性。使用css动画时,只使用-webkit和无前缀两种即可。我们期待所有css属性都成为标准,并且被Firefox、Chrome等所有浏览器的最新版兼容,那时就没有必要使用浏览器前缀了。

  11、避免让选择符看起来像正则表达式。高级选择器,是区别于常见选择器的概念,是CSS的高级运用,也是作为扩展。在使用的时候,注意有些选择器会优先于其他选择器,有时后面的选择器也会覆盖前面的样式。虽然使用高级选择器可以大幅度的提高开发书写或修改样式表时的工作效率。但在响应式布局时,考虑到更多终端的性能应尽可能的避免看起来比较复杂的高级选择器,因为高级选择器执行耗时长且不易读懂,避免使用。

  在我们进行响应式设计时,由于要适应不同终端,需要加载的css文件比较大,流量成本也比较高,终端反应速度较慢,客户端加载时间过长。所以进行前端性能优化有相当的必要。本文仅从优化css的方面提了一些拙见,在前端性能优化方面还有很长的路要走,作为前端设计工程师我们只有不断的去挖崛研究,才能赶上科技前进的步伐。


相关文章
  • 预约专家

    为您提供一对一解决方案
    立即预约
  • 售前咨询

    周一至周五9:00——17:30
    立即咨询
  • 联系方式

    13919049954

    全国7×24小时热线服务
  • 免费报价

    专属专业顾问1对1报价
    免费报价