雪碧图的魔力:优化CSS动画场景
什么是雪碧图
雪碧图(CSS Sprites),是一种网页图像处理技术,它将多个小图标或图像合并成一个大的图像文件。这种方法允许浏览器通过一次HTTP请求加载多个图像,而不是为每个小图标单独发起请求。雪碧图通常用于网页设计中的图标、按钮和其他装饰性元素。
雪碧图其优点主要体现在:
1. 减少HTTP请求,提高页面性能,优化用户体验
2. 简化CSS代码,易于实现动画效果,兼容性和响应式设计
3. 减少服务器负载,并且浏览器可以更高效的缓存它
雪碧图制作工具
推荐gka 动画生成工具 使用简单,文档清晰,且不像一般雪碧图在线生成一样具有上传文件数量限制 gka官方文档
使用条件:本地安装node
应用案例
将UI给出的多个帧图片合成为一个雪碧图,并通过CSS关键帧的方式实现动画

操作步骤
1. 首先安装gka
npm i gka -g
2. 运行gka,将指定目录下的文件制作为雪碧图
gka dir [options]
个人目前用到最多的配置是 -ums u: 相同图片复用优化 m: 图片压缩 s: 合图优化
3. 等待命令执行完成,查看生成结果


可以看到被合成到一起的雪碧图

index.html
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0,maximum-scale=1">
<script name='gkaRibbon'>document.addEventListener('DOMContentLoaded',function(){var d=document.createElement('div');d.innerHTML='<div style="position: fixed; bottom: 10px;">Powered By <a target="_blank" href="https://github.com/gkajs/gka">gka 2.8.7</a></div>';document.body.appendChild(d)});</script>
<title>gka-preview</title>
<link href="./gka.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="gka-wrap">
<div id="gka"></div>
</div>
<script>
function preloadImage(names, cb, prefix){
window.gkaCache = window.gkaCache || [];
var n = 0,img,imgs = {};
names.forEach(function(name) {
img = new Image();
window.gkaCache.push(img);
img.onload = (function(name, img) {
return function() {
imgs[name] = img;
(++n === names.length) && cb && cb(imgs);
}
})(name, img);
img.src = (prefix || '') + name;
});
}
preloadImage(["sprites.png"], function() {
document.getElementById('gka').className += " animation"
}, "img/")
</script>
</body>
</html>
gka.css
.gka-wrap {
width: 1000px;
height: 1000px;
}
.animation {
width: 1000px;
height: 1000px;
background-image: url("./img/sprites.png");
background-size: 232000px 1000px;
background-repeat: no-repeat;
animation-name: keyframes-Loading;
animation-duration: 10.68s;
animation-delay: 0s;
animation-iteration-count: infinite;
animation-fill-mode: forwards;
animation-timing-function: steps(1);
}
@keyframes keyframes-Loading {
0% {
width: 1000px;
height: 1000px;
background-image: url("./img/sprites.png");
background-size: 232000px 1000px;
}
0.37% {
background-position: -1000px 0px;
}
0.75% {
background-position: -2000px 0px;
}
1.12% {
background-position: -3000px 0px;
}
// ...
99.25% {
background-position: -230000px 0px;
}
99.63%,
100% {
background-position: -231000px 0px;
}
}
雪碧图的魔力:优化CSS动画场景的更多相关文章
- 原创:CSS3技术-雪碧图自适应缩放与精灵动画方案
花了一个礼拜完成了慕课网定制的七夕主题效果,其中有一个没实现好的功能,就是雪碧图的自适应缩放 ps: 以下实现都是基于移动端的处理 原图如下: 人物是采用的是雪碧图,通过坐标绝对数据取值 问题很明显, ...
- css雪碧图(精灵图)与字体图标的介绍以及对比
css雪碧图(精灵图)与字体图标的介绍以及对比 设想一个实际场景:在一个页面为了展示,我们放置了很多独立的小图片,浏览器在显示页面的时候,就需要向服务器就会发送很多请求,来获取并加载这些小图片,但是这 ...
- 使用雪碧图Css Sprite精灵 | 加速网页响应速度
什么是CSS Sprite精灵? 是用于前端的一种图片应用技术,通常情况,我们的开发的网页或许有很多张图片,假如在一个页面上有50多张小图片,这意味着浏览器要逐个下载50张图片.Css Sprite它 ...
- 关于css雪碧图sprite
天气转凉了,又开始贪恋暖暖的被窝了. 早上不想起床的时候在被窝里看了有关于雪碧图的视频. 1.使用场景 V导航条,登录框img标签多次载入,性能低 X大图banner按需加载,如果做成雪碧图一次加载就 ...
- 前端工程师技能之photoshop巧用系列第五篇——雪碧图
× 目录 [1]定义 [2]应用场景 [3]合并[4]实现[5]维护 前面的话 前面已经介绍过,描述性图片最终要合并为雪碧图.本文是photoshop巧用系列第五篇——雪碧图 定义 css雪碧图(sp ...
- 移动端rem布局雪碧图解决方案 以及分享腾讯团队的在线雪碧图工具
先分享一下地址:http://alloyteam.github.io/gopng/ 使用的方法也很简单,将需要的小图标拖进去,全部拖进去后再调位置(每拖一个进去都会帮你排列好,但是没有间隔,所以全部拖 ...
- Vue-cli3.0下的雪碧图插件webpack-spritesmith配置方法
在前端项目中,为了减少对图片的请求次数,一般而言需要进行雪碧图的配置.即将多张小图标合并成一张图片,这样页面中的小图标都在一张图片上,只需请求一张图片,就可以通过CSS设置各个小图标的显示,利于节省带 ...
- 响应式下的雪碧图解决方案 - 活用background-size / background-position
一.概述 在传统的居中布局时,我们常用background-position这个属性来进行雪碧图的定位,在减少数据量的同时,保证准确定位.在移动端使用越来越重的现在,以往的传统定位,已经无法达到目的, ...
- 前端优化:css雪碧图实践应用详解
一 为什么需要使用雪碧图 二CSS雪碧图原理及应用 前端是接近用户体验的一个项目组成部分,合适的优化能够大大减少网页响应时间,合理的资源加载自然成为了工作中的要务,现在就结合实例讲解到底什么是css雪 ...
- CSS3与页面布局学习笔记(五)——Web Font与CSS Sprites(又称CSS精灵、雪碧图)技术
一.web font web font是应用在web中的一种字体技术,在CSS中使用font-face定义新的字体.先了解操作系统中的字体: a).安装好操作系统后,会默认安装一些字体,这些字体文件描 ...
随机推荐
- JavaScript Library – Alpine.js
前言 Alpine 是高山的意思.Alpine.js 是一个轻量级的 JS Framework. 我为什么会去用它呢? 是这样的,我在做企业网站开发的时候会有 2 个阶段. 第一个 draft 阶段, ...
- Asp.net core 学习笔记 dotnet & azure 常用 command
更新: 2021-08-26 最近试了一下 vs 2022 结果 .net cli 也自动升级到 .net 6 preview 版本, 害我 dotnet new 的时候出来一个 .net 6 tem ...
- vsphere8.0 VCenter部署
一.vCenter Server 介绍 vCenter Server是VMware提供的一种集中管理平台,用于管理和监控虚拟化环境中的虚拟机.主机.存储和网络等资源.它提供了一套功能强大的工具和界面, ...
- USB2.0 DP DM VBUS
在USB 2.0中,设备成功枚举的标志可以通过观察 D+ (dp).D- (dm) 和 VBUS 引脚的电压波形来判断.以下是这些信号在USB 2.0枚举过程中常见的状态: VBUS (5V供电): ...
- 2024年5月中国数据库排行榜:OP持续领跑,GoldenDB稳步上升进前八
入夏时节,2024年5月的中国流行度排行榜排行榜如期发布.在这个骄阳似火的季节,各大数据库产品之间的竞争愈发激烈,名次间的细微变动展示了市场的动态和活力.各家厂商不断创新,通过技术升级和性能优化,力求 ...
- Vmware挂载san存储_vSphere 6.x 共享存储LUN丢失分区表修复(精华)
Vmware挂载san存储_vSphere 6.x 共享存储LUN丢失分区表修复 炎炎夏夜客户机房空调意外故障,前端ESXI物理服务器由于温度过高都自保关机,存储和SAN没有自保关机.上班修复空调后, ...
- 使用Pydantic和SqlAlchemy实现树形列表数据(自引用表关系)的处理,以及递归方式处理数据差异
在我的设计框架业务中,字典大类.部门机构.系统菜单等这些表,都存在id.pid的字段,主要是作为自引用关系,实现树形列表数据的处理的,因为这样可以实现无限层级的树形列表.在实际使用Pydantic和S ...
- 干货收藏!Calico 路由反射模式权威指南
1. 概述 作为 Kubernetes 最长使用的一种网络插件,Calico 具有很强的扩展性,较优的资源利用和较少的依赖,相较于 Flannel 插件采用 Overlay 的网络,Calico 可以 ...
- Machine Learning Week_5 Cost Function and BackPropagation
目录 0 Neural Networks: Learning 1 Cost Function and BackPropagation 1.1 Cost Function 1.2 Backpropaga ...
- Stream流,集合与基本数组的相互转换
Arrays类的Api stream()方法传入数组,返回对应的stream流. Collection集合的Api: stream()不传参数,返回Stream流. 有了上述Api可以完成如下转换.. ...