问题形容

饿了么UI提供的el-dialog能够用来定制大的场景,就是el-dialog外面能够放很多货色,比方能够放表单表格el-table或el-form等。然而有时候谷歌浏览器款式是正确的,到IE浏览器外面,款式就会局部不失效。所以,我感觉如果场景不小的话,齐全能够用本人写的弹出对话框,不必饿了么UI中的el-dialog。当然,如果你的我的项目不必思考去兼容IE倒也无所谓(心愿IE早点被淘汰吧)。

最终成果如下

代码如下

<template>  <div id="app">    <!-- 在点击按钮的回调中,去管制div的暗藏和显示 -->    <el-button @click="showDialog">点击弹出对话框</el-button>    <!-- 应用transition动画过渡一下,看起来不会太突兀 -->    <transition name="fade">      <!-- 内部的这个div,开启固定定位,设置宽高100%,这样的话,就是一个满屏幕的背景图了。      给满屏的内部div绑定一个点击事件,这样点击的话,就能够管制满屏的隐没与暗藏。然而如果只是这样写的话。      就会导致点击外部的内容区div也会使得整体的暗藏。因为事件会冒泡,点击外部的div也相当于点击了内部的div。      这种成果,显然不是咱们想要的成果,所以咱们须要阻止外部的div的冒泡事件 @click.stop 间接加上就行了,这种写法      会比拟不便一些,当然也能够应用传统写法,@click.stop="fn" 在fn的回调中间接return,完结这个事件,不做事件  -->      <div class="dialog" v-if="isShowDialog" @click="outClick">        <!-- <div class="content" @click.stop="fn">  fn(){ return }  // 传统写法 -->        <div class="content" @click.stop>  <!-- 简便写法 -->          欢迎光临我的博客哦...          <i class="el-icon-close" @click="iconClick"></i> <!-- 外部当然也要无关掉的形式,所以加上一个点击敞开 -->        </div>      </div>    </transition>  </div></template><script>export default {  name: "app",  data() {    return {      isShowDialog: false,    };  },  methods: {    showDialog() {      this.isShowDialog = true;    },    outClick(){      this.isShowDialog = false;    },    iconClick(){      this.isShowDialog = false    }  },};</script><style lang="less" scoped>#app {  width: 100%;  height: 100%;  .dialog {    position: fixed;    top: 0;    left: 0;    width: 100%;    height: 100%;    background-color: rgba(0, 0, 0, 0.5);    z-index: 999;    display: flex;    justify-content: center;    align-items: center;    .content {      width: 240px;      height: 200px;      display: flex;      justify-content: center;      align-items: center;      background: #fff;      border-radius: 8px;      box-sizing: border-box;      padding: 20px;      position: relative;      i {        font-size: 20px;        cursor: pointer;        color: #baf;        position: absolute;        top: 8px;        right: 8px;      }    }  }}// 管制淡入淡出成果.fade-enter-active,.fade-leave-active {  transition: opacity 0.5s;}.fade-enter, .fade-leave-to {  opacity: 0;}</style>