热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

仿今日头条横向滚动导航栏原生js

咳咳!先打一波小广告,在上一篇里忘记了,那啥……我的那个个人博客做好了--(我的博客)

咳咳&#xff01;先打一波小广告&#xff0c;在上一篇里忘记了&#xff0c;那啥……我的那个个人博客做好了-->(我的博客)<--。嘿嘿

好嘞&#xff0c;言归正传&#xff0c;说说我们的效果。

其实就是实现横向滑动&#xff0c;进行选择。

原理&#xff1a;

  • 鼠标按下&#xff0c;获取当前鼠标坐标&#xff0c;作为起始坐标&#xff1b;
  • 鼠标移动&#xff0c;获取坐标&#xff0c;与起始坐标进行一系列的数学运算&#xff1b;
  • 给 left 赋值&#xff0c;改变位置&#xff1b;
  • 移动过多&#xff0c;超过时进行处理。

function scrollTabX() {let nav &#61; document.getElementById("nav");let navs &#61; document.getElementsByTagName("li");let navbar &#61; document.getElementsByClassName("navbar")[0];let left &#61; nav.style.left; // ul 距离左边的距离let totalWidth &#61; 0; // 总宽度let minusValue &#61; 0; // 设备宽度与总宽度的差值
left &#61; left ? left : 0; // 初始时 ul 距离左边 0px// 获取所有 li 所占用的宽度for (let i &#61; 0; i navs[i].offsetWidth;// 固定 ul 的宽度nav.style.width &#61; totalWidth &#43; &#39;px&#39;;minusValue &#61; window.screen.width - totalWidth;// 当设备宽度小于 ul 宽度的时候&#xff0c;执行水平滚动if (minusValue <0) {(function () {nav.onmousedown &#61; function (ev) {let e &#61; ev || event;// 获取鼠标的位置信息let startX &#61; e.screenX;nav.onmousemove &#61; function (e) {left &#43;&#61; (e.screenX - startX) / 10;nav.style.left &#61; left &#43; &#39;px&#39;;}}nav.onmouseup &#61; function () {nav.onmousemove &#61; null;// 拉多了&#xff0c;要回来呢&#xff0c;兄弟if (left > 0) {let timer &#61; setInterval(function () {left -&#61; 50;if (left <&#61; 0) {left &#61; 0;clearInterval(timer);}nav.style.left &#61; left &#43; &#39;px&#39;;}, 20);}if (left <minusValue) {let timer &#61; setInterval(function () {left &#43;&#61; 50;if (left >&#61; minusValue) {left &#61; minusValue - 10; // 有个 10px 的 padding
clearInterval(timer);}nav.style.left &#61; left &#43; &#39;px&#39;;}, 20);}// 去掉阴影navbar.style.boxShadow &#61; (left <&#61; minusValue) ? "0 0 0 #fff" : "-5px 0 10px #fff inset";}})();}
}

效果图&#xff08;动图不会哎&#xff09;&#xff1a;

反正想像一下效果就好了&#xff0c;哈哈。

至于说这篇写的不怎么样&#xff0c;我为什么还要置顶&#xff1f;……当然是因为我的博客啦&#xff01;

转:https://www.cnblogs.com/Super-Lee/p/10566114.html



推荐阅读
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 本文介绍了Cocos2dx学习笔记中的更新函数scheduleUpdate、进度计时器CCProgressTo和滚动视图CCScrollView的用法。详细介绍了scheduleUpdate函数的作用和使用方法,以及schedule函数的区别。同时,还提供了相关的代码示例。 ... [详细]
  • C#多线程解决界面卡死问题的完美解决方案
    当界面需要在程序运行中不断更新数据时,使用多线程可以解决界面卡死的问题。一个主线程创建界面,使用一个子线程执行程序并更新主界面,可以避免卡死现象。本文分享了一个例子,供大家参考。 ... [详细]
  • 如何优化Webpack打包后的代码分割
    本文介绍了如何通过优化Webpack的代码分割来减小打包后的文件大小。主要包括拆分业务逻辑代码和引入第三方包的代码、配置Webpack插件、异步代码的处理、代码分割重命名、配置vendors和cacheGroups等方面的内容。通过合理配置和优化,可以有效减小打包后的文件大小,提高应用的加载速度。 ... [详细]
  • Tkinter Frame容器grid布局并使用Scrollbar滚动原理
    本文介绍了如何使用Tkinter实现Frame容器的grid布局,并通过Scrollbar实现滚动效果。通过将Canvas作为父容器,使用滚动Canvas来滚动Frame,实现了在Frame中添加多个按钮,并通过Scrollbar进行滚动。同时,还介绍了更新Frame大小和绑定滚动按钮的方法,以及配置Scrollbar的相关参数。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • asp中如何嵌入python的简单介绍
    本文目录一览:1、如何在IIS中执行Python脚本 ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了css回到顶部按钮相关的知识,希望对你有一定的参考价值。 ... [详细]
  • vb.net面试题,请大家帮忙,谢谢。如果需要讲详细一点,那就加我QQ531412815第4题,潜在的错误,这里的错误不是常规错误,属于那种只有在运行是才知道的错误:Catchex ... [详细]
author-avatar
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有