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脚本语言在网页中的简单应用
May 13 Javascript
响应鼠标变换表格背景或者颜色的代码
Mar 30 Javascript
window.event.keyCode兼容IE和Firefox实现js代码
May 30 Javascript
JavaScript获取DOM元素的11种方法总结
Apr 25 Javascript
Javascript必知必会(四)js类型转换
Jun 08 Javascript
vue中使用protobuf的过程记录
Oct 26 Javascript
js中的reduce()函数讲解
Jan 18 Javascript
JS中的算法与数据结构之字典(Dictionary)实例详解
Aug 20 Javascript
vue实现element表格里表头信息提示功能(推荐)
Nov 20 Javascript
Javascript实现鼠标点击冒泡特效
Dec 24 Javascript
vue 单页应用和多页应用的优劣
Oct 22 Javascript
Vant picker 多级联动操作
Nov 02 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
MySQL修改密码方法总结
2008/03/25 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
JS控件的生命周期介绍
2012/10/22 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
canvas绘制环形进度条
2017/02/23 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
Django的session中对于用户验证的支持
2015/07/23 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
Flask框架web开发之零基础入门
2018/12/10 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
Django urls.py重构及参数传递详解
2019/07/23 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
HTML5 虚拟键盘出现挡住输入框的解决办法
2017/02/14 HTML / CSS
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
教师党员一句话承诺
2014/03/28 职场文书
新品发布会主持词
2014/04/02 职场文书
施工协议书范本
2014/04/22 职场文书
2014年网管工作总结
2014/12/11 职场文书
一年级小学生评语大全
2014/12/25 职场文书
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python