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 相关文章推荐
判断控件是否已加载完成的代码
Feb 24 Javascript
For循环中分号隔开的3部分的执行顺序探讨
May 27 Javascript
JavaScript 获取任一float型小数点后两位的小数
Jun 30 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
Dec 17 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
Jan 28 Javascript
js判断子窗体是否关闭的方法
Aug 11 Javascript
JS中setTimeout的巧妙用法前端函数节流
Mar 24 Javascript
浅析JavaScript中命名空间namespace模式
Jun 22 Javascript
Angular中$cacheFactory的作用和用法实例详解
Aug 19 Javascript
令按钮悬浮在(手机)页面底部的实现方法
May 02 Javascript
react-native封装插件swiper的使用方法
Mar 20 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
Nov 06 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获取数组中键值最大数组项的索引值
2015/03/17 PHP
php无序树实现方法
2015/07/28 PHP
PHP连接MySQL进行增、删、改、查操作
2017/02/19 PHP
prototype Element学习笔记(篇二)
2008/10/26 Javascript
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
jquery 事件执行检测代码
2009/12/09 Javascript
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
JavaScript 参数中的数组展开 [译]
2012/09/21 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
对之前写的jquery分页做下升级
2014/06/19 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
聊一聊JS中this的指向问题
2016/06/17 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
解决$store.getters调用不执行的问题
2019/11/08 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
英国最大的滑板品牌选择:Route One
2019/09/22 全球购物
幼儿教师个人求职信范文
2013/09/21 职场文书
大专学生求职信
2014/07/04 职场文书
党员个人公开承诺书
2014/08/29 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
国庆放假通知怎么写
2015/07/30 职场文书