左侧菜单栏右侧内容(改进,有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~)所以要改成走马灯形式.如图: 那么问题来了,我步 ...
随机推荐
- 笔记-爬虫-selenium常用方法
笔记-爬虫-selenium常用方法 1. 查找元素 常用的查找方法 find_element_by_name find_element_by_xpath find_element_by_l ...
- Android 人脸识别
Android人脸识别技术,可以参考下面的网站. http://www.faceplusplus.com.cn/ 本项目使用的就是该网站的api. 项目具体使用的技术代码 /** * 用来压缩图片的方 ...
- python和matlab
一.python简介 python是一种面向对象的解释型计算机程序设计语言.python是纯粹的自由软件,源代码和解释器CPython遵循GPL协议.Python语法简介清晰,特色之一是强制用空白符作 ...
- TerminateProcess
Remarks The TerminateProcess function is used to unconditionally cause a process to exit. The state ...
- Java算法求最大最小值,倒序,冒泡排序,斐波纳契数列,日历一些经典算法
一,求最大,最小值 int[] a={21,31,4,2,766,345,2,34}; //这里防止数组中有负数,所以初始化的时候给的数组中的第一个数. int max=a[0]; int min=a ...
- Javascript 属性高级写法
http://www.cnblogs.com/YuanSong/p/3899287.html
- 手把手教你写Windows 64位平台调试器
本文网页排版有些差,已上传了doc,可以下载阅读.本文中的所有代码已打包,下载地址在此. ------------------------------------------------------- ...
- Linux认知之旅【05 进一步了解Linux装软件】!
一.Linux软件管理系统 二.Linux还可以用源码安装 三.Linux软件配置
- ASP NET Core ---FluentValidation
官方文档:https://fluentvalidation.net/ 一.安装: 二.应用: 1.建立PostValidator: public class PostValidator:Abstrac ...
- ironic baremetal node status
参考: https://docs.openstack.org/ironic/latest/contributor/states.html https://docs.openstack.org/iron ...