vue3+element-plus中dialog组件去掉遮罩层后可以操作底层页面,以及弹窗嵌套弹窗如何去掉遮罩层且可以操作底层页面

一、去掉遮罩层

添加 :modal="false":close-on-click-modal="false" 两个属性去掉遮罩层

<el-dialog
    v-model="DialogVisilble"
    :width="360"
    title="示例"
    :modal="false"
    :close-on-click-modal="false"
  >

二、正常操作底层页面

当添加上述的属性后,发现仍然无法正常操作底层页面,这时我们需要添加如下代码:

<el-dialog
    v-model="DialogVisilble"
    :width="360"
    title="示例"
    :modal="false"
    :close-on-click-modal="false"
    modal-class="dialog_class"
  >

其中 dialog_class 是自定义类名,和下面代码中的类名相同即可 

.dialog_class {
  pointer-events: none;
}
 
.el-dialog {
  pointer-events: auto;
}

三、如果是弹窗嵌套弹窗,以上方法可能不会去掉遮罩层,这时就需要添加官网给出的另一个属性:append-to-body

<el-dialog
    v-model="DialogVisilble"
    :width="360"
    title="示例"
    append-to-body
    :modal="false"
    :close-on-click-modal="false"
    modal-class="dialog_class"
  >

### Vue3 中使用 Element Plus 的 `el-input` 组件 #### 安装和引入 Element Plus 为了在项目中使用 Element Plus,首先需要安装该库: ```bash npm install element-plus ``` 接着,在项目的入口文件(通常是 main.ts 或者 main.js)中全局注册 Element Plus 和样式文件。 ```javascript import { createApp } from &#39;vue&#39;; import App from &#39;./App.vue&#39;; import ElementPlus from &#39;element-plus&#39;; import &#39;element-plus/lib/theme-chalk/index.css&#39;; const app = createApp(App); app.use(ElementPlus); app.mount(&#39;#app&#39;); ``` #### 基本用法 下面是一个简单的例子展示如何在一个页面上使用 `el-input` 输入框组件。此示例展示了基本输入框以及带图标按钮的组合形式[^2]。 ```html <template> <div class="example"> <!-- 单行文本 --> <el-input v-model="text" placeholder="请输入内容"></el-input> <!-- 多行文本域 --> <el-input type="textarea" :rows="4" v-model="textarea" placeholder="请输入内容"></el-input> <!-- 带前置/后置标签 --> <el-input placeholder="请选择日期" suffix-icon="el-icon-date"></el-input> <!-- 自定义前缀或后缀图标的插槽 --> <el-input placeholder="请输入内容"> <template #prefix><i class="el-icon-search"></i></template> </el-input> </div> </template> <script setup lang="ts"> import { ref } from &#39;vue&#39;; let text = ref(&#39;&#39;); let textarea = ref(&#39;&#39;); </script> ``` 对于更复杂的场景,比如当遇到像对话框内的 input 获取不到焦点的问题时,可以尝试通过 `$nextTick()` 方法来延迟执行获取焦点的操作,确保 DOM 已经更新完毕后再操作DOM元素[^1]。 #### 解决弹窗内 Input 不聚焦问题的方法 如果发现 `el-dialog` 打开后里面的 `el-input` 没有自动获得焦点,则可以在打开对话框之后立即调用一次 `$nextTick()` 来等待视图渲染完成;然后再嵌套一层 `$nextTick()` 调用来真正设置焦点给目标 input 元素。 ```typescript this.dialogVisible = true; this.$nextTick(() => { this.$nextTick(() => { (this.$refs.input as HTMLInputElement).focus(); }); }); ``` 需要注意的是这里的 `ref="input"` 是指定了要访问的具体 input 控件的名字属性值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值