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 时间比较实现代码
Oct 28 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
Oct 23 Javascript
javascript日期对象格式化为字符串的实现方法
Jan 14 Javascript
AngularJS的内置过滤器详解
May 14 Javascript
JavaScript中用toString()方法返回时间为字符串
Jun 12 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
Aug 02 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
Oct 01 Javascript
详解如何写出一个利于扩展的vue路由配置
May 16 Javascript
layui多图上传实现删除功能的例子
Sep 23 Javascript
vue.js路由mode配置之去掉url上默认的#方法
Nov 01 Javascript
微信小程序实现同时上传多张图片
Feb 03 Javascript
让Vue响应Map或Set的变化操作
Nov 11 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 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
javascript 自动填写表单的实现方法
2010/04/09 Javascript
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
JS实现弹性菜单效果代码
2015/09/07 Javascript
js实现选中页面文字将其分享到新浪微博
2015/11/05 Javascript
js密码强度校验
2015/11/10 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
nodejs简单实现TCP服务器端和客户端的聊天功能示例
2018/01/04 NodeJs
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
Python操作串口的方法
2015/06/17 Python
Python编程把二叉树打印成多行代码
2018/01/04 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
Python笔记之观察者模式
2019/11/20 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
2020/06/01 Python
Python flask框架如何显示图像到web页面
2020/06/03 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
Java中实现多态的机制是什么?
2014/12/07 面试题
中专毕业生自我鉴定
2013/11/21 职场文书
员工考核管理制度
2014/02/02 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
SQL语法CONSTRAINT约束操作详情
2022/01/18 MySQL