花了一个礼拜完成了慕课网定制的七夕主题效果,其中有一个没实现好的功能,就是雪碧图的自适应缩放

ps: 以下实现都是基于移动端的处理

原图如下: 人物是采用的是雪碧图,通过坐标绝对数据取值

问题很明显,在缩放的屏幕上人物还是按照原尺寸大小显示

后来临时留了一节预备的方案:CSS3的scale处理直接可以让元素缩放

通过一个缩放的算放控制scale从而让雪碧图的元素可以缩放,目测还是不错。

但是这会带一系列的计算问题,因为通过sacle缩放后的元素,在浏览器布局中还是按照原尺寸计算的,所以这样的方案我也是非常的不满意

雪碧图常规的方案一般会做几套不同大小的图去适应不同的设备尺寸

这里我特指移动端单图的处理,采用的技术很简单CSS3一些知识点

先看看原图与处理后的效果

    

来讲解下原理,说白了很简单

先观察下矩阵的排量如上是行3 竖3 所以矩阵就是3*3的排列,但是这里只有8张图,怎么处理之后会讲

一般想让背景图填充整个元素在css3中可以通过background-size:100% 100%处理

显然不能让整图去填充元素,整图填充一个元素就是这效果

如何让单图填充一个元素呢? 这里我想到了一个办法,把整图整体缩放,额,就是整体缩放。。。

3*3的矩阵,我横竖按照矩形的数量比缩放100%

background-size: 300% 300%;

这才是最关键的一步,这样单个元素显示一张图

到了这一步估计大家都猜出来了,很简单了,通过百分比去取图了

至于精灵动画实现的手段太多了,比如定时器的帧动画,CSS3的animation动画,canvas动画

说真的所有的方案我都实现过,包括在移动端上线测试等等

目前最为理想的就是通过CSS3关键帧处理动画,如果动画多写一堆的样式就是一个蛋疼的事

所以这里我建议可以采用脚本生成关键帧,通过内联style加载,哈哈~~~ 非常完美~

刚刚提到了如果3*3的矩阵,但是总数不到9个要如何处理?

所以这里我提供一个关键帧的算法给大家参考下,比较简单

这是我项目中的用了,为了便于大家理解,我做了一个简单的

大家如果有兴趣可以连接到github,顺手踩一踩Followers下,感谢~~

github连接 : https://github.com/JsAaron/some-demo/tree/master/sprite-adaptive

原创:CSS3技术-雪碧图自适应缩放与精灵动画方案相关推荐

  1. CSS3实现雪碧图动画

    注意几点(以下示例): 雪碧图: 由22张图片拼成的,雪碧图的宽度是设置动画元素的22倍 关键帧设置: @keyframes test_anim{     0%{ background-positio ...

  2. 使用css3实现雪碧图帧动画

    背景: 此需求是在html界面实现,纯原生,没有像vue生命周期那些东西. 场景: 一个单纯的图片背景,想要在上面加个动图.一瞬间脑子里想到两个方案: 一:最省前端功夫的:ui压缩一个gif图出来 二 ...

  3. css3帧(雪碧图)动画实现

    所谓雪碧图就是一张图,包含了很多小图,可以通过这些小图实现一个动作,如下是一张雪碧图,我们可以通过CSS的animation来设置背景图片的位置,呈现出一种动态效果. 代码实现 .test{ // 务 ...

  4. CSS 网站小图标 雪碧图

    https://www.jianshu.com/p/7482dde882af 网站开发90%会用到小图标, 多小图标调用显示是前端开发常见的问题:目前小图标显示常见有两种方式(其他方式欢迎补充):1. ...

  5. 使用雪碧图Css Sprite精灵 | 加速网页响应速度

    什么是CSS Sprite精灵? 是用于前端的一种图片应用技术,通常情况,我们的开发的网页或许有很多张图片,假如在一个页面上有50多张小图片,这意味着浏览器要逐个下载50张图片.Css Sprite它 ...

  6. CSS3—雪碧图和滑动门

    一.CSS Sprite(雪碧图) CSS Sprite也叫CSS精灵.CSS雪碧图,是一种网页图片应用处理方式.它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时, ...

  7. css雪碧图动画,CSS3动画——雪碧图的实现

    前言 作为一个前端的初学者,现在好像已经在nodejs上越跑越偏,之前一直崇拜的CSS3和HTML5动画,如今也好久没有管.因为之前学了好多知识点,但是没有系统的进行总结,就从这篇文章开始,对一些碎片 ...

  8. 关于rem布局以及sprit雪碧图的移动端自适应

    一.简介 早在仁医医疗科技的工作的时候因为要开发微信服务号就接触过rem布局适配移动端.不过当时也是半摸索状态,实际做出来的效果也还不错.基本能适配大部分移动屏幕,而且方法原理也不难理解.但是后面一段 ...

  9. CSS Sprites的原理(图片整合技术)(CSS精灵)/雪碧图

    CSS Sprites的原理(图片整合技术)(CSS精灵)/雪碧图   一.将导航背景图片,按钮背景图片等有规则的合并成一张背景图,即将多张图片合为一张整图,然后用background-positio ...

最新文章

  1. CVPR 2020几篇论文内容点评:目标检测跟踪,人脸表情识别,姿态估计,实例分割等
  2. 避免成为调包侠,从数学角度再看深度学习
  3. lol游戏挂机软件_LOL出手整治,大量玩家被封10年,代练屡禁不止的原因找到了...
  4. java每日小算法(22)
  5. HZOJ 赤(CF739E Gosha is hunting)
  6. 验证视图状态 MAC 失败的解决办法
  7. Could not find a suitable table factory for ‘org.apache.flink.table.factories.CatalogFactory‘
  8. python实例 89,90
  9. 美化UI合约区块链学习版系统+交易大厅
  10. unity linux桌面环境,现在仍然可以在Ubuntu 20.04上安装Unity桌面环境
  11. 中文分词的python实现----HMM、FMM
  12. 号称最安全的Mega网盘加密方法分析
  13. import cv2 失败“找不到指定模块”解决办法
  14. 个人项目----吴华文
  15. asd激光粒度仪测试原理是什么解答
  16. Learning to rank 小结
  17. 第三天python作业题
  18. 操作系统---fork函数解析与例题详解
  19. DSP28335通过FFT变换实现高频滤波
  20. 【MacBookPro M1 安装Docker】

热门文章

  1. 统计学习方法c++实现之二 k近邻法
  2. Tomcat学习--源码导入和运行
  3. 智慧城市要让市民有获得感
  4. WEB测试到移动测试的转换
  5. Kafka和Unix管道的示例
  6. CentOS 下无线网卡的安装和使用
  7. MT艾宾浩斯背单词(附带主程序)
  8. 问题六十四:怎么用C++实现二叉查找树(binary search tree)及其相关操作
  9. 在用ganglia时出现You don‘t have permission to access ganglia on this server
  10. 企业数据可视化的优势