zoukankan      html  css  js  c++  java
  • el-tree实现横向排列

    <template>
      <div class="container">
        <div class="routeList-box" v-for="(item,index) in routeList" :key="index">
          <el-collapse v-model="activeNames">
            <el-collapse-item :title="item.title" :name="index">
              <el-tree
                class="el-tree"
                :data="item.list"
                :render-content="renderContent"
                show-checkbox
                node-key="id"
                ref="tree"
                highlight-current
                @node-expand="handleExpand"
                :props="defaultProps"
              ></el-tree>
            </el-collapse-item>
          </el-collapse>
        </div>
      </div>
    </template>
    <script>
    export default {
      data() {
        return {
          routeList: [
            {
              title: "授权管理后台",
              list: [
                {
                  id: 1,
                  label: "京店宝",
                  children: [
                    {
                      id: 2,
                      label: "用户分析",
                      children: [
                        {
                          id: 4,
                          label: "查询次数",
                          children: [
                            {
                              id: 7,
                              label: "页面查看权限"
                            },
                            {
                              id: 7,
                              label: "页面查看权限"
                            },
                            {
                              id: 7,
                              label: "页面查看权限"
                            },
                            {
                              id: 7,
                              label: "页面查看权限"
                            },
                            {
                              id: 8,
                              label: "编辑"
                            }
                          ]
                        },
                        {
                          id: 5,
                          label: "次数分布",
                          children: [
                            {
                              id: 9,
                              label: "次数分布child1"
                            },
                            {
                              id: 10,
                              label: "次数分布child2"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      id: 3,
                      label: "系统性能",
                      children: [
                        {
                          id: 6,
                          label: "所用时间",
                          children: [
                            {
                              id: 7,
                              label: "页面查看权限"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  id: 111,
                  label: "有品库",
                  children: [
                    {
                      id: 112,
                      label: "用户数"
                    }
                  ]
                }
              ]
            }
          ],
          defaultProps: {
            children: "children",
            label: "label"
          }
        };
      },
      mounted() {
        this.changeCss();
      },
      methods: {
      handleExpand() {//节点被展开时触发的事件
        //因为该函数执行在renderContent函数之前,所以得加this.$nextTick()
          this.$nextTick(()=>{
          this.changeCss();
        })
        },
        renderContent(h, { node, data, store }) {//树节点的内容区的渲染 Function
        let classname = "";
          // 由于项目中有三级菜单也有四级级菜单,就要在此做出判断
          if (node.level === 4) {
            classname = "foo";
          }
          if (node.level === 3 && node.childNodes.length === 0) {
            classname = "foo";
          }
          return h(
            "p",
            {
              class: classname
            },
            node.label
          );
        },
        changeCss() {
          var levelName = document.getElementsByClassName("foo"); // levelname是上面的最底层节点的名字
          for (var i = 0; i < levelName.length; i++) {
            // cssFloat 兼容 ie6-8  styleFloat 兼容ie9及标准浏览器
            levelName[i].parentNode.style.cssFloat = "left"; // 最底层的节点,包括多选框和名字都让他左浮动
            levelName[i].parentNode.style.styleFloat = "left";
            levelName[i].parentNode.onmouseover = function() {
              this.style.backgroundColor = "#fff";
            };
          }
        }
      }
    };
    </script>
    <style lang="scss" scoped>
    .container {
       800px;
      padding: 40px;
    }
    .routeList-box {
      border-left: 1px solid #eee;
      border-right: 1px solid #eee;
      margin-bottom: 20px;
      .el-tree {
        margin: 12px 0;
      }
      /deep/.el-collapse-item__header {
        height: 40px;
        background-color: #f4f4f4;
        padding: 0 10px;
      }
      /deep/.el-icon-arrow-right:before {
        color: #409eff;
      }
    }
    /deep/ .el-tree-node__content::before {
      content: "";
      padding-left: 10px;
    }
    /deep/.el-checkbox__input {
      margin-right: 6px;
    }
    </style>
  • 相关阅读:
    一行JS代码实现的滑动门
    一款JS+CSS打造绝对经典的资讯网站滑动门特效
    【荐】JS封装的一个无限级的下拉树形菜单
    JS+CSS实现漂亮实用的红色导航菜单
    JS+CSS仿网易的选项卡TAB标签样式
    JS+CSS实现的不规则TAB选项卡效果
    jQuery仿FLASH响应鼠标滚动的动感菜单
    纯CSS仿迅雷首页的菜单导航代码
    JS+CSS仿雅虎首页网站快捷入口的切换效果
    【荐】Jquery+CSS打造的泡沫弹出框式的侧边蓝色导航菜单
  • 原文地址:https://www.cnblogs.com/1609359841qq/p/14208353.html
Copyright © 2011-2022 走看看