首页 > 开发 > CSS > 正文

CSS Sprites雪碧图技术基础学习指南

2024-07-11 08:33:16
字体:
来源:转载
供稿:网友

引言
雪碧图被运用在众多使用了很多小图标的网站上。相对于把每张小图标以.png格式文件的形式引用到页面上,使用雪碧图只需要引用一张图片,对内存和带宽更加友好。

实现
假设我们通过.toolbtn的类,为应用该类的各元素提供一张背景图片:

CSS Code复制内容到剪贴板
  1. <style> .toolbtn {background:url(myfile.png); display:inline-block; height:20px; width:20px } </style>  

背景位置,可以通过在background的url()直接定义X,Y轴的值,或者通过background-position属性来添加。例如:

CSS Code复制内容到剪贴板
  1. <style>    #btn1 {background-position: -20px 0px}   
  2. #btn2 {background-position: -40px 0px}    </style>  

id=btn1的元素背景左移20px,id=btn2的元素背景左移40px(假设这两个元素的都添加了toolbtn类,应用了上面样式定义的图片效果)

类似的,你也可以使用下面的方式添加hover的状态:

CSS Code复制内容到剪贴板
  1. #btn:hover {background-position: [pixels shifted rightright]px [pixels shifted down]px;}  

CSS雪碧的基本原理是把你的网站上用到的一些图片整合到一张单独的图片中,从而减少你的网站的HTTP请求数量。该图片使用CSS background和background-position属性渲染(值得一提的是,这也就意味着你的标签变得更加复杂了,图片是在CSS中定义,而非<img>标签)。

使用css-sprite雪碧图工具
可能是最好用的雪碧图工具了,好吧,至少是我用过最好用的。

首先安装css-sprite,安装这里很坑,等我最后再说。


复制代码
代码如下:npm install css-sprite

我是使用gulp来构建前端代码,所以还需要安装gulp和gulp-if,安装好之后就可以开始配置啦。
新建一个task:

全选复制放进笔记var gulp = require('gulp');

JavaScript Code复制内容到剪贴板
  1. var gulpif = require('gulp-if');      
  2. gulp.task('sprites',function(){        gulp.src('img/icon/*.png')                  //这是要合并的图片的路径   
  3.         .pipe(sprite({                name: 'icon',                       //定义一个名称   
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表