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 相关文章推荐
关于JavaScript的gzip静态压缩方法
Jan 05 Javascript
比Jquery的document.ready更快的方法
Apr 28 Javascript
Jquery实现视频播放页面的关灯开灯效果
May 27 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
Sep 03 Javascript
基于Javascript倒计时效果
Dec 22 Javascript
Vue计算属性的学习笔记
Mar 22 Javascript
详解如何在vue中使用sass
Jun 21 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
Sep 22 jQuery
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
Nov 20 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
Apr 17 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
Aug 13 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
Oct 23 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
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
javascript StringBuilder类实现
2008/12/22 Javascript
一个js写的日历(代码部分网摘)
2009/09/20 Javascript
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
asp.net+js 实现无刷新上传解析csv文件的代码
2010/05/17 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
使用正则表达式的格式化与高亮显示json字符串
2014/12/03 Javascript
javascript框架设计之框架分类及主要功能
2015/06/23 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
BootStrap modal模态弹窗使用小结
2016/10/26 Javascript
nodejs和php实现图片访问实时处理
2017/01/05 NodeJs
js replace 全局替换的操作方法
2018/06/12 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
python基础教程之自定义函数介绍
2014/08/29 Python
Python中的类学习笔记
2014/09/23 Python
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
详解Python 装饰器执行顺序迷思
2018/08/08 Python
详解Python连接MySQL数据库的多种方式
2019/04/16 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
Python descriptor(描述符)的实现
2020/11/15 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
网络安全方面的面试题
2015/11/04 面试题
大学生实习期自我评价范文
2013/10/03 职场文书
电子专业毕业生自我鉴定
2014/01/22 职场文书
学生安全责任书
2014/04/15 职场文书
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
单位考核鉴定意见
2015/06/05 职场文书
消费者投诉书范文
2015/07/02 职场文书
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server