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 相关文章推荐
FF IE兼容性的修改小结
Sep 02 Javascript
javascripit实现密码强度检测代码分享
Dec 12 Javascript
JavaScript避免内存泄露及内存管理技巧
Sep 05 Javascript
node.js中的querystring.parse方法使用说明
Dec 10 Javascript
javascript下拉框选项单击事件的例子分享
Mar 04 Javascript
JS触发服务器控件的单击事件(详解)
Aug 06 Javascript
浅谈JS函数定义方式的区别
Oct 30 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
Dec 05 Javascript
Angular2.js实现表单验证详解
Jun 23 Javascript
基于Bootstrap表单验证功能
Nov 17 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
Mar 12 Javascript
初试vue-cli使用HBuilderx打包app的坑
Jul 17 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
探讨:parse url解析URL,返回其组成部分
2013/06/14 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
JavaScript去掉空格的方法集合
2010/12/28 Javascript
Javascript中Event属性搜集整理
2013/09/17 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
jQuery自制提示框tooltip改进版
2016/08/01 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
js仿网易表单及时验证功能
2017/03/07 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
Javascript实现秒表倒计时功能
2018/11/17 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
python根据京东商品url获取产品价格
2015/08/09 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
Python 硬币兑换问题
2019/07/29 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
平面设计的岗位职责
2013/11/08 职场文书
2014年教研活动总结范文
2014/04/26 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
开平碉楼导游词
2015/02/06 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
高一语文教学反思
2016/02/16 职场文书
九年级化学教学反思
2016/02/22 职场文书
导游词之西安骊山
2019/12/03 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS