项目中用到了滚动导航,但是默认的滚动条太丑了,只好用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小时内与您取得联系。