el-dialog宽度自适应

最近在自适应上做了很多功夫

其中有一个是,在使用element-plus的el-dialog时,在pc端和在手机端打开,由于屏幕宽度的不同,我希望el-dialog的宽度是不一样的。

而el-dialog设置宽度是通过width属性,直接用%来相对窗口设置宽度。

我先后尝试了媒体查询,监听屏幕宽度和监听视口宽度来自适应。

1️⃣首先,直接给el-dialog设置自定义class结合媒体查询是无效的,直接设置el-dialog的样式属性无效。

复制代码
@media (max-width: 800px) {
  /* 当屏幕宽度小于等于800px时 */
  .el-dialog1{
    width: 90%;
  }
}
@media (min-width: 1000px) and (max-width: 1250px) {
  .el-dialog1{
    width: 60%;
  }
}
@media (min-width: 1250px) {
  .el-dialog1{
    width: 50%;
  }
}

2️⃣监听屏幕宽度window.innerWidth

通过获取window.innerWidth进行判断然后动态设置width属性

可以让我实现手机打开和pc端打开是不同的宽度。

html 复制代码
  <el-dialog v-model="data.dialogVisible" title="" :width="data.width1">

     //...

  </el-dialog>
javascript 复制代码
onMounted(() => {
  if(window.innerWidth <= 1000){
      data.width1 = "80%";      
  }else{
      data.width1 = "50%";
  }
});

但是!这只是获取你操作屏幕的宽度,并不是你窗口的宽度。

当我在pc端用浏览器打开页面,并缩小窗口时,并不会触发宽度的变化。因为window.innerWidth获取的一直都是你设备的宽度。

3️⃣监听视口/窗口宽度document.documentElement.clientWidth;

这时候,改变窗口大小,获取到的宽度就会随之改变了。

但每次窗口修改时我需要刷新才会重新触发修改width的操作,所以这里我再加了个监听视口变化的操作。

javascript 复制代码
onMounted(() => {
  // 添加 resize 事件监听器
  window.addEventListener("resize", watchWidth);
});

watchWidth就是我获取document.documentElement.clientWidth修改width的方法。

这样子再经过调试就可以实现想要的手机电脑自适应效果了。

相关推荐
岁岁种桃花儿8 分钟前
Vue核心语法第一篇:Vue是什么?
前端·javascript·vue.js
Highcharts.js36 分钟前
数据可视化避坑指南 ——开发中常见图表错误与修复方案
javascript·信息可视化·数据可视化·highcharts·数据可视化避坑·修复方案
观无1 小时前
若依EasyExcel实现单元格合并
开发语言·前端·javascript
xiaohaiAIgeo1 小时前
【2026年】HG/T 20656-2024化工暖通空调设计规范:新版标准的变化与影响
java·前端·javascript·科普知识
立少→万能汉编1 小时前
用“立少→超文本”写静态网页,标签<倍>
服务器·前端·javascript
你挚爱的强哥2 小时前
【chromeDownload】自定义组件:多用于登录框底部提供下载Chrome谷歌浏览器的链接
前端·vue.js·chrome
daols882 小时前
vue 甘特图 vxe-gantt 任务条拖拽自动更新日期
javascript·vue.js·甘特图
kisbad3 小时前
Day 036|OpenAI Agents SDK 快速开始:今天跑通第一个 Agent
java·前端·javascript
xiaominlaopodaren4 小时前
three.js地图数学基础(八):浮点精度
javascript·gis·three.js
SendTomo4 小时前
跨设备文件互传新方案
javascript·网络·webrtc·html5·p2p