左侧菜单栏右侧内容(改进,有js效果)
(如有错敬请指点,以下是我工作中遇到并且解决的问题)上一篇文章是简洁版
这是上一篇文章的改进。
上一篇文章的左侧菜单是没有子目录的。
这是效果图:

主要改动:
对样式进行删减和优化。
重点就是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效果)的更多相关文章
- C# WPF 左侧菜单右侧内容布局效果实现
		
原文:C# WPF 左侧菜单右侧内容布局效果实现 我们要做的效果是这样的,左侧是可折叠的菜单栏,右侧是内容区域,点击左侧的菜单项右侧内容区域则相应地切换. wpf实现的话,我的办法是用一个tabcon ...
 - HTMLCSS实现左侧固定宽度右侧内容可滚动
		
在做移动端页面的时候,经常会碰到一个div中分左右两个div,左侧div固定宽度或百分比,右侧div中内容左右溢出,需要左右滑动才可以浏览到全部内容,为此写了一个demo. 处理这个问题的核心关键点是 ...
 - HTML和CSS实现左侧固定宽度右侧内容可滚动
		
在做移动端页面的时候,经常会碰到一个div中分左右两个div,左侧div固定宽度或百分比,右侧div中内容左右溢出,需要左右滑动才可以浏览到全部内容,为此写了一个demo. 处理这个问题的核心关键点是 ...
 - ionic js 侧栏菜单 把主要内容区域从一边拖动到另一边,来让左侧或右侧的侧栏菜单进行切换
		
ionic 侧栏菜单 一个容器元素包含侧边菜单和主要内容.通过把主要内容区域从一边拖动到另一边,来让左侧或右侧的侧栏菜单进行切换. 效果图如下所示: 用法 要使用侧栏菜单,添加一个父元素<ion ...
 - HTML实用案例(1)—— 左侧菜单,右侧内容的布局(带左侧菜单点击隐藏显示效果)
		
效果图 代码部分 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" ...
 - 左侧点击后右侧添加tab标签栏以及内容
		
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
 - 左侧栏与右侧内容之锚点、offsetHeight、scrollTop()
		
常用功能 1.点击左侧,右侧相关内容随时点到. 2.滚动右侧信息,左侧标题随之显示背景. 第一点很简单,只要在左侧栏 <li><a href="#aaa"&g ...
 - jquery小效果:新浪游戏右侧导航菜单 (页面效果)
		
偷盗:新浪游戏右侧导航菜单 http://games.sina.com.cn 效果: 随着页面的滚动,左侧页面的内容,和右侧的导航菜单的按钮文字对应: 点击右侧的导航按钮,左侧页面滚动到相应的内容 2 ...
 - vue项目 菜单侧边栏随着右侧内容盒子的高度实时变化
		
测试的时候发现,在选择模板.选择产品第二步第三步的时候.如果超出两行的话会盖住看不见,(因为高度所有统一都被写死了,又加了overflow~emmm~)所以要改成走马灯形式.如图: 那么问题来了,我步 ...
 
随机推荐
- 基于原版Hadoop的YDB部署(转)
			
YDB依赖环境准备 一.硬件环境 硬件如何搭配,能做到比较高的性价比,不存在短板.合理的硬件搭配,对系统的稳定性也很关键. 1.CPU不是核数越高越好,性价比才是关键. 经常遇到很多的企业级客户,他们 ...
 - Python locale 多语言模块和我遇到的坑
			
Table of Contents 1. locale遇到的问题 1.1. locale 简介 1.1.1. 什么是locale 1.1.2. locale 相关命令 1.2. Python loca ...
 - windows下进程间通信(转)
			
摘 要 随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求.编写多进程/多线程程序成为现代程序设计的一个重要特点,在多进程程序设计中,进程间的通信是不可避免的.Microsof ...
 - 《Cracking the Coding Interview》——第16章:线程与锁——题目1
			
2014-04-27 19:09 题目:线程和进程有什么区别? 解法:理论题,操作系统教材上应该有很详细的解释.我回忆了一下,写了如下几点. 代码: // 16.1 What is the diffe ...
 - 《Cracking the Coding Interview》——第12章:测试——题目6
			
2014-04-25 00:53 题目:你要如何测试一个分布式银行系统的ATM机? 解法:ATM是Automatic Teller Machine,取钱的.我想了半天,没找到什么很清晰的思路,也许是因 ...
 - Django笔记 —— 模板
			
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
 - Python 列表、元组、字典及集合操作详解
			
一.列表 列表是Python中最基本的数据结构,是最常用的Python数据类型,列表的数据项不需要具有相同的类型 列表是一种有序的集合,可以随时添加和删除其中的元素 列表的索引从0开始 1.创建列表 ...
 - python练习题及实现--文件处理、date日期
			
练习题作者:Vamei 出处:http://www.cnblogs.com/vamei http://www.cnblogs.com/vamei/archive/2012/07/19/2600135. ...
 - django-settings里redis连接与缓存配置
			
# Django-redis的缓存配置 CACHES = { "default": { "BACKEND": "django_redis.cache. ...
 - 孤荷凌寒自学python第三十二天python的代码块中的异常的捕获
			
孤荷凌寒自学python第三十二天python的代码块中的异常的捕获 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天简单了解了Python的错误陷阱,了解到其与过去学过的其它语言非常类似 ...