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 相关文章推荐
Jquery中删除元素的实现代码
Dec 29 Javascript
javascript自然分类法算法实现代码
Oct 11 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
Dec 19 Javascript
JavaScript实现梯形乘法表的方法
Apr 25 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
Jun 27 Javascript
jQuery通过ajax快速批量提交表单数据
Oct 25 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
Nov 30 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
Jul 07 Javascript
使用JS编写的随机抽取号码的小程序
Aug 11 Javascript
简单谈谈js的数据类型
Sep 25 Javascript
使用react实现手机号的数据同步显示功能的示例代码
Apr 03 Javascript
实例分析Array.from(arr)与[...arr]到底有何不同
Apr 09 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管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
解决tp5在nginx下修改配置访问的问题
2019/10/16 PHP
PHP网站常见安全漏洞,及相应防范措施总结
2021/03/01 PHP
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
原生js实现焦点轮播图效果
2017/01/12 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
javascript闭包功能与用法实例分析
2017/04/06 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
React中使用async validator进行表单验证的实例代码
2018/08/17 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
如何通过JS实现转码与解码
2020/02/21 Javascript
Python运用于数据分析的简单教程
2015/03/27 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
django admin 后台实现三级联动的示例代码
2018/06/22 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
django使用JWT保存用户登录信息
2020/04/22 Python
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
台湾森森购物网:U-mall
2017/10/16 全球购物
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
《和我们一样享受春天》教学反思
2014/02/07 职场文书
教学个人的自我评价分享
2014/02/16 职场文书
挂职学习心得体会
2014/09/09 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python
JS实现扫雷项目总结
2021/05/19 Javascript
修改并编译golang源码的操作步骤
2021/07/25 Golang