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的动态创建DOM元素的代码
Dec 28 Javascript
jquery中插件实现自动添加用户的具体代码
Nov 15 Javascript
js中将String转换为number以便比较
Jul 08 Javascript
JS是按值传递还是按引用传递
Jan 30 Javascript
如何通过js实现图片预览功能【附实例代码】
Mar 30 Javascript
又一枚精彩的弹幕效果jQuery实现
Jul 25 Javascript
jQuery实现对象转为url参数的方法
Jan 11 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
Nov 27 Javascript
layer.open 获取不到表单信息的解决方法
Sep 26 Javascript
ES6实现图片切换特效代码
Jan 14 Javascript
Vue初始化中的选项合并之initInternalComponent详解
Jun 11 Javascript
解决Nuxt使用axios跨域问题
Jul 06 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
PHP4之COOKIE支持详解
2006/10/09 PHP
多php服务器实现多session并发运行
2006/10/09 PHP
php中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
PHP使用DES进行加密与解密的方法详解
2013/06/06 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
利用JQuery的load函数动态加载其它页面的内容的实现代码
2010/12/14 Javascript
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
javascript中去除数组重复元素的实现方法【实例】
2016/04/12 Javascript
JavaScript Math 对象常用方法总结
2016/04/28 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
nodejs初始化init的示例代码
2018/10/10 NodeJs
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
Javascript中Math.max和Math.max.apply的区别和用法详解
2020/08/24 Javascript
Python程序语言快速上手教程
2012/07/18 Python
在Django框架中编写Context处理器的方法
2015/07/20 Python
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
python里dict变成list实例方法
2019/06/26 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
Ralph Lauren意大利官方网站:时尚界最负盛名的品牌之一
2018/10/18 全球购物
英语专业毕业生自荐信范文
2013/12/31 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
2015年政教主任工作总结
2015/07/23 职场文书
初中政治教学反思
2016/02/23 职场文书
Html5通过数据流方式播放视频的实现
2021/04/27 HTML / CSS
redis数据一致性的实现示例
2022/03/18 Redis
使用Redis实现分布式锁的方法
2022/06/16 Redis