好程序员web前端分享主流CSS image比较

简介:   好程序员web前端分享主流CSS image比较在还原设计图的时候,难免会碰到一些样式图片的引用。如何来对这些图片做优化呢?本文简单的梳理了一下目前几种比较常用的使用方式。  注:  1. 有更好的方法的话,欢迎补充。

  好程序员web前端分享主流CSS image比较在还原设计图的时候,难免会碰到一些样式图片的引用。如何来对这些图片做优化呢?本文简单的梳理了一下目前几种比较常用的使用方式。
  注:
  1. 有更好的方法的话,欢迎补充。
  2. 下文未对性能问题做真实的测试,请保持一颗好奇的心,并告诉我们
  CSS Sprite
  这是目前使用比较多的方式。也是我个人认为相对最优的一种解决方式。当然,这里的最优指的是特定环境。比如移动客户端,就不一定要这么干。CSS Sprite 是将页面中所使用到的小图片整合到一张大图上去。大家都知道,客户端向服务器发送请求是很有代价的,特别是在移动端,所以,sprite 的提出是为了减少 http 请求数,从而加快页面加载速度。

  使用方式 先将小图片整合到一张大图上 css 引入背景图片 然后依据图标的位置使用 background-position 进行定位 使用技巧 切图的时候就构思拼接好图片(不然后期抓心挠肺的,当然,善用工具的出门右转) 排序有序,便于后期维护(个人建议图标从上到下排列)。有利于 background-position 定位 定位时避免使用 right, bottom 等(后期图片尺寸变化后就不一定了好不) 合理预留空白位置(空太多文件变大,太小引起图标重叠) 优点 减少 http 请求。(这个是最大的优点) 对你存在的图片一目了然(不知道这个算不算,如改进版3.0拿到的图哪些图标是之前已存在不需要重新切了的) 缺点 图片合并定位费时费力(谁用谁知道啊) 其它 github 上有个 grunt 合并 sprite 的组件,可以看看 image data URI
  即将图片资源转换为 base64 字符串格式嵌到页面或样式中。这样连图片的请求链接都省了。
  如:
  使用方式/ 数据格式 /
1.data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAE1JREFUKJHV0MEOwCAIA9DW7MP983pymUaweluv8IAABJFUJdWonqEeD0/IwwHK8QatsYlGfIhezM9WOc8jSQAoTvMqTzY1u+Z6449gA9r24D4iZ6wwAAAAAElFTkSuQmCC
  / 样式引用 /
1.

  .icon{


2.

  width: 30px; height: 30px;


3.

  background-image: 
4.url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAE1JREFUKJHV0MEOwCAIA9DW7MP983pymUaweluv8IAABJFUJdWonqEeD0/IwwHK8QatsYlGfIhezM9WOc8jSQAoTvMqTzY1u+Z6449gA9r24D4iZ6wwAAAAAElFTkSuQmCC);


5.

  }


标签语法: data : 取得数据协议 image/png : 取得数据的协议名称(注意这里也图片资源也可以使用字体等) base64 : 数据编码方式 iVBOR... : 编码后数据
  Base64编码 自行百度科普吧。
  优点 减少 HTTP 请求 避免某些文件跨域 无图片缓存等问题(但是一般 css 也是有缓存的好不好) 缺点 兼容性 ( IE6,7 不兼容, 可以使用 MHTML 来解决 ) 浏览器不会缓存该图片(这里是否是这样我存有疑惑,因为好像看上去也是第一次加载的时候慢) 增加 css 文件大小 编码成本及维护(展示不直观,目前需手动转换,我暂时不知道自动替换之类的插件) 之前有看到过篇测评说性能上比 sprite 微弱一些,一时间找不到链接
  综合起来,data URI可以使用在
  * 图片尺寸很小,使用一条 http 请求有点浪费,如渐变背景框
  * 图片在全站大规模使用,且很少被更新的,如 loading 图
  在线转换工具 Encode Data URL image to data URI 更新 github 资源 sus 可转换 data URI 参考资料 MDN - data URIs icon fonts
  由于移动端设备拥有不同分辨率,PPI 等引起的问题, 常常需要针对不同屏幕分辨率来调整优化,如使用 @2x 图片, max-width 限制等。
  采用 css @font-face 用来显示 icon 也不失为一种好办法。
  因为 icon fonts (字体)是矢量图形,所以不受分辨率的影响,同时可以做到完美缩放;当然,也可使用在 WEB 端。
  优点 文件小 加载性能好 支持 css 样式 IE6/7 下也支持 缺点 样式限制,使用扁平化风格 移动端还存在不兼容问题 (兼容表,作者不详) 少量移动设备和 icon fonts 字符编码冲突 FF和 IE9 下跨域问题 性能问题 使用方法 制作字体文件
  可以利用字体工具手动制作 也可以利用在线工具自动生成 在 css 中引用,如下
  引入字体文件
  @font-face {font-family: 'iconfont';
1.

  src: url('iconfont.eot'); / IE9/


2.

  src: url('iconfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 
3.*/


4.

  url('iconfont.woff') format('woff'), / chrome、firefox /


5.

  url('iconfont.ttf') format('truetype'), /* chrome、firefox、opera、Safari, 
6.Android, iOS 4.2+*/


7.

  url('iconfont.svg#uxiconfont') format('svg'); / iOS 4.1- /


8.

  }

  再定义一个 icon-* 通配我们所有图标的共有 CSS 样式,
  [class^="icon-"], [class*=" icon-"] {
1.

  display: inline-block;


2.

  speak: none


3.

  font-family: "iconfont";


4.

  font-size: 16px;


5.

  line-height: 1;


6.

  font-style: normal;


7.

  /* 字体图标出现锯齿的问题: /


8.

  -webkit-font-smoothing: antialiased;


9.

  -moz-osx-font-smoothing: grayscale;


10.

  }

  最后是利用 :before 来注入每个 icon 对应的字体编码
  .icon-bell:before {
1.

  content: "003432";


2.

  }


3.

  .icon-search:before {


4.

  content: "003433";


5.

  }

相关文章
|
1月前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
48 3
|
19天前
|
消息中间件 前端开发 JavaScript
探索微前端架构:构建现代Web应用的新策略
本文探讨了微前端架构的概念、优势及实施策略,旨在解决传统单体应用难以快速迭代和团队协作的问题。微前端允许不同团队独立开发、部署应用的各部分,提升灵活性与可维护性。文中还讨论了技术栈灵活性、独立部署、团队自治等优势,并提出了定义清晰接口、使用Web组件、状态管理和样式隔离等实施策略。
|
1月前
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
|
1月前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
31 3
|
1月前
|
前端开发 JavaScript API
前端框架新探索:Svelte在构建高性能Web应用中的优势
【10月更文挑战第26天】近年来,前端技术飞速发展,Svelte凭借独特的编译时优化和简洁的API设计,成为构建高性能Web应用的优选。本文介绍Svelte的特点和优势,包括编译而非虚拟DOM、组件化开发、状态管理及响应式更新机制,并通过示例代码展示其使用方法。
45 2
|
2月前
|
人工智能 前端开发
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
|
2月前
|
存储 前端开发 JavaScript
从 Web 2.0 到 Web 3.0:前端开发的历史与未来
【10月更文挑战第4天】本文探讨了从 Web 2.0 到 Web 3.0 的前端开发演变过程。Web 2.0 时代,前端开发者从静态网页设计走向复杂交互,技术框架如 jQuery、React 和 Vue 带来了巨大的变革。而 Web 3.0 以区块链技术为核心,带来了去中心化的互联网体验,前端开发者面临与区块链交互、去中心化身份验证、分布式存储等新挑战。文章总结了 Web 2.0 和 Web 3.0 的核心区别,并为开发者提供了如何应对新技术的建议,帮助他们在新时代中掌握技能、设计更安全的用户体验。
58 0
从 Web 2.0 到 Web 3.0:前端开发的历史与未来
|
1月前
|
监控 前端开发 JavaScript
前端技术探索:构建高效、可维护的Web应用
【10月更文挑战第23天】前端技术探索:构建高效、可维护的Web应用
47 0
|
2月前
|
移动开发 前端开发 JavaScript
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
204 0
|
2月前
|
存储 安全 前端开发
在前端开发中需要考虑的常见web安全问题和攻击原理以及防范措施
在前端开发中需要考虑的常见web安全问题和攻击原理以及防范措施
182 0