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 相关文章推荐
Jquery Change与bind事件代码
Sep 29 Javascript
JS在textarea光标处插入文本的小例子
Mar 22 Javascript
jQuery函数的等价原生函数代码示例
May 27 Javascript
JQuery处理json与ajax返回JSON实例代码
Jan 03 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
Feb 27 Javascript
在Javascript中处理数组之toSource()方法的使用
Jun 09 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
May 27 Javascript
jQuery购物网页经典制作案例
Aug 19 Javascript
详解获取jq ul第一个li定位的四种解决方案
Nov 23 Javascript
ng2学习笔记之bootstrap中的component使用教程
Mar 09 Javascript
Jquery中attr与prop的区别详解
May 27 jQuery
微信小程序城市选择及搜索功能的方法
Mar 22 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
zend optimizer在wamp的基础上安装图文教程
2013/10/26 PHP
PHP防范SQL注入的具体方法详解(测试通过)
2014/05/09 PHP
PHP 获取客户端 IP 地址的方法实例代码
2018/11/11 PHP
一个加载js文件的小脚本
2007/06/28 Javascript
jquery $.ajax入门应用二
2008/11/19 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
静态页面html中跳转传值的JS处理技巧
2016/06/22 Javascript
easyui messager alert 三秒后自动关闭提示的实例
2016/11/07 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
2019/04/10 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
redux处理异步action解决方案
2020/03/22 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
Python3之文件读写操作的实例讲解
2018/01/23 Python
Python GUI编程完整示例
2019/04/04 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
Python处理PDF与CDF实例
2020/02/26 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
使用CSS3的appearance属性改变任何元素的浏览器默认风格
2012/12/24 HTML / CSS
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
承办会议欢迎词
2014/01/17 职场文书
班级活动总结格式
2014/08/30 职场文书
个人作风建设总结
2014/10/23 职场文书
2015年九一八事变纪念活动实施方案
2015/05/06 职场文书
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android