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代码 简单过程 下载 ...
随机推荐
- iOS中的armv7,armv7s,arm64,i386,x86_64
前言 一般iOS中的armv7.armv7s.arm64.i386.x86_64这些都代表了什么?在Xcode中如何选择? 介绍 armv7.armv7s.arm64都是ARM处理器的指令集. i38 ...
- 6月22日项目CodeReview问题及总结
后台代码部分 1. 枚举类的使用:当定义的某个字段有多种状态值或表示值时,可以创建一个枚举类将所有状态表示出来,并供其他使用到该字段的方法统一调用.枚举类定义可参考 '/banking-dbbp-pr ...
- 使用腾讯云无服务器云函数(SCF)分析天气数据
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:李想 无服务器云函数(SCF)是腾讯云提供的Serverless执行环境,也是国内首款FaaS(Function as a Service ...
- javascript编码标准
前面的话 编码标准是有争议的.几乎每个人都有自己的标准,但对标准应该是什么样的,则似乎很少能达成共识.但编码标准意味着,通过共同语言和一致的结构,把开发人员从无意义的工作中解放出来.允许开发人员把创新 ...
- 浅谈Android的广告欢迎界面(倒计时)
前些时候就是别人问我他的android APP怎么做一个广告的欢迎界面,就是过几秒后自动跳转到主界面的实现. 也就是下面这种类似的效果.要插什么广告的话你就换张图吧. 那么我就思考了下,就用了andr ...
- 【Zookeeper】Zookeeper安装配置
本文演示使用三台Linux服务器安装Zookeeper,使用的是zookeeper-3.4.5版本,将zookeeper-3.4.5.tar.gz上传到linux服务器, 使用如下命令解压到/usr/ ...
- struts2中配置文件的调用顺序
1.default.properties 该文件保存在 struts2-core-2.3.7.jar 中 org.apache.struts2中 2.struts-default.xml 该文件保存在 ...
- springboot之集成mybatis mongo shiro druid redis jsp
闲来无事,研究一下spingboot 发现好多地方都不一样了,第一个就是官方默认不支持jsp 于是开始狂找资料 终于让我找到了 首先引入依赖如下: <!-- tomcat的支持.--> ...
- 跟我一起读postgresql源码(十一)——Executor(查询执行模块之——Materialization节点(上))
物化节点 顾名思义,物化节点是一类可缓存元组的节点.在执行过程中,很多扩展的物理操作符需要首先获取所有的元组后才能进行操作(例如聚集函数操作.没有索引辅助的排序等),这时要用物化节点将元组缓存起来.下 ...
- jQuery_serialize的用法
jQuery_serialize(form表单序列化)用于在前端要传很多值往后端的时候: <!DOCTYPE html> <html lang="en"> ...