分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

JS之楼层跳跃

发布时间:2023-09-06 01:33责任编辑:郭大石关键词:暂无标签

目的:达到像各个大型购物网站一样的楼层跳跃

需求:点击ol中的li,屏幕滑动到对应的ul中li范围

思路:还是利用window.scrollTo();利用缓动动画原理实现屏幕滑动

<!DOCTYPE html><html><head><meta charset="utf-8"> ???<title></title><style type="text/css">*{ ???padding:0; ???margin: 0;}body,html{ ???height: 100%;}ul{ ???list-style: none; ???height: 100%;}ul li{ ???height:100%;}ol{ ???list-style: none; ???position: fixed; ???top: 80px; ???left: 50px;}ol li{ ???width: 50px; ???height: 50px; ???border:1px solid #000; ???cursor: pointer; ???text-align: center; ???line-height: 50px;}</style></head><body><ul><li>鞋子区域</li><li>袜子区域</li><li>裤子区域</li><li>裙子区域</li><li>帽子区域</li></ul><ol><li>鞋子</li><li>袜子</li><li>裤子</li><li>裙子</li><li>帽子</li></ol><script type="text/javascript" src=""></script><script type="text/javascript">//需求:点击ol中的li,屏幕滑动到对应的ul中li范围//思路:还是利用window.scrollTo();利用缓动动画原理实现屏幕滑动//步骤://1.获取元素//2.指定ul和ol中的li的背景色,对应的li背景色相同//3.获取元素并绑定事件//利用缓动动画原理实现屏幕滑动//用scroll事件模拟盒子距离最顶端的距离//获取元素var ul =document.getElementsByTagName("ul")[0];var ol = document.getElementsByTagName("ol")[0];var ulLiArr = ul.children;var olLiArr = ol.children;var target = 0;var leader =0;var timer = null;//指定ul和ol中li的背景色,与对应的li背景色相同//设置一个数组,里面装颜色,然后指定的颜色给数组中的指定元素var arrColor = ["pink","blue","yellow","orange","green"];//利用for循环给两个数组的元素上色for (var i = 0; i < arrColor.length; i++) { ???//上色 ????ulLiArr[i].style.backgroundColor=arrColor[i]; ????olLiArr[i].style.backgroundColor=arrColor[i]; ????//属性绑定索引值 ????olLiArr[i].index = i; ????//循环绑定,为每一个li绑定点击事件 ????olLiArr[i].onclick = function(){ ????????//获取目标位置 ????????//获取索引值 ????????target = ulLiArr[this.index].offsetTop; ????????//要用定时器,先清定时器 ????????clearInterval(timer); ????????//利用缓动动画原理实现屏幕滑动 ????????timer = setInterval(function(){ ????????????//获取步长 ????????????var step = (target-leader)/10; ????????????//二次处理步长 ????????????step = step>0?Math.ceil(step):Math.floor(step); ????????????//屏幕滑动 ????????????leader = leader+step; ????????????window.scrollTo(0,leader); ????????????//清除定时器 ????????????if (Math.abs(target-leader)<=Math.abs(step)) { ????????????????window.scrollTo(0,target); ????????????????clearInterval(timer); ????????????} ????????},25); ????}}//用scroll事件模拟盒子距离最顶端的距离window.onscroll = function(){ ???//每次屏幕滑动,把屏幕卷去的头部赋值给leader,模拟获取显示区域距离顶部的距离 ???leader = scroll().top;}</script></body></html>

JS之楼层跳跃

原文地址:https://www.cnblogs.com/creazybeauty/p/8176751.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved