jQuery实现圣诞节礼物传送(花式轮播)

发布时间 - 2026-01-10 22:05:00    点击率:

大致介绍

下午看到了一个送圣诞礼物的小动画,正好要快到圣诞节了,就动手模仿并改进了一些小问题

原地址:花式轮播----圣诞礼物传送

思路:动画中一共有五个礼物,他们平均分布在屏幕中,设置最外边的两个礼物旋转一定的角度并隐藏,动画开始,每个礼物向右移动一定的位置,然后再把第五个礼物添加到第一个礼物之前,这样这五个礼物就重新排列了,在写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);
 });
 });

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# jQuery  # 轮播  # jQuery简单自定义图片轮播插件及用法示例  # jquery 实现轮播图详解及实例代码  # 原生Javascript和jQuery做轮播图简单例子  # jQuery实现图片轮播效果代码  # jQuery实现的图片轮播效果完整示例  # jQuery自适应轮播图插件Swiper用法示例  # jquery实现左右无缝轮播图  # 用jQuery实现优酷首页轮播图  # jquery实现轮播图效果  # jQuery实现大图轮播  # 第一个  # 这两个  # 就会  # 鼠标  # 好了  # 就在  # 也会  # 我觉得  # 没有什么  # 写在  # 中都  # 再把  # 到第  # 要快  # 画中  # 这五  # 第五个  # 实现了  # 看到了  # 移出 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  如何在云虚拟主机上快速搭建个人网站?  如何用AI帮你把自己的生活经历写成一个有趣的故事?  如何自定义建站之星模板颜色并下载新样式?  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  怎么用AI帮你设计一套个性化的手机App图标?  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  javascript中闭包概念与用法深入理解  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  桂林网站制作公司有哪些,桂林马拉松怎么报名?  深圳网站制作培训,深圳哪些招聘网站比较好?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  如何快速生成橙子建站落地页链接?  如何用wdcp快速搭建高效网站?  企业网站制作这些问题要关注  浅谈redis在项目中的应用  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  如何在七牛云存储上搭建网站并设置自定义域名?  Laravel观察者模式如何使用_Laravel Model Observer配置  在线制作视频网站免费,都有哪些好的动漫网站?  nodejs redis 发布订阅机制封装实现方法及实例代码  Android仿QQ列表左滑删除操作  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  移动端脚本框架Hammer.js  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  详解Oracle修改字段类型方法总结  如何快速搭建FTP站点实现文件共享?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  详解jQuery中的事件  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  利用python获取某年中每个月的第一天和最后一天  Linux安全能力提升路径_长期防护思维说明【指导】  Laravel如何实现一对一模型关联?(Eloquent示例)  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  高防服务器如何保障网站安全无虞?  专业商城网站制作公司有哪些,pi商城官网是哪个?  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  深圳网站制作的公司有哪些,dido官方网站?  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  C语言设计一个闪闪的圣诞树  Laravel如何为API生成Swagger或OpenAPI文档  ,怎么在广州志愿者网站注册?  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  Python进程池调度策略_任务分发说明【指导】