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 相关文章推荐
图像替换新技术 状态域方法
Jan 28 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
Dec 05 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
Mar 25 Javascript
原生js实现自由拖拽弹窗代码demo
Jun 29 Javascript
深入分析javascript中console命令
Aug 14 Javascript
javascript实现秒表计时器的制作方法
Feb 16 Javascript
node中Express 动态设置端口的方法
Aug 04 Javascript
详解React开发必不可少的eslint配置
Feb 05 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
Sep 05 Javascript
react+ant design实现Table的增、删、改的示例代码
Dec 27 Javascript
layui的表单提交以及验证和修改弹框的实例
Sep 09 Javascript
vue 组件内获取actions的response方式
Nov 08 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的图形函数中显示汉字
2006/10/09 PHP
php 前一天或后一天的日期
2008/06/28 PHP
php函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
Js 获取HTML DOM节点元素的方法小结
2009/04/24 Javascript
Javascript Global对象
2009/08/13 Javascript
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
2010/03/23 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
jQuery关键词说明插件cluetip使用指南
2015/04/21 Javascript
jQuery实现每隔几条元素增加1条线的方法
2016/06/27 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
2016/12/26 Javascript
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
pandas表连接 索引上的合并方法
2018/06/08 Python
对Python3中列表乘以某一个数的示例详解
2019/07/20 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
详解python UDP 编程
2020/08/24 Python
python二维图制作的实例代码
2020/12/03 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
英文简历中的自我评价
2013/10/06 职场文书
初中女生自我鉴定
2013/12/19 职场文书
自荐书4要点
2014/01/25 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
爱国主义主题班会
2015/08/14 职场文书
初中班长竞选稿
2015/11/20 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python