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 相关文章推荐
一个可以显示阴历的JS代码
Mar 05 Javascript
jquery 图片轮换效果
Jul 29 Javascript
表单验证插件Validation应用的实例讲解
Oct 10 Javascript
Bootstrap中CSS的使用方法
Feb 17 Javascript
js面向对象的写法
Feb 19 Javascript
深入浅析javascript中的作用域(推荐)
Jul 19 Javascript
JavaScript实现的选择排序算法实例分析
Apr 14 Javascript
详解vuex 中的 state 在组件中如何监听
May 23 Javascript
node.js基于socket.io快速实现一个实时通讯应用
Apr 23 Javascript
vue3.0中使用postcss-pxtorem的具体方法
Nov 20 Javascript
JavaScript数组去重实现方法小结
Jan 17 Javascript
Vue+Bootstrap实现简易学生管理系统
Feb 09 Vue.js
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中使用excel的简单介绍
2013/08/02 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
php组合排序简单实现方法
2016/10/15 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
Jquery选择器 $实现原理
2009/12/02 Javascript
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
JavaScript数值千分位格式化的两种简单实现方法
2016/08/01 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
2016/08/11 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
原生js编写焦点图效果
2016/12/08 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
webpack中的热刷新与热加载的区别
2018/04/09 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
微信小程序实现下滑到底部自动翻页功能
2020/03/07 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
Python中logging模块的用法实例
2014/09/29 Python
用Python给文本创立向量空间模型的教程
2015/04/23 Python
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
Python使用time模块实现指定时间触发器示例
2017/05/18 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
django 微信网页授权认证api的步骤详解
2019/07/30 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
会计毕业生求职简历的自我评价
2013/10/20 职场文书
毕业生自荐书
2014/02/02 职场文书
给校长的建议书500字
2014/05/15 职场文书
医学求职信
2014/05/28 职场文书
拔河比赛口号
2014/06/10 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书