利用CSS sprites制作随着鼠标移动的动画背景

2022-02-03 0 877

网页设计中的背景图是至关重要的,在之前的文章《网页设计中的背景创意和发展趋势》也有为大家分享过网页设计中关于背景的设计以及发展趋势,一个优秀的背景图可以为你的网站增添不少的精彩。在浩大的互联网中,各种创意层出不穷,也许你在一些网站上看到的背景会随着鼠标的移动而移动,这是非常充满创意而且有趣的设计,你认为呢?今天就为大家分享下如何制作一个随着鼠标移动的动画背景效果。

在开始制作动画背景效果前,先为大家介绍下CSS sprites,中文名为:CSS雪碧或者CSS精灵。它是一种CSS图像合并技术,该方法是将小图标和背景图像合并到一张图片上,然后利用css的背景定位来显示需要显示的图片部分。这种技术的好处就是可以减少你的网站的HTTP请求数量,是通过使用CSS backgroundbackground-position属性来渲染的,也就是说是在css中定义的,并不适用于<img>标签。

CSS sprites示例

CSS雪碧的制作原理很简单,相信大家都知道,主要是制作一张背景图,图片里面包含aa:hovera:active各种状态下的图片,如果通过背景定位background-position来获取不同状态下相对应的图片。下面为示例:

一览众巅峰
CSS sprites demos, Make by:www.jiawin.com

制作动画背景解析与示例

之所以在上面为大家简单的介绍css雪碧,因为css雪碧不单单仅限于使用在图片上面,还可以结合jQuery来制作动画效果。在引入jQuery后,我们可以利用鼠标光标的位置,来确定不同的触发点,相对应的改变background-position的值,从而使图像发生动画。先来看看最终的效果,用鼠标在下面的图片上面来回移动就可以看到。

一览众巅峰

在开始之前,我们需要将连成动画的每一张图片(帧)连接起来制作成一张大的背景图。大家可以在一个视频中,按照一定的时间连续快速截取10张或者更多关键帧的图像,然后使用photoshop等图片处理工具把每张小图按照规定的顺序依次排列,最终输出一张大的背景图。示例:

利用CSS sprites制作随着鼠标移动的动画背景

图片制作完后,接下来我们就写出简单HTML代码:

<div class="box">  <a class="pic" href="http://www.jiawin.com" id="preview">一览众巅峰</a></div>

接下来,我们用jQuery为#preview添加样式:

$(document).ready(function() {    $(\'#preview\')        .css(\'display\', \'block\')        .css(\'width\', 500)        .css(\'height\', 203)        .css(\'background\', \'url("our-image.jpg") no-repeat\');});

最后,就是设置背景的定位,以便在鼠标移动不同位置的时候显示正确的图像。我们的图片框架为500px,显示第一帧是背景图像X轴的坐标应该是0px,第二帧时背景图像的X轴的坐标为-500px,第三帧的背景图像的X轴的坐标为-1000px,以此类推,大家都可以计算后面相对应的数值。
那我们怎么实现随着鼠标光标的移动,图像也相对应的移动呢?我们该怎么动态的设置background-position?其实我们可以使用mousemove的事件来处理这个功能的实现,具体代码如下:

.mousemove(function(e) {    var elementWidth = 500;    var mousePercent = (e.pageX - this.offsetLeft) / elementWidth;    var bgPosition = 0 - Math.floor((mousePercent * 5000) / elementWidth) * elementWidth;    $(this).css(\'background-position\', \'-\' + bgPosition + \'px 0px\');});

制作动画背景完整代码

以下是完整的代码:

<!DOCTYPE html><html lang="en"><head>    <meta charset="utf-8" />    <title>demo</title>    <script src="http://gapis.geekzu.org/ajax/ajax/libs/jquery/1.8/jquery.min.js" type="text/javascript"></script>    <script type="text/javascript">    $(document).ready(function() {        $(\'#preview\')        .css(\'display\', \'block\')        .css(\'width\', 500)        .css(\'height\', 203)        .css(\'background\', \'url("landscape.jpg") no-repeat\')        .mousemove(function(e) {            var elementWidth = 500;            var mousePercent = (e.pageX - this.offsetLeft) / elementWidth;            var bgPosition = 0 - Math.floor((mousePercent * 5000) / elementWidth) * elementWidth;            $(this).css(\'background-position\', bgPosition + \'px 0px\');        });    });    </script></head><body>    <a href="http://www.jiawin.com" id="preview">一览众巅峰</a></body></html>

总结

这个效果的实现原理其实很简单,但是这个方式实现的效果有点缺陷,假如动画的效果比较复杂,那么组成动画的帧数将会出现很多,这就意味着合成的大背景图将会非常大,是会影响页面的加载速度的,同时动画的流畅性也将会受到影响。当然这种技术,在手机移动设备上将不会有作用的,因为检测不到鼠标光标。最后,我们也必须承认css雪碧是一个简单然而却非常使用的一个技术手段。

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 前端教程 利用CSS sprites制作随着鼠标移动的动画背景 http://www.20zxx.cn/328345/xuexijiaocheng/qdjc.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务