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 Event学习第五章 高级事件注册模型
Feb 07 Javascript
使用JS读秒使用示例
Sep 21 Javascript
jQuery实现表格颜色交替显示的方法
Mar 09 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
Oct 14 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
Nov 17 Javascript
jquery自定义插件开发之window的实现过程
May 06 Javascript
vue.js异步上传文件前后端实现代码
Aug 22 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
Aug 22 Javascript
JS学习笔记之原型链和利用原型实现继承详解
May 29 Javascript
使用p5.js临摹动态图形
Oct 23 Javascript
JavaScript canvas绘制圆弧与圆形
Feb 18 Javascript
js、jquery实现列表模糊搜索功能过程解析
Mar 27 jQuery
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的魔术常量__METHOD__简介
2014/07/08 PHP
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
js日期时间补零的小例子
2013/03/05 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
2013/05/21 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
Javascript核心读书有感之语句
2015/02/11 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
2015/02/18 Javascript
JavaScript中的Function函数
2015/08/27 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
2017/03/15 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
vue单页应用在页面刷新时保留状态数据的方法
2018/09/21 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
详解Django配置优化方法
2019/11/18 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
德国PC硬件网站:CASEKING
2016/10/20 全球购物
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
Whistles官网:英国女装品牌
2020/08/14 全球购物
应届生法律顾问求职信
2013/11/19 职场文书
党员干部2014全国两会学习心得体会
2014/03/10 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
2015年学生资助工作总结
2015/05/25 职场文书
贫困证明书范文
2015/06/16 职场文书
MySQL系列之四 SQL语法
2021/07/02 MySQL
Redis基本数据类型String常用操作命令
2022/06/01 Redis