jQuery实现圣诞节礼物动画案例解析


Posted in Javascript onDecember 25, 2016

大致介绍

下午看到了一个送圣诞礼物的小动画,正好要快到圣诞节了,就动手模仿并改进了一些小问题

原地址:jQuery实现花式轮播之圣诞节礼物传送效果      

思路:动画中一共有五个礼物,他们平均分布在屏幕中,设置最外边的两个礼物旋转一定的角度并隐藏,动画开始,每个礼物向右移动一定的位置,然后再把第五个礼物添加到第一个礼物之前,这样这五个礼物就重新排列了,在写jQ时只管礼物位置的变化就行了,因为礼物的旋转和隐藏在样式中都已经设置好了,某个礼物如果成为第一个礼物就会自动隐藏旋转

如果对其中的方法不熟悉的可以参考我写的jQuery学习之路,里面有讲解

 基本结构

 代码:

<div class="cr">
  <div class="cr-l"><img src="img/fatherCh.png" alt=""/></div>
  <div class="cr-icon">
   <div id="cr-icon">
    <img style="left:5%" src="img/gift2.png" alt=""/>
    <img style="left:25%" src="img/gift2.png" alt=""/>
    <img style="left:45%" src="img/gift2.png" alt=""/>
    <img style="left:65%" src="img/gift2.png" alt=""/>
    <img style="left:85%" src="img/gift2.png" alt=""/>
   </div>
  </div>
  <div class="cr-r"><img src="img/family.png" alt=""/></div>
 </div>

样式

在css中用到了:first 和 :last 属性,这两个属性是动态的,如果文档的结构变了,这两个属性的值也会相应的改变,这样我们就不必再麻烦的判断哪个元素是最后一个元素(第一个元素),直接用这两个属性就会自动选择第一个元素和最后一个元素

html, body {
   height: 100%;
   margin: 0;
   padding: 0;
      }
  .cr{
   width: 100%;
   position: relative;
   background: url("../img/bg.png") no-repeat 0 0;
   -webkit-background-size: 100% 100%;
   background-size: 100% 100%;
   overflow: hidden;
  }
  .cr-l,.cr-r{
   position: absolute;
   bottom:10%;
   width: 20.8%;
   height: 70%;
   z-index:100;
  }
  .cr-l img,.cr-r img{
   width: 100%;
   position: absolute;
   top:50%;
  }
  .cr-l{
   left: 0;
  }
  .cr-r{
   right:0;
  }
  .cr-icon{
   bottom: 15%;
   left:0;
   position: absolute;
   z-index: 1000;
   width: 100%;
   height: 70%;
   text-align: center;
  }
  .cr-icon img{
   margin-right: 25px;
   width: 10%;
   vertical-align: top;
   position: absolute;
   bottom: 0;
   opacity: 1;
   transform:rotate(0deg);
   transition: all 1s;
  }
  .cr-icon img:first-child{
   transform:rotate(-90deg);
   -webkit-transform:rotate(-90deg);
   opacity: 0;
   width: 0;
  }
  .cr-icon img:last-child{
   transform:rotate(90deg);
   -webkit-transform:rotate(90deg);
   opacity: 0;
   width: 0;
  }

 jQuery代码

在源码中,作者将这个五个礼物的初始位置写在了HTML结构中,我觉得不太好就在jQuery的代码中实现了,代码没有什么难的,就是对思路的实现

$(function() {
  // 点击礼物图片,切换图片
  $('#cr-icon img').click(function(){
   if($(this).attr('src') == 'img/gift2.png'){
    $(this).attr('src','img/gift.png');
   }else{
    $(this).attr('src','img/gift2.png');
   }
  });
  var timer = null;
  var oImg = $('#cr-icon img');
  var end = document.body.clientWidth;
  var height = document.body.scrollHeight;
  // 设置高
  $(".cr").css("height",height);
  // 设置图片的初始位置
  for(var i=0;i<oImg.length;i++){
   $(oImg[i]).css('left', 5+i*20+'%');
  }
  // 图片轮换函数
  function scrollLogo(){
   oImg.each(function(){
    var left = parseInt($(this).css('left'));
    left += end * 0.2;
    $(this).css('left',left);
   });
   $('#cr-icon img:last').insertBefore('#cr-icon img:first').css('left',end * 0.05);
  }
  scrollLogo();
  // 定时器,开始轮换
  timer = setInterval(scrollLogo,1800);
  // 鼠标移入清楚轮换
  oImg.mouseover(function(){
   clearInterval(timer);
  });
  // 鼠标移出开始轮换
  oImg.mouseleave(function() {
   timer = setInterval(scrollLogo,1800);
  });
 });

以上所述是小编给大家介绍的jQuery实现圣诞节礼物动画案例解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript Select标记中options操作方法集合
Oct 22 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
Mar 14 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
Apr 24 Javascript
javascript图片相似度算法实现 js实现直方图和向量算法
Jan 14 Javascript
node.js中的console.info方法使用说明
Dec 09 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
Sep 22 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
Apr 26 Javascript
AngularJS基础 ng-mouseover 指令简单示例
Aug 02 Javascript
基于jquery实现二级联动效果
Mar 30 jQuery
vue实现购物车小案例
Sep 27 Javascript
基于javascript的无缝滚动动画1
Aug 07 Javascript
javascript自定义加载loading效果
Sep 15 Javascript
AngularJS打开页面隐藏显示表达式用法示例
Dec 25 #Javascript
AngularJS开发教程之控制器之间的通信方法分析
Dec 25 #Javascript
使用jsonp实现跨域获取数据实例讲解
Dec 25 #Javascript
JavaScript中数据类型转换总结
Dec 25 #Javascript
javascript实现用户点击数量统计
Dec 25 #Javascript
jQuery扩展+xml实现表单验证功能的方法
Dec 25 #Javascript
js实现图片切换(动画版)
Dec 25 #Javascript
You might like
PHP 可阅读随机字符串代码
2010/05/26 PHP
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
php preg_match的匹配不同国家语言实例
2016/12/29 PHP
php中数组最简单的使用方法
2020/12/27 PHP
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
微信小程序 图片宽高自适应详解
2017/05/11 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
angularjs实现猜大小功能
2017/10/23 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
python获取list下标及其值的简单方法
2016/09/12 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
固特异美国在线轮胎店:Goodyear Tire
2019/02/23 全球购物
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
应届毕业生求职信范文
2014/07/07 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
励志演讲稿500字
2014/08/21 职场文书
材料物理专业求职信
2014/09/01 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书