Vue获取动态样式的宽度;监听获取浏览器的高度和宽度

一。用vue 获取动态元素的宽度。首页,要放在this.nextTick里面,其实要使用el挂载此元素,下面贴代码

<el-input auto-complete="off" v-model="company.companyName" ref="companyStyle"></el-input>
先定义一个ref=companyStyle,我们来获取此元素的宽度,

  newAddBtn(){
        let me = this;
        this.$nextTick(function () {
          me.inputStyWidth = me.$refs.companyStyle.$el.clientWidth + 'px';
        })

这样我们就获取到了这个元素的宽度了
二。监听获取浏览器的高度(另外宽度把clientHeight改为clientWidth)
vue组件中动态获取高度,使用如下方式
首先在data中声明clientHeight变量:

data() {
  return {
    clientHeight: '',
  }
},

如果需要在初始化有一些操作,可以在created中实现:

created() {
  this.windowHeight(document.documentElement.clientHeight);
},

当组件挂载后,调用JS的onresize方法:

mounted() {
  const _this = this;
  window.onresize = () => {
    return (() => {
      _this.clientHeight= `${document.documentElement.clientHeight}`;
    })();
  };
},

在watch中监听高度变化,这里优化了监听间隔,使用setTimeout,每500ms监听一次,这样操作避免了浏览器大小在持续变化时,连续监听带来的卡顿现象:

watch: {
  clientHeight(val) {
    if(!this.timer) {
      this.clientHeight= val
      this.timer = true
      let _this = this
      setTimeout(function () {
        _this.timer = false
      }, 500)
    }
    // 这里可以添加修改时的方法
    this.windowHeight(val);
  }
},

定义上面修改时具体的操作方法:

methods: {
  windowHeight(value) {
           this.clientHeight = value
      }
},

这样就可以实现监听浏览器大小的改变。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 以下内容是我在学习和研究Vue时,对Vue的特性、重点和注意事项的提取、精练和总结,可以做为Vue特性的字典; 1...
    科研者阅读 14,780评论 3 24
  • 什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装...
    youins阅读 13,197评论 0 13
  • Vue-Music 一| 前期工作 1.项目初始化 npm install -g vue-cli vue init...
    noobakong阅读 5,873评论 0 5
  • 一、了解Vue.js 1.1.1 Vue.js是什么? 简单小巧、渐进式、功能强大的技术栈 1.1.2 为什么学习...
    蔡华鹏阅读 8,717评论 0 3
  • 1.vue.js的两个核心是什么? vue.js的两个核心分别是数据驱动(MVVM)和组件化。 一、数据驱动 数据...
    fengcol阅读 4,683评论 0 3

友情链接更多精彩内容