el-popover弹框自定义位置

 

<el-popover
          ref="popover"
          placement="bottom-start"
          popper-class="popperShow"
          trigger="click"
          @show="iconName = false"
          @hide="popoverHide"
        >
          <i
            :class="{
              'el-icon-setting': iconName,
              'el-icon-s-tools': !iconName,
            }"
            slot="reference"
            @click="handlerMouseenter" // 点击显示弹窗
          ></i>
          <!-- <el-row :gutter="10">
            <el-col :span="8" v-for="colItem in tableHead" :key="colItem.filedName">
              <el-checkbox v-model="colItem.show">{{textEscape(colItem.filedName)}}</el-checkbox>
            </el-col>
          </el-row> -->
          <ul class="loopBox">
            <draggable
              v-model="tableHead"
              chosenClass="chosen"
              ghostClass="ghost"
              handle=".el-icon-rank"
              animation="300"
            >
              <transition-group>
                <li
                  class="loopLis"
                  @mouseup="!colItem.fixed ? insertBox(colItem, index) : ''"
                  v-for="(colItem, index) in tableHead"
                  :key="`${colItem.filedName}${colItem.filedCode}`"
                >
                  <el-checkbox
                    v-model="colItem.show"
                    :true-label="1"
                    :false-label="0"
                    class="lable"
                    >{{ textEscape(colItem.filedName) }}
                  </el-checkbox>
                  <div class="operation">
                    <i class="el-icon-rank" v-if="!colItem.fixed"></i>
                    <div
                      class="fixedBox"
                      @click="fixedSwitch(colItem)
                      "
                    >
                      <svg-icon
                       
                        icon-class="padlock-closed"
                        t="1492500959545"
                        style=""
                        viewBox="0 0 1024 1024"
                        version="1.1"
                        p-id="1691"
                        width="64"
                        height="64"
                        fill="#18a86b"
                        class="redColor"
                      ></svg-icon>
                     
                    </div>
                  </div>
                </li>
              </transition-group>
            </draggable>
          </ul>
        </el-popover>
 handlerMouseenter(event) {
      // 鼠标进入触发元素
      const popover = this.$refs.popover;

      let timer = setTimeout(() => {
        const { clientX } = event;
        const bodyWidth = document.body.clientWidth;
        // 找到气泡元素
        const { popperElm } = popover;
        /**
         * 鼠标位置+气泡弹框宽度是否小于body的宽度
         * 1. 是,设置鼠标位置为气泡弹框横向位移
         * 2. 否,设置body宽度-气泡弹框宽度为气泡弹框横向位移
         */
        let disX =
          clientX + popperElm.offsetWidth < bodyWidth
            ? clientX
            : bodyWidth - popperElm.offsetWidth;

        popover.popperElm.style.right = 15 + "px";//修改位置
        popover.popperElm.style.top = 285 + "px";

        clearTimeout(timer);
      }, 5);
    },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值