基于JS如何制作上下滑动的轮播效果,代码是什么
Admin 2022-08-09 群英技术资讯 256 次浏览
一、效果图
第一步:遍历所有的元素使得鼠标点击右侧小图时,图片变亮并且根据偏移值加上红框。点击右边的小图左边出现对用的图片。
第二步:利用循环计时器,克隆ul里面的第一个元素使得连续循环滑动。
第三步:鼠标进入时循环滑动停止,离开时继续。
第四步:设置上下按钮,当第一张图片的offsetTop值为0时,下面按钮出现,当到达底部最后一个元素时,上面按钮出现,底部按钮消失,当在整个元素中间时,上下按钮都出现,每点击一次按钮移动一个格子,左边图片也对应改变。
//找到right-btn 元素添加事件 var righttBtnList; var Line; var transy = 0; var liHeight = 430; var ulItem; var count = 0; var timer; var speed = 2000; var Item; var ItemMenu; var offsetTop = 0; var itemtabinfo, topBtn, bottomBtn; window.onload = function () { righttBtnList = document.getElementsByClassName("right-btn"); Line = document.getElementsByClassName("line")[0]; ulItem = document.getElementsByClassName("item-child-ul")[0]; Item = document.getElementsByClassName("item-list")[0]; ItemMenu = document.getElementsByClassName("item-menu")[0]; itemtabinfo = document.getElementsByClassName("item-tab-info")[0]; topBtn = document.getElementsByClassName("top-btn")[0]; bottomBtn = document.getElementsByClassName("bottom-btn")[0]; //默认复制第一张添加到ulItem之中 ulItem.appendChild(ulItem.children[0].cloneNode(true)); //设置itemtabinfo 默认移动值 itemtabinfo.style.transform = "translateY(" + offsetTop + "px)"; //直接默认启动计时器 Animate(); //遍历所有的li添加事件 for (var i = 0; i < righttBtnList.length; i++) { righttBtnList[i].index = i; righttBtnList[i].onclick = function () { //点击当前移除top-white if (checkClass(this, 'top-white')) { this.classList.remove("top-white"); //其余的添加 addWhite(this.index); } //获取偏移值 Line.style.top = ((this.index * 110 + 10) + offsetTop) + "px"; //输出当前点击的索引 ulItem.style.transform = "translateY(" + (-this.index * liHeight) + "px)"; //用户点击的索引 对应count值 count = this.index; } } Item.onmouseenter=function(){ clearTimeout(timer); } Item.onmouseleave=function(){ Animate(); } topBtn.onclick = function () { offsetTop += 110; //获取原来的top var oldTop = parseFloat(Line.style.top); Line.style.top = (oldTop + 110) + "px"; itemtabinfo.style.transform = "translateY(" + offsetTop + "px)"; checkBtnShow(); } bottomBtn.onclick = function () { offsetTop -= 110; //获取原来的top var oldTop = parseFloat(Line.style.top); //只能取到行内样式 Line.style.top = (oldTop - 110) + "px"; itemtabinfo.style.transform = "translateY(" + offsetTop + "px)"; checkBtnShow(); } ItemMenu.onmouseenter = function () { checkBtnShow(); } function checkBtnShow() { if (offsetTop == 0) { //下面按钮出现 bottomBtn.classList.add("showBottom"); topBtn.classList.remove("showTop"); } else if (offsetTop == -220) { //上面按钮出现 topBtn.classList.add("showTop"); bottomBtn.classList.remove("showBottom"); } else { //两个按钮同时出现 bottomBtn.classList.add("showBottom"); topBtn.classList.add("showTop"); } } ItemMenu.onmouseleave = function () { bottomBtn.classList.remove("showBottom"); topBtn.classList.remove("showTop"); } //检测是否具有top-white function checkClass(obj,className){ return obj.classList.contains(className); } //其余的li添加 function addWhite(index){ for(var i=0;i<righttBtnList.length;i++){ if(i!=index){ righttBtnList[i].classList.add("top-white"); } } } //启动计时器动画 function Animate(){ //写执行代码 timer=setInterval(function(){ if (timer) clearInterval(timer); if(!ulItem.classList.contains("transY")){ ulItem.classList.add("transY"); } count++; ulItem.style.transform="translateY("+(-count*liHeight)+"px)"; //找出当前每一张图动画完成时间 setTimeout(function(){ if(count>=ulItem.children.length-1){ count=0; //移除过渡类 ulItem.classList.remove("transY"); ulItem.style.transform="translateY(0px)"; } //让右边的元素动画对应 //rigthBtnlist[count].click(); },500) },speed) } }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要给大家分享jquery实现记分进度条效果的内容,感兴趣的朋友可以借鉴参考一下,希望大家阅读完这篇文章能有所收获,下面我们一起来学习一下吧。
在JavaScript中我们经常会因为工作原因创建对象和属性,但是也有许多人会好奇javaScript如何创建对象和属性,那么下面我们就一起去看看吧。
本篇文章给大家带来了关于javascript的相关知识,主要介绍了一文让你快速了解JavaScript栈,栈全称为堆栈,是一种先进后出的的数据结构,栈中只有两种基本操作,也就是插入和删除,也就是入栈和出栈操作,栈只有一端可以进行入栈和出栈操作,希望对大家有帮助。
这篇文章主要为大家介绍了JavaScript之instanceof方法手写示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
点名器对于学生来说应该都很熟悉,那么我们如何使用代码来实现一个随机点名器呢?其实很简单,下面就分享用JavaScript实现随机点名器的详细代码。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008