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

这是上一篇文章的改进。

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

这是效果图:

主要改动:

对样式进行删减和优化。

重点就是js部分了。

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

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

代码如下:

HTML:

  1. <div class="wrap">
  2. <ul class="left">
  3. <li class="ma-li">
  4. <p>大分类</p>
  5. <ul>
  6. <li class="pa-li">小分类</li>
  7. <li class="pa-li">小分类</li>
  8. <li class="pa-li">小分类</li>
  9. <li class="pa-li">小分类</li>
  10. </ul>
  11. </li>
  12. <li class="ma-li">
  13. <p>大分类</p>
  14. <ul>
  15. <li class="pa-li">小分类</li>
  16. <li class="pa-li">小分类</li>
  17. <li class="pa-li">小分类</li>
  18. <li class="pa-li">小分类</li>
  19. </ul>
  20. </li>
  21. <li class="ma-li">
  22. <p>大分类</p>
  23. <ul>
  24. <li class="pa-li">小分类</li>
  25. <li class="pa-li">小分类</li>
  26. <li class="pa-li">小分类</li>
  27. <li class="pa-li">小分类</li>
  28. </ul>
  29. </li>
  30. <li class="ma-li">
  31. <p>大分类</p>
  32. <ul>
  33. <li class="pa-li">小分类</li>
  34. <li class="pa-li">小分类</li>
  35. <li class="pa-li">小分类</li>
  36. <li class="pa-li">小分类</li>
  37. </ul>
  38. </li>
  39. <li class="ma-li">
  40. <p>大分类</p>
  41. <ul>
  42. <li class="pa-li">小分类</li>
  43. <li class="pa-li">小分类</li>
  44. <li class="pa-li">小分类</li>
  45. <li class="pa-li">小分类</li>
  46. </ul>
  47. </li>
  48. </ul>
  49. <ul class="right">
  50. <li class="right-list">水果</li>
  51. <li class="right-list">水果</li>
  52. <li class="right-list">水果</li>
  53. <li class="right-list">水果</li>
  54. <li class="right-list">水果</li>
  55. <li class="right-list">水果</li>
  56. <li class="right-list">水果</li>
  57. <li class="right-list">水果</li>
  58. <li class="right-list">水果</li>
  59. <li class="right-list">水果</li>
  60. <li class="right-list">水果</li>
  61. </ul>
  62. </div>

CSS:

  1. *{
  2. margin:;
  3. padding:;
  4. list-style: none;
  5. }
  6. html,body{
  7. height: 100%
  8. }
  9. .wrap{
  10. height: 100%;
  11. display: flex;
  12. }
  13. .left{
  14. width: 30%;
  15. height: 100%;
  16. overflow-y: auto;
  17. color: #7a7a7a;
  18. }
  19. .right{
  20. flex:;
  21. height: 100%;
  22. overflow-y: auto;
  23. color: #373737;
  24. }
  25.  
  26. .ma-li,.pa-li,.right-list{
  27. font-size: 16px;
  28. line-height: 45px;
  29. }
  30. .ma-li p,.right-list{
  31. padding-left: 20px;
  32. border-bottom: 1px solid #e5e2dc;
  33. }
  34. .ma-li.active p{
  35. border-left: 5px solid #1657c9;
  36. padding-left: 15px;
  37. }
  38. .ma-li.active ul{
  39. border-bottom: 1px solid #e5e2dc;
  40. }
  41. .pa-li{
  42. padding-left: 20px;
  43. }
  44. .pa-li.active{
  45. color: #1657c9
  46. }

JAVASCRIPT:

  1. var _leftMain = document.getElementsByClassName('left')[0];
  2. var _leftMaLi = _leftMain.getElementsByClassName('ma-li');
  3. var _leftMaliUl = _leftMain.getElementsByTagName('ul');
  4. var index = 0;
  5. for(var i = 0;i<_leftMaLi.length;i++){
  6. _leftMaLi[i]['data-index'] = i
  7. if(_leftMaLi[i].className.indexOf('active')==-1){
  8. _leftMaliUl[i].style.display = 'none'
  9. }
  10. _leftMaLi[i].onclick = function (event){
  11. event = event||window.event;
  12. if(event.target.tagName == 'P'){
  13. this.className += ' active';
  14. index = this['data-index']
  15. _leftMaliUl[index].style.display = 'block'
  16. var liChilds = this.getElementsByClassName('pa-li');
  17. liChilds[0].className += ' active'
  18. for(var i = 1;i<liChilds.length;i++){
  19. liChilds[i].className = liChilds[i].className.replace('active', '')
  20. }
  21. updateOtherMaLi()
  22. }else if(event.target.tagName == 'LI'){
  23. var allLi = event.target.parentNode.children;
  24. for(var j = 0;j<allLi.length;j++){
  25. allLi[j].className = allLi[j].className.replace('active', '')
  26. }
  27. event.target.className += ' active'
  28. }
  29. }
  30. }
  31. function updateOtherMaLi(){
  32. for(var i = 0;i<_leftMaLi.length;i++){
  33. if(i!=index){
  34. _leftMaLi[i].className = _leftMaLi[i].className.replace('active','')
  35. _leftMaliUl[i].style.display = 'none'
  36. }
  37. }
  38. }
  39. _leftMaLi[index].className += ' active'
  40. _leftMaLi[index].getElementsByClassName('pa-li')[0].className += ' active'
  41. _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. 笔记-爬虫-selenium常用方法

    笔记-爬虫-selenium常用方法 1.      查找元素 常用的查找方法 find_element_by_name find_element_by_xpath find_element_by_l ...

  2. Android 人脸识别

    Android人脸识别技术,可以参考下面的网站. http://www.faceplusplus.com.cn/ 本项目使用的就是该网站的api. 项目具体使用的技术代码 /** * 用来压缩图片的方 ...

  3. python和matlab

    一.python简介 python是一种面向对象的解释型计算机程序设计语言.python是纯粹的自由软件,源代码和解释器CPython遵循GPL协议.Python语法简介清晰,特色之一是强制用空白符作 ...

  4. TerminateProcess

    Remarks The TerminateProcess function is used to unconditionally cause a process to exit. The state ...

  5. Java算法求最大最小值,倒序,冒泡排序,斐波纳契数列,日历一些经典算法

    一,求最大,最小值 int[] a={21,31,4,2,766,345,2,34}; //这里防止数组中有负数,所以初始化的时候给的数组中的第一个数. int max=a[0]; int min=a ...

  6. Javascript 属性高级写法

    http://www.cnblogs.com/YuanSong/p/3899287.html

  7. 手把手教你写Windows 64位平台调试器

    本文网页排版有些差,已上传了doc,可以下载阅读.本文中的所有代码已打包,下载地址在此. ------------------------------------------------------- ...

  8. Linux认知之旅【05 进一步了解Linux装软件】!

    一.Linux软件管理系统 二.Linux还可以用源码安装 三.Linux软件配置

  9. ASP NET Core ---FluentValidation

    官方文档:https://fluentvalidation.net/ 一.安装: 二.应用: 1.建立PostValidator: public class PostValidator:Abstrac ...

  10. ironic baremetal node status

    参考: https://docs.openstack.org/ironic/latest/contributor/states.html https://docs.openstack.org/iron ...