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 相关文章推荐
JQuery 常用方法基础教程
Feb 06 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
Mar 26 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
Dec 06 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
Apr 18 Javascript
浅析JavaScript中的typeof运算符
Nov 30 Javascript
JavaScript中的getMilliseconds()方法使用详解
Jun 10 Javascript
简单介绍jsonp 使用小结
Jan 27 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
Oct 15 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
Dec 29 Javascript
JavaScript实现购物车基本功能
Jul 21 Javascript
写给小白看的JavaScript异步
Nov 29 Javascript
vue使用Proxy实现双向绑定的方法示例
Mar 20 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
thinkphp连贯操作实例分析
2014/11/22 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
one.php 多项目、函数库、类库 统一为一个版本的方法
2020/08/24 PHP
深入理解Javascript闭包 新手版
2010/12/28 Javascript
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
jQuery实现切换字体大小的方法
2015/03/10 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
给before和after伪元素设置js效果的方法
2015/12/04 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
jquery判断类型是不是number类型的实例代码
2016/10/07 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
Vue中的字符串模板的使用
2018/05/17 Javascript
vue自定义全局共用函数详解
2018/09/18 Javascript
微信小程序swiper实现滑动放大缩小效果
2018/11/15 Javascript
nodejs 使用 js 模块的方法实例详解
2018/12/04 NodeJs
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
用python生成1000个txt文件的方法
2018/10/25 Python
使用Python计算玩彩票赢钱概率
2019/06/26 Python
python redis 批量设置过期key过程解析
2019/11/26 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
Pytorch 实现权重初始化
2019/12/31 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
2020/06/23 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
校三好学生主要事迹
2014/01/11 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
毕业赠语大全
2015/06/23 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
Java获取字符串编码格式实现思路
2022/09/23 Java/Android