Css雪碧图
Css雪碧图: CSS雪碧 即CSS Sprite,也有人叫它CSS精灵,是一种CSS图像合并技术,该方法是将小图标和背景图像合并到一张图片上,然后利用css的背景定位来显示需要显示的图片部分。
原理:CSS雪碧的基本原理是把你的网站上用到的一些图片整合到一张单独的图片中,从而减少你的网站的HTTP请求数量。该图片使用CSS background和background-position属性渲染,这也就意味着你的标签变得更加复杂了,图片是在CSS中定义,而非<img>标签。
如何生成雪碧图?
- 安装gulp插件: npm install –g gulp
- 安装制作雪碧图需要的插件 npm install –g gulp.spritesmith
最好全局和本地各装一遍;
新建一个Gulpfile.js文件,将下列代码放进去:
var gulp=require('gulp'); //引入这两个gulp gulp.spritesmith
spritesmith=require('gulp.spritesmith'); gulp.task('default',function(){ //新建名为sprite的任务
gulp.src('images/*.png') //需要合成的图片路径 *为通配符 表示这个文件夹下面所有后缀为.png的文件都会被应用
.pipe(spritesmith({
imgName:'sprite.png',//合成后需要保存图片的路径
cssName:'sprite.css', //合成后需要保存的css的路径
padding:5, //表示两个图片间的空隙
algorithm:'binary-tree', // Algorithm 有四个可选值分别为top-down、left-right、diagonal、alt-diagonal、binary-tree
// cssTemplate:'dist/handlebarsStr.css' //生成的css模板文件,可以是函数也可以是字符串
}))
.pipe(gulp.dest('dist/')) //将生成的文件放到dist文件夹下
})
或者:
进入项目 npm init 输入需要的信息,创建一个package.json文件:
{
"name": "package.json",
"version": "1.0.0",
"description": "",
"main": "Gulpfile.js",
"dependencies": {
"gulp": "^3.9.1",
"gulp.spritesmith": "^6.5.1"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
这里提几点需要注意的:
需要一个Gulpfile.js(首字母小写也可以) ,运行时执行 gulp default(defaullt是你新建的任务名,不是固定的,你写成其他也行)
imgName:'sprite.png',//合成后需要保存图片的路径
cssName:'sprite.css',
这两个文件需要你先创建,里面的文件都要预先创建;
我这里是放在dist下面就要在dis下面创建这两个文件
合成的雪碧图;

css样式:
.icon-1 {
background-image: url(sprite.png);
background-position: 0px 0px;
width: 33px;
height: 33px;
}
.icon-2 {
background-image: url(sprite.png);
background-position: -38px 0px;
width: 33px;
height: 33px;
}
.icon-3 {
background-image: url(sprite.png);
background-position: 0px -38px;
width: 33px;
height: 33px;
}
.icon-4 {
background-image: url(sprite.png);
background-position: -38px -38px;
width: 33px;
height: 33px;
}
.icon-5 {
background-image: url(sprite.png);
background-position: -76px 0px;
width: 33px;
height: 33px;
}
.icon-6 {
background-image: url(sprite.png);
background-position: -76px -38px;
width: 33px;
height: 33px;
}
.icon-7 {
background-image: url(sprite.png);
background-position: 0px -76px;
width: 33px;
height: 33px;
}
algorithm:四个参数只是决定图片的排列顺序;
top-down:

具体的参数可以看这里:

好了,雪碧图就合成啦;
下面会讲讲如何使用雪碧图;
创建一个文件:index.html
引入生成的css
<link rel="stylesheet" type="text/css" href="./dist/sprite.css" />
写基本架构:class="icon-1" 这里是css里生成的样式名;按顺序写好就行;
<ul class="sprite">
<li>
<s class="icon-1"></s>
<a href="">衣服</a>
</li>
<li>
<s class="icon-2"></s>
<a href="">鞋子</a>
</li>
<li>
<s class="icon-3"></s>
<a href="">背包</a>
</li>
<li>
<s class="icon-4"></s>
<a href="">双肩包</a>
</li>
<li>
<s class="icon-5"></s>
<a href="">裤子</a>
</li>
<li>
<s class="icon-6"></s>
<a href="">羽绒服</a>
</li>
<li>
<s class="icon-7"></s>
<a href="">外套</a>
</li>
</ul>
给他们新增加一些样式:
<style>
ul {
list-style: none;
margin: 0;
padding: 0;
} .sprite {
margin: 10px auto;
width: 206px;
border: 1px solid #b51600;
} .sprite li {
cursor: pointer;
height: 42px;
width: 206px;
background-color: #b51600;
border-bottom: 1px solid #911001;
border-top: 1px solid #c11e08;
} .sprite li a {
color: #fff;
line-height: 42px;
font-size: 14px;
}
效果就是这样:

引入了css文件,class也改动了,怎么没有图标呢?

生成的css文件里面就告诉你了,让标签dispay:block;
.sprite li s{
display: inline-block;
margin-left: 10px;
margin-right: 8px;
}
看看效果:

Css雪碧图的更多相关文章
- 使用compass自动合并css雪碧图(css sprite)
本文转载自: 使用compass自动合并css雪碧图(css sprite)
- 前端优化:css雪碧图实践应用详解
一 为什么需要使用雪碧图 二CSS雪碧图原理及应用 前端是接近用户体验的一个项目组成部分,合适的优化能够大大减少网页响应时间,合理的资源加载自然成为了工作中的要务,现在就结合实例讲解到底什么是css雪 ...
- CSS Sprite、CSS雪碧图应用实例
CSS Sprites技术被国内一些人称为CSS雪碧图,其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”, ...
- CSS雪碧图(精灵图)使用
1:CSS雪碧图:CSS雪碧图 即 CSS Sprites,也有人叫它CSS精灵图. 2:雪碧图的由来:一个网站的页面需要大量的小图片或者小图标,但是大量的图片如果放在服务器上,每次当打开网站并且向服 ...
- css雪碧图实现数字切换
vue中 css 雪碧图应用及数字切换demo 1. CSS Sprites一般只能使用到固定大小的盒子(box)里,这样才能够遮挡住不应该看到的部分. 2.使用css雪碧图的优点: 利用CSS Sp ...
- css雪碧图(精灵图)与字体图标的介绍以及对比
css雪碧图(精灵图)与字体图标的介绍以及对比 设想一个实际场景:在一个页面为了展示,我们放置了很多独立的小图片,浏览器在显示页面的时候,就需要向服务器就会发送很多请求,来获取并加载这些小图片,但是这 ...
- css sprite,css雪碧图生成工具V3.0更新
V3.0主要改进 1.增加了单独添加单张图片以及删除单张图片的功能 2.增加了生成.sprite文件用以保存雪碧图信息 3.增加了打开.sprite文件功能 什么是css sprite CSS spr ...
- css 雪碧图 及jquery定位代码
无意间发现了一个很神奇的事情,就是 鼠标悬停在图片上方会切换,起初以为图标是单独插入的.但发现居然是一张完整的图片. 一万只草泥马在心中奔腾.这是怎么实现的? 后来询问得知,这是css精灵技术(spr ...
- CSS雪碧图自动生成软件
下载地址 http://www.99css.com/1524/ 包含详细的下载地址.下载步骤以及使用教程 亮点:自动合成雪碧图+自动生成雪碧图background-position代码 简单过程 下载 ...
随机推荐
- 视频流GPU解码在ffempg的实现(一)-基本概念
这段时间在实现Gpu的视频流解码,遇到了很多的问题. 得到了阿里视频处理专家蔡鼎老师以及英伟达开发季光老师的指导,在这里表示感谢! 基本命令(linux下) 1.查看物理显卡 lspci | grep ...
- 为什么很多第三方接口,都改成了基于http,直接传递json数据的方式来代替webservice?
这实际上是三个问题,从WebService到今天流行的RESTful API(JSON) over HTTP,经历了数次变革 1 WebService有很多协议,为什么HTTP比较流行? WebSer ...
- PE格式详解讲解1
这篇文章主要转载自小甲鱼的加密解密部分,然后补充加上我自己的少许内容,原文地址–>传送门 下面的内容主要是围绕这个图来进行 MS-DOS头部 这个头部是为了兼容早期的DOS系统,PE文件的第一个 ...
- 读汤姆大叔《JavaScript变量对象》笔记
一段简单的JavaScript代码思考 先看一段简单的代码,打印结果是??为什么why?? 从上述打印结果不难看出,在打印基本变量num.函数表达式fn.函数声明fun时,就已经知道变量num.函数表 ...
- 实体处理模块IEntityModule
在2015年7月16日,XCode新增了实体处理模块IEntityModule,用于拦截实体对象添删改操作. 该接口参考IHttpModule设计理念,横切在实体对象的关键生命周期之中,以达到多实体类 ...
- 手把手教你用Vue造轮子(3):开发可排序的表格组件
前言 最近闰土大叔跟Vue干上了,没办法,公司业务驱动,不用Vue没招啊,leader尝到了前后端分离带来的好处,除非你离职,哈哈哈,当然,那是不可能的,对于我这种要攒钱买房子的人来说.那还说什么呢, ...
- 《SpringMVC从入门到放肆》二、SpringMVC的执行流程及默认配置
上一篇博文我们做了一个hello world的程序,并且已经成功的跑起来了.这一篇我们来深入的了解一下SpringMVC的执行流程以及一些其它的配置. 一.执行流程 来解释一下上图中的各个名词1.Di ...
- [Link-Cut-Tree]【学习笔记】
可以按照<Utopiosphere>的调唱出来 “Link-Cut ,Time doesn’t stop .Prepare your doubts ,Eat them up” 参考资料: ...
- 枚举 输入流重载>> C++
语言:C++ 我们可能会遇到这种情况:自己定义了一个枚举类型,但是却不知道如何重载输入流,使我们定义的枚举用起来不是很方便. 那么,如何去重载呢,我们先来看一下内置类型的测试过程: #include& ...
- 2017ecjtu-summer training #2 POJ2503
...