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 相关文章推荐
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
Apr 27 Javascript
在标题栏显示新消息提示,很多公司项目中用到这个方法
Nov 04 Javascript
jquery阻止冒泡事件使用模拟事件
Sep 06 Javascript
JavaScript支持的最大递归调用次数分析
Jun 24 Javascript
javascript trim函数在IE下不能用的解决方法
Sep 12 Javascript
浅谈javascript对象模型和function对象
Dec 26 Javascript
详解vue-cli中配置sass
Jun 21 Javascript
一个有意思的鼠标点击文字特效jquery代码
Sep 23 jQuery
JS验证输入的是否是数字及保留几位小数问题
May 09 Javascript
详解如何写出一个利于扩展的vue路由配置
May 16 Javascript
vue多页面项目中路由使用history模式的方法
Sep 23 Javascript
JavaScript编码小技巧分享
Sep 17 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中养成7个面向对象的好习惯
2010/01/28 PHP
php使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
js调用图片隐藏&amp;显示实现代码
2013/09/13 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
查找Oracle高消耗语句的方法
2014/03/22 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
JS采用绝对定位实现回到顶部效果完整实例
2016/06/20 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
JS验证全角与半角及相互转化的介绍
2017/05/18 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
基于jQuery的表单填充实例
2017/08/22 jQuery
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
2020/05/29 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
解决vue-photo-preview 异步图片放大失效的问题
2020/07/29 Javascript
[01:13]这,就是刀塔
2014/07/16 DOTA
Python yield使用方法示例
2013/12/04 Python
python事件驱动event实现详解
2018/11/21 Python
python用插值法绘制平滑曲线
2021/02/19 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
如何一键升级Python所有包
2020/11/05 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
css 元素选择器的简单实例
2016/05/23 HTML / CSS
自荐信的禁忌和要点
2013/10/15 职场文书
合同意向书范本
2014/07/30 职场文书
导航工程专业自荐信
2014/09/02 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
2015年科协工作总结
2015/05/19 职场文书
交通事故赔偿起诉书
2015/05/20 职场文书