canvas图片格式与前端浏览器性能优化

在当前的静态或者动态界面中,图片是用户体验提升的重要的一部分。良好的图片设计会提升用户体验,并且对于浏览器优化具有很好的效果。接触图片设计和前端开发已经有一段时间,下面简单总结几点:

1.图片格式

传统的网页开发主要使用三种格式的图片:jpg、png、gif。这三种图片都是栅格图片(图片信息使用像素点进行存储),如果进行缩放会影响图片的视觉效果。


jpg(jpeg)格式使用范围最广。通常情况下,色彩范围多,不包含透明图层的图片使用这个格式,传统网站80%的产品图和banner部分使用这个格式。例如下面的产品图(请忽略广告信息)。

png图片通常适应于包含透明图层的图片。例如常见的icon图片或者小图标等。外形不规则,可以作为页面装饰。例如下面的图标。

gif是传统三种图片中占用空间最大的文件。目前主要使用在动图(很大程度已经被短视频替代)。


当前发展最快的三种图片是svg、webp、canvas(严格意义不是图片)。下面进行简单介绍。

canvas基于JavaScript语言进行2D绘图,一次性绘制图片(如果需要更改则全部重新渲染),可以以jpg或者png形式存储图片。适合于小游戏开发。

svg基于XML语言进行2D绘图,是一种独立的程序语言,每一个内容都是一个独立的对象,单独进行渲染,不适合游戏,适合谷歌地图等大型渲染应用。过度使用DOM技术会使得渲染效果减慢。可伸缩的矢量图格式(便于适应不同类型的浏览器和显示屏),使用xml定义。使用<svg>标签设置svg格式的图片。svg基于XML,可以用文本编辑器编辑。可以绘制图形,设置滤镜,设置渐变效果。 相同点:都可以在浏览器中创建图形。

webp图片格式:相对传统图片占用空间更小,淘宝和腾讯已经在使用。

2.CSS优化

尽量使用css样式进行优化,避免使用图片。当前大部分浏览器已经支持css3效果,简单的动画和图片效果完全可以使用css进行完善。使用动画可以分为预设的translate动画,和自定义的animation动画,根据实际的页面复杂度进行设计。

传统的flash动画现在已经落伍了。毕竟这种把flash绑架到浏览器上的行为对于用户体验是很不好的(用户需要根据不同版本浏览器下载对应的Adobe flash player),并且在浏览器中进行询问。

当然,传统的网页制作工具DW,在当前各种各样的编译器存在情况下,市场份额也在慢慢下降。身边的同事朋友基本都在使用sublime、atom、webstrom等编译器,可以熟练使用DW的也是神一样的前辈了。刚开始接触前端(当时还叫网页设计)就是使用的DW cs4,现在已经变化很多啦。

@keyframes bearRide {
  0% {
    transform: translateX(-1.875rem) translateY(-0.3125rem); }
  25% {
    transform: translateX(-3.75rem) translateY(0.3125rem); }
  50% {
    transform: translateX(-5.625rem) translateY(-0.3125rem); }
  75% {
    transform: translateX(-7.5rem) translateY(0.3125rem); }
  100% {
    transform: translateX(-9.375rem) translateY(-0.3125rem); } }

@-webkit-keyframes bearRide {
  0% {
    transform: translateX(-1.875rem) translateY(-0.3125rem); }
  25% {
    transform: translateX(-3.75rem) translateY(0.3125rem); }
  50% {
    transform: translateX(-5.625rem) translateY(-0.3125rem); }
  75% {
    transform: translateX(-7.5rem) translateY(0.3125rem); }
  100% {
    transform: translateX(-9.375rem) translateY(-0.3125rem); } }

@-webkit-keyframes steps {
  100% {
    width: 100%; } }

@keyframes steps {
  100% {
    width: 100%; } }

.loading .progress {
  background-color: transparent; }
  .loading .progress .step {
    height: 100%;
    width: 20%;
    background-color: #ff2947;
    right: 0;
    position: absolute; }

3.图片请求

减少图片请求,使用雪碧图(sprite 精灵图)。现在已经有其他的优化方案,不过传统的手艺不能丢,根据网站的实际情况进行优化。对于国企和政府网站,这个方法还是很关键的。

4.图片压缩

当前端的整体内容搭建完毕后,使用软件对整体的图片和代码进行压缩。设计稿中的图片分辨率和色彩深度等也可以随之调整。当然,性能和效果互相权衡。

如果用户的网络良好,流量充足,可以使用大分辨率的图片。当然预先需要进行用户端判断。还是那句话,根据实际的用户需求和产品分析确定最后的设计方案吧。

猜你喜欢

转载自blog.csdn.net/weixin_41697143/article/details/81126622