怎么用JavaScript实现弹性导航效果
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,本篇内容主要讲解"怎么用JavaScript实现弹性导航效果",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么用JavaScript实现弹性导航效果"吧!
千家信息网最后更新 2025年11月12日怎么用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安全错误
数据库的锁怎样保障安全
账号登录页面带数据库
百色网络安全教育
数据库的日志数据在哪里
服务器硬盘插拔后找不到系统
软件开发外包市场
ping对服务器影响
软件开发合同纠纷起诉书
平谷区信息化网络技术推广系统
信用卡境外消费软件开发
零一网络技术
汤森数据库
服务器6年了有安全隐患吗
四川服务器托管云服务器虚拟主机
郑州app软件开发哪家可靠
启东税务服务器地址
数据库主键啥意思
众信旅游网络技术薛强
实际生活中数据库的实例
绿盟网络安全项目
数据库安全论文3000字
想要加密数据库
网络安全技术题 全套
零基础学电脑软件开发
天津车在这网络技术有限公司
部门网络安全专题会议发言材料
花旗icg软件开发
网络安全执法检查工作反馈会
惠普227需要连接服务器吗
软件开发结束协议书
网络安全微信平台宣传语