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入门·动态的时钟,显示完整的一些方法,新年倒计时
Oct 01 Javascript
浅析Node.js 中 Stream API 的使用
Oct 23 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
Jul 04 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
Apr 10 Javascript
详解为Bootstrap Modal添加拖拽的方法
Jan 05 Javascript
vue2.0 自定义组件的方法(vue组件的封装)
Jun 05 Javascript
jQuery分组选择器简单用法示例
Apr 04 jQuery
vue.js实现备忘录demo
Jun 26 Javascript
jquery弹窗时禁止body滚动条滚动的例子
Sep 21 jQuery
mpvue实现小程序签到金币掉落动画(api实现)
Oct 17 Javascript
微信小程序单选框自定义赋值
May 26 Javascript
解决VUEX的mapState/...mapState等取值问题
Jul 24 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中$_POST与php://input的区别实例分析
2015/01/07 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
accesskey 提交
2006/06/26 Javascript
Javascript中暂停功能的实现代码
2007/03/04 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
理解javascript正则表达式
2016/03/08 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
python中的装饰器详解
2015/04/13 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
python爬取网页转换为PDF文件
2018/06/07 Python
Python3中的列表生成式、生成器与迭代器实例详解
2018/06/11 Python
Atom的python插件和常用插件说明
2018/07/08 Python
Flask之flask-session的具体使用
2018/07/26 Python
Python类的继承用法示例
2019/01/31 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
美国休闲服装品牌:Express
2016/09/24 全球购物
乡镇科协工作总结2015
2015/05/19 职场文书
清洁工工作总结
2015/08/11 职场文书
小学三年级数学教学反思
2016/02/16 职场文书
聊聊JS ES6中的解构
2021/04/29 Javascript
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记
MySQL创建管理LIST分区
2022/04/13 MySQL
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript