zoukankan      html  css  js  c++  java
  • vue element-ui-tree样式总结

      项目要实现一个右键点击tree节点弹出菜单的需求。

    右键菜单具体实现如下:

    <!-- 自定义右键菜单 -->
            <div v-show="menuVisible">
              <ul id="menu" v-if="this.popoverCurNodeObj.is_classify">
                <li class="menu-item" @click="addSubClassify('addSub')"><i class="icon el-icon-circle-plus-outline"></i> {{popoverText.add}}</li>
                <li class="menu-item" @click="editClassify('editSub')"><i class="icon el-icon-edit"></i> {{popoverText.edit}}</li>
                <li class="menu-item" @click="deleteClassify('deleteClassify')"><i class="icon el-icon-remove-outline"></i> {{popoverText.delete}}</li>
                <li class="menu-item" @click="addTable"><i class="icon el-icon-document"></i> {{popoverText.addTable}}</li>
              </ul>
              <ul id="menu" v-if="!this.popoverCurNodeObj.is_classify">
                <li class="menu-item" @click="editTable('editTable')"><i class="icon el-icon-circle-plus-outline"></i> {{popoverText.editTable}}</li>
                <li class="menu-item" @click="deleteTable('deleteTable')"><i class="icon el-icon-edit"></i> {{popoverText.deleteTable}}</li>
              </ul>
            </div>
     #menu {
         auto;
        height: auto;
        background: #fff;
        position: absolute;
        z-index: 100;
        list-style: none;
        padding: 5px;
        margin: 0;
        font-size: 14px;
        background: #fff;
        box-shadow: 3px 3px 10px rgb(168, 168, 168);
        cursor: pointer;
        .menu-item {
          display: block;
          padding: 5px;
          color: #555;
        }
        .icon {
          color: rgb(64, 158, 255);
        }
      }
    mounted () {
        this.$nextTick(() => {
          document.querySelector('body').addEventListener('click', this.handleBodyClick);
        });
      },
    handleBodyClick () {
          this.menuVisible = false;
    },

     tree的hover与选中

    .el-tree-node__content {
          &:hover {
            background: #89c2f7;
          }
        }
        .el-tree-node:focus>.el-tree-node__content{
          background-color: #5daaf0;
        }
          this.menuVisible = true;
          let menu = document.querySelector('#menu');
          /* 菜单定位基于鼠标点击位置 */
          menu.style.left = event.clientX - 220 + 'px';
          menu.style.top = event.clientY - 150 + 'px';
    /* 鼠标跟随:注意当内容超出一屏要加上scrollTop的距离 */

    elementUI - tree横向滚动问题

    .tree{
    overflow: auto;
    width:80px;
    height: 500px;
    }
    .el-tree {
    min-width: 100%;
    display:inline-block !important;
    }

    1.从element里面找到了自定义的。(详见UI中tree自定义节点内容)。

    2.直接上代码。

    renderContent (h, { node, data, store }) {
          return h('span', {
            style: {
              color: '#606266'
            },
            on: {
              // 'contextmenu': () => {
              //   Vue.set(data, 'is_show', true);
              // },
              'mouseenter': () => {
                // Vue.set(data, 'is_show', true);
              },
              'mouseleave': () => {
                // Vue.set(data, 'is_show', false);
              }
            }
          }, [
            h('span', {
            }, node.label),
            h('span', {
              style: {
                display: data.is_show ? '' : 'none'
              }
            }, [
              h('el-button', {
                props: {
                  type: 'text',
                  size: 'small'
                },
                style: {
                  marginLeft: '15px'
                },
                on: {
                  click: () => {
                    this.addSubClassify('addSub');
                    Vue.set(data, 'is_show', false);
                  }
                }
              }, '新增子分类'),
              h('el-button', {
                props: {
                  type: 'text',
                  size: 'small'
                },
                style: {
    
                },
                on: {
                  click: () => {
                    this.editClassify('editSub');
                    Vue.set(data, 'is_show', false);
                  }
                }
              }, '编辑分类'),
              h('el-button', {
                props: {
                  type: 'text',
                  size: 'small'
                },
                style: {
    
                },
                on: {
                  click: () => {
                    this.deleteClassify('deleteClassify');
                    Vue.set(data, 'is_show', false);
                  }
                }
              }, '删除分类'),
              h('el-button', {
                props: {
                  type: 'text',
                  size: 'small'
                },
                style: {
    
                },
                on: {
                  click: () => {
                    this.addTable();
                    Vue.set(data, 'is_show', false);
                  }
                }
              }, '新增表')
            ])
          ]);
        },

    3.摘自网上相关参考链接。

    1)https://blog.csdn.net/Bonjourjw/article/details/80805463

    2)https://blog.csdn.net/bonjourjw/article/details/81108951

    3)https://blog.csdn.net/wxfdpp/article/details/83624460

  • 相关阅读:
    第二周:If判断语句程序当中的作用简介
    普通B/S架构模式同步请求与AJAX异步请求区别(个人理解)
    第一周:Java基础知识总结(1)
    silverlight 碰撞检测
    超强silverlight绘图
    javascript 判断一个对象是否具有指定名称的属性
    关于IE的RegExp.exec
    浏览器 禁止选择
    silverlight 无限制坐标系统
    CSS Sprite样式生成器网页制作缺她不可
  • 原文地址:https://www.cnblogs.com/jiaqi1719/p/10069277.html
Copyright © 2011-2022 走看看