Element UI Dialog 元件自適應的方法

好久不見!最近在學習使用 Element UI 的這個框架,發現其實滿方便的,但好像也有很多坑 !? 這邊筆記一下如何讓 Dialog 元件自適應….

首先先在 <el-dialog> 標籤中綁定 width 到一個變數中

<template>
  <el-dialog title="Edit" center :visible.sync="isEdit" :width="dialogWidth">
    <el-form :model="editTmp">
      <el-form-item label="Title" :label-width="formLabelWidth">
        <el-input v-model="editTmp.title" autocomplete="off"></el-input>
      </el-form-item>
    </el-form>
    <div slot="footer" class="dialog-footer">
      <el-button @click="isEdit = false">Cancel</el-button>
      <el-button type="primary" @click="eventSave">Save</el-button>
    </div>
  </el-dialog>
</template>

在 data 中建立 dialogWidth 變數並設定預設參數,接著在 mounted 中加入當 window.onresize 事件觸發時隨著瀏覽器寬度調整,當瀏覽器寬度大於 dialogWidth 變數的數值時, Dialog 保持不變,反之若小於時則保持 100% 的寬度

export default {
  name: "Home",
  data() {
    return {
      formLabelWidth: "50px",
      dialogWidth: "350px",
    };
  },
  mounted() {
    // Element UI Dialog 自適應
    window.onresize = () => {
      return (() => {
        this.setDialogWidth();
      })();
    };
  },
  mutations: {
      setDialogWidth() {
      let windowSize = document.body.clientWidth;
      const defaultWidth = 450; // 預設寬度
      if (windowSize < defaultWidth) {
        this.dialogWidth = "100%";
      } else {
        this.dialogWidth = defaultWidth + "px";
      }
    },
  }

打完收工,效果圖如下

Leave a comment