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 相关文章推荐
javascript Prototype 对象扩展
May 15 Javascript
JS批量修改PS中图层名称的方法
Jan 26 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
Apr 11 Javascript
将HTML格式的String转化为HTMLElement的实现方法
Aug 07 Javascript
JS图片定时翻滚效果实现方法
Jun 21 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
Apr 04 Javascript
Node接收电子邮件的实例代码
Jul 21 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
Dec 07 Javascript
如何用Node写页面爬虫的工具集
Oct 26 Javascript
小程序实现五星点评效果
Nov 03 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
Jul 13 Javascript
详解Vue Cli浏览器兼容性实践
Jun 08 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 mssql 数据库分页SQL语句
2008/12/16 PHP
关于php连接mssql:pdo odbc sql server
2011/07/20 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
javascript完美拖拽的实现方法
2013/09/29 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
javascript工厂方式定义对象
2014/12/26 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
javascrit中undefined和null的区别详解
2019/04/07 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
Python3基础之基本数据类型概述
2014/08/13 Python
python进阶教程之词典、字典、dict
2014/08/29 Python
详解python并发获取snmp信息及性能测试
2017/03/27 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
Python定时器线程池原理详解
2020/02/26 Python
浅谈Python3中print函数的换行
2020/08/05 Python
Python gevent协程切换实现详解
2020/09/14 Python
pytorch简介
2020/11/11 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
web字体加载方案优化小结
2019/11/29 HTML / CSS
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
Ralph Lauren拉夫·劳伦美国官网:带有浓郁美国气息的高品味时装品牌
2017/11/01 全球购物
教师应聘自荐信范文
2014/03/14 职场文书
养成教育经验材料
2014/05/26 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
公司催款律师函
2015/05/27 职场文书
《巨人的花园》教学反思
2016/02/19 职场文书
Python中的xlrd模块使用整理
2021/06/15 Python