全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

js实现水平滚动菜单导航

项目中用到了滚动导航,但是默认的滚动条太丑了,只好用js自己模拟了一个。凑合用可以,不算完美。希望以后有机会再来修饰一下。

先来看下最终效果:

最终效果

先看html结构:

<div id='root' class="root">
 <ul class="list" id="list">
 <li>全单1</li>
 <li>全部菜2单</li>
 <li>全部3单</li>
 <li>菜单4</li>
 <li>全菜单</li>
 <li>全部5菜单</li>
 <li>全6单</li>
 <li>全6部菜单</li>
 <li>全菜7单</li>
 <li>全8单</li>
 <li>全部5菜单</li>
 <li>全6单</li>
 <li>全6部菜单</li>
 <li>全菜7单</li>
 <li>全8单</li>
 <li>全9部菜单</li>
 <li>全10单</li>
 <li>全11部单</li>
 <li>菜2单</li>
 <li>全菜12单</li>
 <li>全32部菜单</li>
 </ul>
</div>

说一下,末尾我给加了阴影的效果:

.root:before{
 display: block;
 content: '';
 width: 20px;
 height:100%;
 background: rgba(111,111,111,0);
 box-shadow: 2px 2px 32px 2px #999;
 position: absolute;
 right:-20px;
 top:0;
 }

其它的样式代码:

 *{
 margin: 0;
 padding:0;
 font-family: "Microsoft YaHei UI";
 }
 #root{
 height:60px;
 width: 800px;
 white-space: nowrap;
 overflow: hidden;
 -webkit-overflow-scrolling: touch;
 white-space: nowrap;
 position: relative;
 border-bottom: 1px solid #eee;
 padding-right: 20px;
 background-color: #f5f5f5;
 margin-left: 100px;
 margin-top: 50px;
 }
 .root:before{
 display: block;
 content: '';
 width: 20px;
 height:100%;
 background: rgba(111,111,111,0);
 box-shadow: 2px 2px 32px 2px #999;
 position: absolute;
 right:-20px;
 top:0;
 }
 .list{
 position: absolute;
 left:0;
 top:0;
 /*width: 100%;*/ /*不能为100%,不然宽度只有父容器的宽度,我掉进这个坑了。*/
 transition: all 1s;
 height:100%;
 line-height: 2.5;
 }
 .on{
 color:red;
 font-weight: bold;
 }
 .off{
 color: #000;
 font-weight:normal;
 }
 .list li{
 display: inline-block;
 padding:10px 20px;
 cursor: pointer;
 }

下面是js的逻辑部分:

 var box = document.getElementById('root'); //外面的容器。
 var listBox = document.getElementById('list'); //ul列表。主要是移动它的left值
 var list = document.getElementsByTagName('li');//所有列表元素
 var width = box.clientWidth /2; //为了判断是左滑还是右滑
 var totalWidth = 0; 
 for(let i=0;i<list.length;i++){
  totalWidth = totalWidth + list[i].offsetWidth; //所有列表元素的总宽度
 }
 for(let i=0;i<list.length;i++){
  var _offset = totalWidth - box.clientWidth; //右边的偏移量
  list[i].addEventListener('click', function (e) {
   for(let j=0;j<list.length;j++){
    list[j].className = 'off'; //移除所有元素的样式
   }
   list[i].className = 'on';  //给点击的元素添加样式
   var offset =totalWidth - (Math.abs(listBox.offsetLeft) + box.clientWidth) + 100; //右边的偏移量 = 所有元素宽度之和 - (ul容器的左偏移量 + 父容器的宽度)
   if(e.pageX > width && offset > 0){ //点击右侧并且右侧的偏移量大于0,左滑。
    listBox.style.left = (listBox.offsetLeft-200) + 'px';
   }else if(e.pageX > width && offset > 200){ //临界位置,,右侧滚动到末尾
    listBox.style.left = -_offset + 'px';
   }
   if(e.pageX < width && listBox.offsetLeft < -200) { //点击左侧并且左侧的偏移量小于0,左滑。
    listBox.style.left = (listBox.offsetLeft + 200) + 'px';

   }else if(e.pageX < width && listBox.offsetLeft < 0){ //临界位置,左侧滚到开始的位置
    listBox.style.left = 0
   }

  });

 }

点击如下所示:

还有些不完善的地方,求各位大神指正。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# js水平滚动菜单导航  # js水平滚动菜单  # js水平单导航  # 利用Js+Css实现折纸动态导航效果实例源码  # JS+CSS实现鼠标滑过时动态翻滚的导航条效果  # javascript实现的鼠标悬停时动态翻滚的导航条  # JS实现移动端可折叠导航菜单(现代都市风)  # JS无限级导航菜单实现方法  # vuejs 切换导航条高亮(路由菜单高亮)的方法示例  # 原生JS实现导航下拉菜单效果  # 如何使用wheelnav.js构建酷炫的动态导航菜单  # 偏移量  # 有机会  # 大神  # 再来  # 我给  # 所示  # 好用  # 能为  # 掉进  # 先看  # 不完善  # 大家多多  # 移除  # 滚动条  # 主要是  # width  # content  # height  # px  # abs 


相关文章: 如何制作算命网站,怎么注册算命网站?  如何快速搭建响应式可视化网站?  大同网页,大同瑞慈医院官网?  如何在腾讯云服务器上快速搭建个人网站?  如何快速生成ASP一键建站模板并优化安全性?  北京网站制作网页,网站升级改版需要多久?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  如何快速生成高效建站系统源代码?  如何挑选最适合建站的高性能VPS主机?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  Python lxml的etree和ElementTree有什么区别  如何快速完成中国万网建站详细流程?  建站主机与虚拟主机有何区别?如何选择最优方案?  全景视频制作网站有哪些,全景图怎么做成网页?  网站app免费制作软件,能免费看各大网站视频的手机app?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  个人摄影网站制作流程,摄影爱好者都去什么网站?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  如何撰写建站申请书?关键要点有哪些?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  自助网站制作软件,个人如何自助建网站?  *服务器网站为何频现安全漏洞?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  如何选择可靠的免备案建站服务器?  如何用虚拟主机快速搭建网站?详细步骤解析  如何在建站主机中优化服务器配置?  代刷网站制作软件,别人代刷火车票靠谱吗?  建站之星如何取消后台验证码生成?  如何在Windows虚拟主机上快速搭建网站?  建站org新手必看:2024最新搭建流程与模板选择技巧  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何在IIS7上新建站点并设置安全权限?  建站主机SSH密钥生成步骤及常见问题解答?  如何快速生成专业多端适配建站电话?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  如何在阿里云通过域名搭建网站?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  定制建站价位费用解析与套餐推荐全攻略  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  建站三合一如何选?哪家性价比更高?  如何在万网自助建站中设置域名及备案?  如何快速搭建高效简练网站?  视频网站制作教程,怎么样制作优酷网的小视频?  建站之星ASP如何实现CMS高效搭建与安全管理?  网站制作价目表怎么做,珍爱网婚介费用多少? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。