jQuery实现圣诞节礼物传送(花式轮播)


Posted in Javascript onDecember 25, 2016

大致介绍

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

原地址:花式轮播----圣诞礼物传送

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

基本结构

代码:

<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);
 });
 });

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
利用JS重写Cognos右键菜单的实现代码
Apr 11 Javascript
基于jquery的button默认enter事件(回车事件)。
May 18 Javascript
Jquery中children与find之间的区别详细解析
Nov 29 Javascript
Visual Studio中js调试的方法图解
Jun 30 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
May 16 Javascript
jQuery Dialog 取消右上角删除按钮事件
Sep 07 Javascript
extjs简介_动力节点Java学院整理
Jul 17 Javascript
不使用 JS 匿名函数理由
Nov 17 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
Jan 16 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
Sep 26 Javascript
vue 中固定导航栏的实例代码
Nov 01 Javascript
关于javascript中的promise的用法和注意事项(推荐)
Jan 15 Javascript
js判断iframe中元素是否存在的实现代码
Dec 24 #Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
Dec 24 #Javascript
web 屏蔽BackSpace键实例代码
Dec 24 #Javascript
js实现的xml对象转json功能示例
Dec 24 #Javascript
jQuery实现的无缝广告图片左右滚动功能详解
Dec 24 #Javascript
浅析BootStrap中Modal(模态框)使用心得
Dec 24 #Javascript
纯JS实现表单验证实例
Dec 24 #Javascript
You might like
第十四节--命名空间
2006/11/16 PHP
PHP的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
2017/08/02 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
原生javascript实现图片按钮切换
2015/01/12 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
JQuery球队选择实例
2015/05/18 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
Dojo获取下拉框的文本和值实例代码
2016/05/27 Javascript
JavaScript仿微博输入框效果(案例分析)
2016/12/06 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
基于构造函数的五种继承方法小结
2017/07/27 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
python使用paramiko实现远程拷贝文件的方法
2016/04/18 Python
python实现汉诺塔递归算法经典案例
2021/03/01 Python
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
python 异或加密字符串的实例
2018/10/14 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
基于Tensorflow使用CPU而不用GPU问题的解决
2020/02/07 Python
全球知名鞋履品牌授权零售商:Journeys
2016/09/17 全球购物
香蕉共和国Banana Republic官网:美国GAP旗下偏贵族风格服饰品牌
2016/11/21 全球购物
幼儿园大班毕业教师寄语
2014/04/03 职场文书
学雷锋标语
2014/06/25 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
三八妇女节致辞
2015/07/31 职场文书
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server