返回顶部
首页 > 资讯 > 精选 >怎么用JavaScript实现弹性导航效果
  • 482
分享到

怎么用JavaScript实现弹性导航效果

2023-06-25 13:06:53 482人浏览 八月长安
摘要

本篇内容主要讲解“怎么用javascript实现弹性导航效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用JavaScript实现弹性导航效果”吧!主要利用offsetX先搭架子:*&nb

本篇内容主要讲解“怎么用javascript实现弹性导航效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用JavaScript实现弹性导航效果”吧!

主要利用offsetX

先搭架子:

* {      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;}
<div class="nav">        <ul>            <li>双11狂欢</li>            <li>服装会场</li>            <li>数码家电</li>            <li>家居建材</li>            <li>母婴童装</li>            <li>手机会场</li>            <li>美妆会场</li>            <li>进口会场</li>            <li>飞猪旅行</li>        </ul>        <span></span></div>

怎么用JavaScript实现弹性导航效果

编写逻辑部分

//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() {        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实现弹性导航效果

到此,相信大家对“怎么用JavaScript实现弹性导航效果”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么用JavaScript实现弹性导航效果

本文链接: https://lsjlt.com/news/305033.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么用JavaScript实现弹性导航效果
    本篇内容主要讲解“怎么用JavaScript实现弹性导航效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用JavaScript实现弹性导航效果”吧!主要利用offsetX先搭架子:*&nb...
    99+
    2023-06-25
  • JavaScript实现弹性导航效果
    本文实例为大家分享了JavaScript实现弹性导航效果的具体代码,供大家参考,具体内容如下 主要利用offsetX 1.先搭架子: * { margin: 0; ...
    99+
    2024-04-02
  • 如何使用纯JS实现弹性导航条效果
    这篇文章主要为大家展示了“如何使用纯JS实现弹性导航条效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用纯JS实现弹性导航条效果”这篇文章吧。效果图:代...
    99+
    2024-04-02
  • 怎么用HTML+JavaScript实现筋斗云导航栏效果
    这篇文章主要介绍了怎么用HTML+JavaScript实现筋斗云导航栏效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用HTML+JavaScript实现筋斗云导航栏效果文章都会有所收获,下面我们一起来看...
    99+
    2023-06-29
  • CSS怎样实现导航效果
    这篇文章主要介绍CSS怎样实现导航效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! html <div <ul> <li><a href=...
    99+
    2024-04-02
  • HTML+JavaScript实现筋斗云导航栏效果
    功能要求: 1、鼠标经过某个li,筋斗云跟着到当前的位置 2、鼠标离开这个li,筋斗云回到原来的位置 3、鼠标点击了某个li,筋斗云就留在点击这个位置 <!DOCTYPE h...
    99+
    2024-04-02
  • Ajax怎么实现标签导航效果
    本篇内容主要讲解“Ajax怎么实现标签导航效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Ajax怎么实现标签导航效果”吧!代码如下:<!-- func...
    99+
    2024-04-02
  • 怎么用Vue实现点击导航高亮效果
    在前端开发中,导航是一个必不可少的元素,作为网站或应用的主要入口,导航的设计和交互是影响用户体验的重要因素之一。本文将介绍如何使用Vue来实现点击导航高亮的效果,以提升用户的交互体验。一、项目环境准备在开始前,需要先准备一个使用Vue的项目...
    99+
    2023-05-14
  • 怎么用vue实现导航菜单切换效果
    这篇文章主要介绍“怎么用vue实现导航菜单切换效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用vue实现导航菜单切换效果”文章能帮助大家解决问题。具体代码如下css*{  ...
    99+
    2023-07-04
  • JQuery实现电梯导航效果
    本文实例为大家分享了JQuery实现电梯导航效果的具体代码,供大家参考,具体内容如下 分享一个基于JQuery实现的电梯导航效果,效果如下:  以下是代码实现: <...
    99+
    2024-04-02
  • Android巧用ActionBar实现tab导航效果
    本文实例为大家分享了ActionBar实现tab导航效果的具体代码,供大家参考,具体内容如下 先来说一说基础知识: 一、基本使用方法 1.获取ActionBar  ...
    99+
    2022-06-06
    actionbar tab Android
  • 使用JavaScript怎么实现一个弹框效果
    本篇文章为大家展示了使用JavaScript怎么实现一个弹框效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。利用display来控制弹窗的现实和隐藏<!-- 弹出层 --...
    99+
    2023-06-14
  • 怎么用div+css实现首页导航菜单效果
    本篇内容主要讲解“怎么用div+css实现首页导航菜单效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用div+css实现首页导航菜单效果”吧!先来看看运...
    99+
    2024-04-02
  • 怎么用CSS实现漂亮的下拉导航效果
    本篇内容介绍了“怎么用CSS实现漂亮的下拉导航效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!这是一款纯...
    99+
    2024-04-02
  • vue2.0实现选项卡导航效果
    本文实例为大家分享了vue2.0实现选项卡导航效果的具体代码,供大家参考,具体内容如下 1:背景是一个web端的电商网站,根据点击的导航选项卡呈现不同得种类商品,首先这里说下我的路由...
    99+
    2024-04-02
  • Android实现底部导航栏效果
    目前网上主流的文章都是用底部的 RadioGroup + 页面部分的 Fragment 实现导航栏切换页面效果的。 然而底部的 RadioGroup 是如此麻烦,每个按钮的图片和文字...
    99+
    2024-04-02
  • JS 实现导航栏悬停效果
    JS-实现导航栏悬停 先布个局: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "ht...
    99+
    2022-11-15
    导航栏 悬停
  • 使用jquery库实现电梯导航效果
    一般来说,一些大型的电商网站首页,页面内容很多,页面会很长,这时候大部分网站都选择使用电梯导航,使页面跳转到相应位置或者返回顶部。 下面使用jquery库来实现电梯导航 基本思路 电...
    99+
    2024-04-02
  • CSS中怎么实现凹型导航按钮效果
    这期内容当中小编将会给大家带来有关CSS中怎么实现凹型导航按钮效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。<!DOCTYPE html>&nb...
    99+
    2024-04-02
  • js怎么实现导航栏上下动画效果
    这篇“js怎么实现导航栏上下动画效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“js怎么实现导航栏上下动画效果”文章吧。o...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作