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

这是上一篇文章的改进。

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

这是效果图:

主要改动:

对样式进行删减和优化。

重点就是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. 【转帖】置高并发jdbc连接池

    简单的MySQL连接池 <Resource type="javax.sql.DataSource" name="jdbc/TestDB" factory= ...

  2. CSAcademy Palindromic Concatenation 字符串哈希

    题意: 题目链接 给出\(n\)个字符串,求有多少对\((i,j),i \neq j\)使得\(s_i\)与\(s_j\)拼起来是回文串 分析: 设\(s_i,s_j\)的长度分别为\(L_i, L_ ...

  3. P2370 yyy2015c01的U盘

    P2370 yyy2015c01的U盘 题目背景 在2020年的某一天,我们的yyy2015c01买了个高端U盘. 题目描述 你找yyy2015c01借到了这个高端的U盘,拷贝一些重要资料,但是你发现 ...

  4. 斐波那契数列(递归)&求100以内的素数

    Java 5 添加了 java.util.Scanner 类,这是一个用于扫描输入文本的新的实用程序.它是以 前的 StringTokenizer 和 Matcher 类之间的某种结合.由于任何数据都 ...

  5. 考拉Android统一弹框

    作者:钱成杰 背景 在快速开发的背景下,经历了n个版本后的考拉Android App中已经存在了各种各样看似相同却各有差别的弹框样式.其中包括系统弹框和自定义弹框,并且在线上时常会出现IllegalA ...

  6. copyEvens

    public int[] copyEvens(int[] nums, int count) { int newIndex=0; int i=0; int newArray[] = new int[co ...

  7. 【Remove Duplicates from Sorted List 】cpp

    题目: 第一次刷的时候漏掉了这道题. Given a sorted linked list, delete all duplicates such that each element appear o ...

  8. TIDB介绍

    TiDB 是什么? TiDB 是一个分布式 NewSQL 数据库.它支持水平弹性扩展.ACID 事务.标准 SQL.MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 O ...

  9. python之while/for循环

    一.while循环 (一)循环语句 while 后面接判断语句,在返回结果时有以下几种语句: 1.break 仅适用于循环语句,意思是结束最近的循环 2.continue 仅适用于循环语句,意思是跳到 ...

  10. win10&hyper上装Ubuntu出现没有找到dev fd0, sector 0 错误

    win10 hyper装 ubuntu blk_update_request:I/O error,dev sr0,sector0 错误 配置好安装重启后出现 blk_update_request: I ...