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实现权限树的更新权限时的全选全消功能
Feb 17 Javascript
url地址自动加#号问题说明
Aug 21 Javascript
Javascript倒计时页面跳转实例小结
Sep 11 Javascript
深入理解Javascript中的循环优化
Nov 09 Javascript
javascript教程之不完整的继承(js原型链)
Jan 13 Javascript
JavaScript设计模式之单件模式介绍
Dec 28 Javascript
jQuery日历插件datepicker用法详解
Mar 03 Javascript
浅析JavaScript中作用域和作用域链
Dec 06 Javascript
原生JS中slice()方法和splice()区别
Mar 06 Javascript
react-navigation之动态修改title的内容
Sep 26 Javascript
JavaScript 点击触发复制功能实例详解
Nov 02 Javascript
微信小程序实现传递多个参数与事件处理
Aug 12 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
PHP URL参数获取方式的四种例子
2014/02/28 PHP
使用php语句将数据库*.sql文件导入数据库
2014/05/05 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
php格式化json函数示例代码
2016/05/12 PHP
php结合mysql与mysqli扩展处理事务的方法
2016/06/29 PHP
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
使用JavaScript switch case 另类写法
2010/03/14 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
早该知道的7个JavaScript技巧
2013/03/27 Javascript
动态改变div的z-index属性的简单实例
2013/08/08 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
2015/04/01 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
概述如何实现一个简单的浏览器端js模块加载器
2016/12/07 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
浅谈super-vuex使用体验
2018/06/25 Javascript
微信小程序开发之转发分享功能
2019/10/22 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
Vue看了就会的8个小技巧
2021/01/21 Vue.js
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
在Django中管理Users和Permissions以及Groups的方法
2015/07/23 Python
玩转python爬虫之cookie使用方法
2016/02/17 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
Python使用configparser库读取配置文件
2020/02/22 Python
CSS3 网页下拉菜单代码解释 中文翻译
2010/02/27 HTML / CSS
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
CSMA/CD介质访问控制协议
2015/11/17 面试题
交通安全横幅标语
2014/10/07 职场文书
作文评语怎么写
2014/12/25 职场文书
歌剧魅影观后感
2015/06/05 职场文书