(如有错敬请指点,以下是我工作中遇到并且解决的问题)上一篇文章是简洁版

这是上一篇文章的改进。

上一篇文章的左侧菜单是没有子目录的。

这是效果图:

主要改动:

对样式进行删减和优化。

重点就是js部分了。

点击一级目录时二级目录的第一个元素默认active,即在点击一级目录时可以立刻请求接口获取第一个子元素的数据,当点击第二个元素时再获取第二个子元素的数据。

再结合加载图使用,就更好了。

代码如下:

HTML:

<div class="wrap">
<ul class="left">
<li class="ma-li">
<p>大分类</p>
<ul>
<li class="pa-li">小分类</li>
<li class="pa-li">小分类</li>
<li class="pa-li">小分类</li>
<li class="pa-li">小分类</li>
</ul>
</li>
<li class="ma-li">
<p>大分类</p>
<ul>
<li class="pa-li">小分类</li>
<li class="pa-li">小分类</li>
<li class="pa-li">小分类</li>
<li class="pa-li">小分类</li>
</ul>
</li>
<li class="ma-li">
<p>大分类</p>
<ul>
<li class="pa-li">小分类</li>
<li class="pa-li">小分类</li>
<li class="pa-li">小分类</li>
<li class="pa-li">小分类</li>
</ul>
</li>
<li class="ma-li">
<p>大分类</p>
<ul>
<li class="pa-li">小分类</li>
<li class="pa-li">小分类</li>
<li class="pa-li">小分类</li>
<li class="pa-li">小分类</li>
</ul>
</li>
<li class="ma-li">
<p>大分类</p>
<ul>
<li class="pa-li">小分类</li>
<li class="pa-li">小分类</li>
<li class="pa-li">小分类</li>
<li class="pa-li">小分类</li>
</ul>
</li>
</ul>
<ul class="right">
<li class="right-list">水果</li>
<li class="right-list">水果</li>
<li class="right-list">水果</li>
<li class="right-list">水果</li>
<li class="right-list">水果</li>
<li class="right-list">水果</li>
<li class="right-list">水果</li>
<li class="right-list">水果</li>
<li class="right-list">水果</li>
<li class="right-list">水果</li>
<li class="right-list">水果</li>
</ul>
</div>

CSS:

*{
margin:;
padding:;
list-style: none;
}
html,body{
height: 100%
}
.wrap{
height: 100%;
display: flex;
}
.left{
width: 30%;
height: 100%;
overflow-y: auto;
color: #7a7a7a;
}
.right{
flex:;
height: 100%;
overflow-y: auto;
color: #373737;
} .ma-li,.pa-li,.right-list{
font-size: 16px;
line-height: 45px;
}
.ma-li p,.right-list{
padding-left: 20px;
border-bottom: 1px solid #e5e2dc;
}
.ma-li.active p{
border-left: 5px solid #1657c9;
padding-left: 15px;
}
.ma-li.active ul{
border-bottom: 1px solid #e5e2dc;
}
.pa-li{
padding-left: 20px;
}
.pa-li.active{
color: #1657c9
}

JAVASCRIPT:

var _leftMain = document.getElementsByClassName('left')[0];
var _leftMaLi = _leftMain.getElementsByClassName('ma-li');
var _leftMaliUl = _leftMain.getElementsByTagName('ul');
var index = 0;
for(var i = 0;i<_leftMaLi.length;i++){
_leftMaLi[i]['data-index'] = i
if(_leftMaLi[i].className.indexOf('active')==-1){
_leftMaliUl[i].style.display = 'none'
}
_leftMaLi[i].onclick = function (event){
event = event||window.event;
if(event.target.tagName == 'P'){
this.className += ' active';
index = this['data-index']
_leftMaliUl[index].style.display = 'block'
var liChilds = this.getElementsByClassName('pa-li');
liChilds[0].className += ' active'
for(var i = 1;i<liChilds.length;i++){
liChilds[i].className = liChilds[i].className.replace('active', '')
}
updateOtherMaLi()
}else if(event.target.tagName == 'LI'){
var allLi = event.target.parentNode.children;
for(var j = 0;j<allLi.length;j++){
allLi[j].className = allLi[j].className.replace('active', '')
}
event.target.className += ' active'
}
}
}
function updateOtherMaLi(){
for(var i = 0;i<_leftMaLi.length;i++){
if(i!=index){
_leftMaLi[i].className = _leftMaLi[i].className.replace('active','')
_leftMaliUl[i].style.display = 'none'
}
}
}
_leftMaLi[index].className += ' active'
_leftMaLi[index].getElementsByClassName('pa-li')[0].className += ' active'
_leftMaliUl[index].style.display = 'block'

左侧菜单栏右侧内容(改进,有js效果)的更多相关文章

  1. C# WPF 左侧菜单右侧内容布局效果实现

    原文:C# WPF 左侧菜单右侧内容布局效果实现 我们要做的效果是这样的,左侧是可折叠的菜单栏,右侧是内容区域,点击左侧的菜单项右侧内容区域则相应地切换. wpf实现的话,我的办法是用一个tabcon ...

  2. HTMLCSS实现左侧固定宽度右侧内容可滚动

    在做移动端页面的时候,经常会碰到一个div中分左右两个div,左侧div固定宽度或百分比,右侧div中内容左右溢出,需要左右滑动才可以浏览到全部内容,为此写了一个demo. 处理这个问题的核心关键点是 ...

  3. HTML和CSS实现左侧固定宽度右侧内容可滚动

    在做移动端页面的时候,经常会碰到一个div中分左右两个div,左侧div固定宽度或百分比,右侧div中内容左右溢出,需要左右滑动才可以浏览到全部内容,为此写了一个demo. 处理这个问题的核心关键点是 ...

  4. ionic js 侧栏菜单 把主要内容区域从一边拖动到另一边,来让左侧或右侧的侧栏菜单进行切换

    ionic 侧栏菜单 一个容器元素包含侧边菜单和主要内容.通过把主要内容区域从一边拖动到另一边,来让左侧或右侧的侧栏菜单进行切换. 效果图如下所示: 用法 要使用侧栏菜单,添加一个父元素<ion ...

  5. HTML实用案例(1)—— 左侧菜单,右侧内容的布局(带左侧菜单点击隐藏显示效果)

    效果图 代码部分 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" ...

  6. 左侧点击后右侧添加tab标签栏以及内容

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  7. 左侧栏与右侧内容之锚点、offsetHeight、scrollTop()

    常用功能 1.点击左侧,右侧相关内容随时点到. 2.滚动右侧信息,左侧标题随之显示背景. 第一点很简单,只要在左侧栏  <li><a  href="#aaa"&g ...

  8. jquery小效果:新浪游戏右侧导航菜单 (页面效果)

    偷盗:新浪游戏右侧导航菜单 http://games.sina.com.cn 效果: 随着页面的滚动,左侧页面的内容,和右侧的导航菜单的按钮文字对应: 点击右侧的导航按钮,左侧页面滚动到相应的内容 2 ...

  9. vue项目 菜单侧边栏随着右侧内容盒子的高度实时变化

    测试的时候发现,在选择模板.选择产品第二步第三步的时候.如果超出两行的话会盖住看不见,(因为高度所有统一都被写死了,又加了overflow~emmm~)所以要改成走马灯形式.如图: 那么问题来了,我步 ...

随机推荐

  1. 笔记-scrapy-深入学习-sheduler

    笔记-scrapy-深入学习-sheduler 1.      scheduler.py source code:scrapy/core/scheduler.py: 1.1.    初始化的开始 在分 ...

  2. python 函数function

    函数 当代码出现有规律的重复的时候,只写一次函数实现多次使用(调用) 可使用的函数: 自定义函数 内置函数:文档  https://docs.python.org/3/library/function ...

  3. <s:submit> 指定的method方法不执行

    很多文章在讲一个表单多个提交方法的时候都是在<s:submit>中通过method来指定,但是我在试验中怎么也不对,jsp页面代码如下 <%@page import="or ...

  4. 1096: [ZJOI2007]仓库建设

    1096: [ZJOI2007]仓库建设 思路 斜率优化. 代码 #include<cstdio> #include<iostream> using namespace std ...

  5. CodeForces 522D Closest Equals 树状数组

    题意: 给出一个序列\(A\),有若干询问. 每次询问某个区间中值相等且距离最短的两个数,输出该距离,没有则输出-1. 分析: 令\(pre_i = max\{j| A_j = A_i, j < ...

  6. 常见算法用Pascal实现

    基本算法    这些都是非常基本的的算法,希望所有学习的人都能理解!        1.数论算法      求两数的最大公约数      function gcd(a,b:integer):integ ...

  7. 深入MySQL用户自定义变量:使用详解及其使用场景案例

    一.前言 在前段工作中,曾几次收到超级话题积分漏记的用户反馈.通过源码的阅读分析后,发现问题出在高并发分布式场景下的计数器上.计数器的值会影响用户当前行为所获得积分的大小.比如,当用户在某超级话题下连 ...

  8. Python 第一周编程作业

    一.  编程题 1.  结合turtle库使用手册,读懂下列代码,并在jupyter编译器中运行观察结果: 依次分析下代码: 第一行 通过保留字import引用了Python中用于绘制图形的turtl ...

  9. Spring 学习笔记(五)—— Bean之间的关系、作用域、自动装配

    继承 Spring提供了配置信息的继承机制,可以通过为<bean>元素指定parent值重用已有的<bean>元素的配置信息. <?xml version="1 ...

  10. 软工实践 - 第十四次作业 Alpha 冲刺 (5/10)

    队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/p/9992094.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去 ...