layui侧边栏收缩展开,以及点击侧边栏菜单实现内容主体区域iframe切换

话不多说直接上代码(代码有点长),后面附效果图,注意看的代码里面的注解,希望能帮助到有需要的小伙伴!!!!

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>layout 管理界面大布局示例 - Layui</title>
  <meta name="renderer" content="webkit">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link href="//cdn.staticfile.org/layui/2.8.10/css/layui.css" rel="stylesheet">
</head>

<body>
<div class="layui-layout layui-layout-admin">

  <div class="layui-header">
    <div class="layui-logo  layui-bg-black"><i class="layui-icon layui-icon-form"></i><span>管理系统</span>
    </div>
    <!-- 头部区域(可配合layui 已有的水平导航) -->
    <ul class="layui-nav layui-layout-left">
      <!-- 移动端显示 -->
      <li class="layui-nav-item layui-show-xs-inline-block " lay-header-event="menuLeft">
<!--        上面li标签和原来复制下来的不一样-->
        <i class="layui-icon layui-icon-spread-left" id="icon">

        </i>
      </li>
      <li class="layui-nav-item layui-hide-xs"><a href="javascript:;">nav 1</a></li>
      <li class="layui-nav-item layui-hide-xs"><a href="javascript:;">nav 2</a></li>
      <li class="layui-nav-item layui-hide-xs"><a href="javascript:;">nav 3</a></li>
      <li class="layui-nav-item">
        <a href="javascript:;">nav groups</a>
        <dl class="layui-nav-child">
          <dd><a href="javascript:;">menu 11</a></dd>
          <dd><a href="javascript:;">menu 22</a></dd>
          <dd><a href="javascript:;">menu 33</a></dd>
        </dl>
      </li>
    </ul>
    <ul class="layui-nav layui-layout-right">
      <li class="layui-nav-item layui-hide layui-show-sm-inline-block">
        <a href="javascript:;">
          <img src="//unpkg.com/outeres@0.0.10/img/layui/icon-v2.png" class="layui-nav-img">
          tester
        </a>
        <dl class="layui-nav-child">
          <dd><a href="javascript:;">Your Profile</a></dd>
          <dd><a href="javascript:;">Settings</a></dd>
          <dd><a href="javascript:;">Sign out</a></dd>
        </dl>
      </li>
      <li class="layui-nav-item" lay-header-event="menuRight" lay-unselect>
        <a href="javascript:;">
          <i class="layui-icon layui-icon-more-vertical"></i>
        </a>
      </li>
    </ul>
  </div>


  <div class="layui-side layui-bg-black">
    <div class="layui-side-scroll">
      <!-- 左侧导航区域(可配合layui已有的垂直导航) -->
      <ul class="layui-nav layui-nav-tree" lay-filter="test">
        <li class="layui-nav-item layui-nav-itemed">
          <a class="" href="javascript:;">
            <i class="layui-icon layui-icon-spread-left"></i><span>menu
                                groups1</span></a>
          <dl class="layui-nav-child">
<!--            这里的    lay-href   改成自己点击要跳转的页面的路径-->
            <dd><a href="javascript:;" class="link-active" lay-href="demoForm.html" data-id="1"
                   data-title="页面1"><i class="layui-icon layui-icon-spread-left"></i><span>menu
                                        x</span></a></dd>
            <dd><a href="javascript:;" class="link-active" lay-href="test.html" data-id="2"
                   data-title="页面2"><i class="layui-icon layui-icon-spread-left"></i><span>menu
                                        2</span></a></dd>

          </dl>
        </li>
        <li class="layui-nav-item">
          <a href="javascript:;"><i class="layui-icon layui-icon-spread-left"></i><span>menu
                                groups2</span></a>
          <dl class="layui-nav-child">
            <dd><a href="javascript:;">list 1</a></dd>
            <dd><a href="javascript:;">list 2</a></dd>
            <dd><a href="javascript:;">超链接</a></dd>
          </dl>
        </li>
        <li class="layui-nav-item"><a href="javascript:;">click menu item</a></li>
        <li class="layui-nav-item"><a href="javascript:;">the links</a></li>
      </ul>
    </div>
  </div>


  <div class="layui-body">
    <div class="layui-tab" lay-filter="tables" lay-allowclose="true">
      <ul class="layui-tab-title">
<!--这里和原来复制的不一样-->
      </ul>
      <div class="layui-tab-content"></div>
    </div>
    <!-- 内容主体区域 -->

    <div class="layui-footer">
      <!-- 底部固定区域 -->
      底部固定区域
    </div>
  </div>

</div>
  <script src="//cdn.staticfile.org/layui/2.8.10/layui.js"></script>

  <script>
    //JS
    layui.use(['element', 'layer', 'util'], function () {
      var element = layui.element;
      var layer = layui.layer;
      var util = layui.util;
      var $ = layui.$;
      var isShow = true;

      //头部事件
      util.event('lay-header-event', {
        menuLeft: function (othis) { // 左侧菜单事件
          //定义一个标志位
          //选择出所有的span,并判断是不是hidden,用来隐藏icon后面的span里面的内容,而icon不隐藏
          $('.layui-nav-item span').each(function () {
            if ($(this).is(':hidden')) {
              $(this).show();
            } else {
              $(this).hide();

            };
          });
          $('.layui-header span').each(function () {//同上
            if ($(this).is(':hidden')) {
              $(this).show();
            } else {
              $(this).hide();
            };
          });

          //判断isshow的状态
          if (isShow) {//收起来
            $('.layui-side.layui-bg-black').width(60); //设置宽度
            $('.layui-logo').width(60);
           // $('.kit-side-fold i').css('margin-right', '70%');  //修改图标的位置
            $('#icon').removeClass("layui-icon-spread-left");  //修改图标
            $('#icon').addClass("layui-icon-shrink-right");  //修改图标
            $('.layui-side li').removeClass("layui-nav-itemed");//取消选中二级导航栏
            //将footer和body的宽度修改
            $('.layui-layout-left').css('left', 60 + 'px');
            $('.layui-body').css('left', 60 + 'px');
            $('.layui-footer').css('left', 60 + 'px');
            //将二级导航栏隐藏
            // $('dd span').each(function () {
            //   $(this).hide();
            // });
            //修改标志位
            isShow = false;
          } else {//展开来
            $('.layui-side.layui-bg-black').width(200);
            $('.layui-logo').width(200);
          //  $('.kit-side-fold i').css('margin-right', '10%');
            $('.layui-layout-left').css('left', 200 + 'px');
            $('.layui-body').css('left', 200 + 'px');
            $('.layui-footer').css('left', 200 + 'px');
            $('dd span').each(function () {
              $(this).show();
            });
            $('#icon').addClass("layui-icon-spread-left");  //修改图标
            $('#icon').removeClass("layui-icon-shrink-right");  //修改图标
            isShow = true;
          };
        },
        menuRight: function () {  // 右侧菜单事件
          layer.open({
            type: 1,
            title: '更多',
            content: '<div style="padding: 15px;">处理右侧面板的操作</div>',
            area: ['260px', '100%'],
            offset: 'rt', // 右上角
            anim: 'slideLeft', // 从右侧抽屉滑出
            shadeClose: true,
            scrollbar: false
          });
        }
      });
    });
  </script>

  <script>//JavaScript代码区域
  layui.use(['element', 'layer', 'jquery'], function () {
    var element = layui.element;
    var $ = layui.jquery;
    //左侧菜单点击事件
    $('.link-active').on('click', function () {
      var dataid = $(this);

      //判断tab是否已经存在
      var isExist = false;
      $.each($('.layui-tab-title li[lay-id]'), function () {
        //判断主体是否存在与点击tab相同的lay-id
        if ($(this).attr('lay-id') == dataid.attr("data-id")) {
          isExist = true;
        }
      });
      //不存在,增加tab
      if (isExist == false) {
        tabFunction.tabAdd(dataid.attr('lay-href'), dataid.attr('data-id'), dataid.attr('data-title'));
      }
      //存在tab,此时转到要打开的tab就好,不需要新增
      tabFunction.tabChange(dataid.attr('data-id'));

    });


    //定义函数 绑定增加tab,删除tab,切换tab几项事件
    var tabFunction = {
      //新增tab url 页面地址 id 对应data-id name标题
      tabAdd: function (url, id, name) {
        element.tabAdd('tables', {
          title: name,
          content: '<iframe data-frameid="' + id + '" scrolling="auto" frameborder="0" src="' + url + '" style="width:100%;height:800px"></iframe>',
          id: id
        });
      },
      //根据id切换tab
      tabChange: function (id) {
        element.tabChange('tables', id)
      },
      //关闭指定的tab
      tabDelete: function (id) {
        element.tabDelete('tables', id)
      }
    }
  });
  </script>

</body>

</html>

menu
点击菜单menux显示页面1
在这里插入图片描述
实现切换
在这里插入图片描述
点击图标如图下所示
在这里插入图片描述
ok!!!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Layui是一个简单易用的前端UI框架,提供了丰富的组件和功能,方便开发者快速搭建界面。其中,收缩侧边栏然后悬浮显示和点击侧边栏记住当前位置是Layui的一项特性。 收缩侧边栏Layui提供了一个内置的方法可以收缩侧边栏,使其只显示图标或者较小的宽度。可以通过Layui中的collapse组件来实现侧边栏收缩效果。当用户点击收缩按钮时,可以通过监听点击事件,改变侧边栏的样式或者宽度,以实现侧边栏收缩效果。 悬浮显示:当侧边栏收缩隐藏后,可以在页面上添加一个悬浮按钮或者图标,当用户将鼠标移动到该按钮或者图标上时,展开侧边栏显示。可以通过监听鼠标移动事件,判断鼠标是否移动到悬浮按钮或者图标上,如果是,则展开侧边栏,否则侧边栏保持收缩隐藏状态。 点击侧边栏记住当前位置:在侧边栏上的每个菜单项上,可以添加一个点击事件,当用户点击菜单项时,可以通过记录菜单项的ID或其他标识符,将当前位置存储在本地缓存或者URL参数中。下次打开页面时,可以通过读取本地缓存或者URL参数,将侧边栏展开到之前所选的菜单项处。 综上所述,通过Layui的collapse组件实现侧边栏收缩效果,通过监听鼠标移动事件实现悬浮显示效果,通过点击事件将当前位置存储在本地缓存或者URL参数中,可以实现Layui收缩侧边栏然后悬浮显示,并记住当前位置的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值