全网整合营销服务商

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

免费咨询热线: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 


相关文章: 建站之星手机一键生成:多端自适应+小程序开发快速建站指南  常州企业建站如何选择最佳模板?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  ppt制作免费网站有哪些,ppt模板免费下载网站?  平台云上自主建站:模板化设计与智能工具打造高效网站  已有域名建站全流程解析:网站搭建步骤与建站工具选择  IOS倒计时设置UIButton标题title的抖动问题  如何在Windows环境下新建FTP站点并设置权限?  清除minerd进程的简单方法  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  家具网站制作软件,家具厂怎么跑业务?  电商网站制作价格怎么算,网上拍卖流程以及规则?  如何设计高效校园网站?  如何快速建站并高效导出源代码?  专业商城网站制作公司有哪些,pi商城官网是哪个?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  如何获取免费开源的自助建站系统源码?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  简历在线制作网站免费版,如何创建个人简历?  如何用AWS免费套餐快速搭建高效网站?  如何通过.red域名打造高辨识度品牌网站?  如何用PHP快速搭建CMS系统?  如何高效搭建专业期货交易平台网站?  如何在云主机上快速搭建网站?  湖北网站制作公司有哪些,湖北清能集团官网?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  网站制作网站,深圳做网站哪家比较好?  如何挑选最适合建站的高性能VPS主机?  网站按钮制作软件,如何实现网页中按钮的自动点击?  C++如何使用std::optional?(处理可选值)  招商网站制作流程,网站招商广告语?  名字制作网站免费,所有小说网站的名字?  网站制作报价单模板图片,小松挖机官方网站报价?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  制作网站的模板软件,网站怎么建设?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  seo网站制作优化,网站SEO优化步骤有哪些?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  如何用IIS7快速搭建并优化网站站点?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  如何将凡科建站内容保存为本地文件?  ,南京靠谱的征婚网站?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  Swift中循环语句中的转移语句 break 和 continue 

您的项目需求

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