怎么用JavaScript实现弹性导航效果
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,本篇内容主要讲解"怎么用JavaScript实现弹性导航效果",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么用JavaScript实现弹性导航效果"吧!
千家信息网最后更新 2025年01月21日怎么用JavaScript实现弹性导航效果
本篇内容主要讲解"怎么用JavaScript实现弹性导航效果",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么用JavaScript实现弹性导航效果"吧!
主要利用offsetX
1.先搭架子:
* { margin: 0; padding: 0; } .nav { width: 900px; height: 63px; background: url(images/doubleOne.png) no-repeat right center; border: 1px solid #ccc; margin: 100px auto; position: relative; } ul { position: relative; z-index: 999; } ul>li { list-style: none; float: left; width: 88px; height: 63px; line-height: 63px; text-align: center; } span { display: inline-block; width: 88px; height: 63px; background: url("images/tMall.png") no-repeat; position: absolute; left: 0; top: 0;}
2.编写逻辑部分
//1.拿到需要操作的元素const oItems = document.querySelectorAll("li"); let oSpan = document.querySelector("span"); //2.监听每个菜单的点击事件for (let i = 0; i < oItems.length; i++) { let item = oItems[i]; item.onclick = function() { //offsetLeft 得到被点击的元素距离第一个定位祖先元素的偏移位 // console.log(this.offsetLeft); // oSpan.style.left = this.offsetLeft + 'px'; //调用函数 easeAnimation(oSpan, { "left": this.offsetLeft }); }; }
animation.js
(function() { /** * 匀速动画 * @param {*} ele 执行动画元素 * @param {*} obj 该元素的哪些属性需要执行动画 * @param {*} fn 动画执行完成后可能还需要执行的操作 * * 调用方式参考 * linearAnimation(oDiv, { "marginTop": 500, "marginLeft": 300 }); */ function linearAnimation(ele, obj, fn) { clearInterval(ele.timerId); ele.timerId = setInterval(function() { // flag变量用于标记是否所有的属性都执行完了动画 let flag = true; for (let key in obj) { let target = obj[key]; // 1.拿到元素当前的位置 // let begin = parseInt(ele.style.width) || 0; let style = getComputedStyle(ele); // let begin = parseInt(style.width) || 0; let begin = parseFloat(style[key]) || 0; // 2.定义变量记录步长 let step = (begin - target) > 0 ? -13 : 13; // 3.计算新的位置 begin += step; // console.log(Math.abs(target - begin), Math.abs(step)); if (Math.abs(target - begin) > Math.abs(step)) { //未执行完动画 flag = false; } else { //执行完动画 begin = target; } // 4.重新设置元素的位置 // ele.style.width = begin + "px"; ele.style[key] = begin + "px"; } //判断动画是否执行完 if (flag) { //动画执行完后关闭定时器 clearInterval(ele.timerId); //判断是否传入fn函数,有才执行反之不执行 // if(fn){ // fn(); // } fn && fn(); } }, 100); } //缓动动画 function easeAnimation(ele, obj, fn) { clearInterval(ele.timerId); ele.timerId = setInterval(function() { // flag变量用于标记是否所有的属性都执行完了动画 let flag = true; for (let key in obj) { let target = obj[key]; // 1.拿到元素当前的位置 let style = getComputedStyle(ele); let begin = parseInt(style[key]) || 0; // 2.定义变量记录步长 // 公式: (结束位置 - 开始位置) * 缓动系数(0 ~1) let step = (target - begin) * 0.3; // 3.计算新的位置 begin += step; if (Math.abs(Math.floor(step)) > 1) { flag = false; } else { begin = target; } // 4.重新设置元素的位置 ele.style[key] = begin + "px"; } //判断动画是否执行完 if (flag) { //动画执行完后关闭定时器 clearInterval(ele.timerId); //判断是否传入fn函数,有才执行反之不执行 fn && fn(); } }, 100); } // 将函数绑定到window对象上, 这样全局就可以使用了 window.linearAnimation = linearAnimation; window.easeAnimation = easeAnimation;})();
到此,相信大家对"怎么用JavaScript实现弹性导航效果"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
动画
元素
位置
会场
函数
变量
弹性
效果
导航
属性
内容
完了
定时器
标记
步长
学习
实用
更深
搭架子
事件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
昆山软件开发培训班
柏古兽数据库
包钢协同管理平台服务器地址
高端软件开发专业技术
尚米网络技术有限公司官网
MT数据库技术
建行软件开发年薪包括年终奖么
服务器断电后进入安全模式
北京泰茂软件开发有限公司
苹果公司软件开发模型
一个国家网络安全生态建设
我的世界网易版联机生存的服务器
数据库重构重组
金华会议视频系统服务器
外服务器调本机无法跨域代理
医院网络技术科自我鉴定
今晚暴雪服务器无法登录
大专学习软件开发有前途吗
网络安全法手抄报简单
es数据库http请求
c#保存查询结果到数据库
流媒体服务器租用
龙华网络安全运维哪个品牌好
口碑好的软件开发反馈
网络安全专家陈荣锋
山大网络安全评估
高新科技互联网名词
余姚慧盈通网络技术
淮北交通局网络安全测评
nginx代理服务器