Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法


Posted in Javascript onSeptember 15, 2018

需求:

1. 页面部分元素的尺寸需要根据实际打开时浏览器尺寸进行设置;

2. 页面打开后,调节浏览器窗口大小时需要动态调节部分元素的尺寸;

需要注意的点:

window.onresize只能在项目中一处进行引用触发,如果在多个地方进行引用触发,会导致只有1个触发事件生效。

解决“多个组件都需要触发”的方案只能是通过一个地方触发后通过组件间通信进行触发。

(以调节class为myDiv的div的宽度为例)

解决需求1的方案:

html

<template>
 <div class="example">
  <div class='myDiv' v-bind:style="{width: myWidth}"></div>
 </div>
</template>

script

<script>
 export default {
  // 其余的忽略不写了
  data () {
   return {
    myWidth: (window.innerWidth - 500) + 'px'
   }
  }
 }
</script>

如上设置后,页面打开时便会动态计算myWidth的值(拼接了'px'后便是字符串属性了)

然后将这个值通过 v-bind:style=”{width: myWidth}” 赋值绑定到我们需要设置的div上了,需求1完成。

因为这个值是载入页面的时候就绑定了,是固定的值。那么在使用过程中,如果用户操作调节了浏览器窗口的大小,那么应该需要触发事件改变这个值才能使组件具有动态调节的效果,这个就是需求2了:

解决需求2的方案:

html

<template>
 <div class="example">
  <div class='myDiv' v-bind:style="{width: myWidth}"></div>
 </div>
</template>

script

<script>
 export default {
  // 其余的忽略不写了
  data () {
   return {
    myWidth: (window.innerWidth - 500) + 'px'
   }
  },
  mounted () {
   // 注:window.onresize只能在项目内触发1次
   window.onresize = function windowResize () {
    // 通过捕获系统的onresize事件触发我们需要执行的事件
    this.myWidth = (window.innerWidth - 500) + 'px';
   }
  }
 }
</script>

需要注意的点:

window.onresize只能在项目中一处进行引用触发,如果在多个地方进行引用触发,会导致只有1个触发事件生效。

解决“多个组件都需要触发”的方案只能是通过一个地方触发后通过组件间通信进行触发。

以上这篇Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
爱恋千雪-US-AscII加密解密工具(网页加密)下载
Jun 06 Javascript
setInterval 和 setTimeout会产生内存溢出
Feb 15 Javascript
js Function类型
Dec 04 Javascript
Javascript处理DOM元素事件实现代码
May 23 Javascript
javascript 正则表达式相关应介绍
Nov 27 Javascript
JavaScript中的正则表达式简明总结
Apr 04 Javascript
Jquery Ajax方法传值到action的方法
May 11 Javascript
jQuery CSS3自定义美化Checkbox实现代码
May 12 Javascript
jQuery实现隔行变色的方法分析(对比原生JS)
Nov 18 Javascript
jQuery实现背景滑动菜单
Dec 02 Javascript
Node连接mysql数据库方法介绍
Feb 07 Javascript
对layui中表单元素的使用详解
Aug 15 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
Sep 15 #Javascript
vue--点击当前增加class,其他删除class的方法
Sep 15 #Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
Sep 15 #Javascript
在vue中实现点击选择框阻止弹出层消失的方法
Sep 15 #Javascript
对vue下点击事件传参和不传参的区别详解
Sep 15 #Javascript
vue-cli webpack 引入swiper的操作方法
Sep 15 #Javascript
swiper在vue项目中loop循环轮播失效的解决方法
Sep 15 #Javascript
You might like
php桌面中心(二) 数据库写入
2007/03/11 PHP
PHP下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
php文件操作之小型留言本实例
2015/06/20 PHP
php操作mongodb封装类与用法实例
2018/09/01 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
Jquery实现跨域异步上传文件总结
2017/02/03 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
简单了解python代码优化小技巧
2019/07/08 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
django使用xadmin的全局配置详解
2019/11/15 Python
简单了解python字符串前面加r,u的含义
2019/12/26 Python
如何基于python实现归一化处理
2020/01/20 Python
Python 输出详细的异常信息(traceback)方式
2020/04/08 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
Python多分支if语句的使用
2020/09/03 Python
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
小学教育毕业生自荐信
2013/11/18 职场文书
大一新生军训时的自我评价分享
2013/12/05 职场文书
回门宴答谢词
2014/01/13 职场文书
反腐倡廉剖析材料
2014/09/30 职场文书
小学生作文批改评语
2014/12/25 职场文书
环卫个人总结
2015/03/03 职场文书
python 实现的截屏工具
2021/05/08 Python
Python中的 enumerate和zip详情
2022/05/30 Python