【发布时间】:2017-05-04 14:58:58
【问题描述】:
我已经构建了一个 VueJS 组件并在同一页面上多次使用它。组件完美地相互独立工作,但是组件中有一个方法可以获取它的 offsetWidth 并将其(带有前缀)作为一个类(例如 width-800)应用于组件。
当页面上只有一个组件时,它可以正常工作。
当有多个时,只有最后一次出现应用该类。它确实以正确的宽度正确计算了类,但只是没有将其应用于页面上的其他类。
<template>
<div id="app-medialib" v-bind:class="[this.breakpoint]">
<p>{{ this.breakpoint }}</p>
this.breakpoint 是一个保存类名的数据属性。
mounted: function(){
var self = this;
this.calculateBreakpoint();
window.onresize = function(event) {
self.calculateBreakpoint();
};
}
以及断点方法:
calculateBreakpoint: function(){
var mediaLibraryWidth = null;
var elems = document.getElementsByClassName('header medialib');
for( var i=0; i<elems.length; i++ ){
if( elems[i].offsetParent !== null ){
console.log('elems[i]', elems[i]);
mediaLibraryWidth = elems[i].offsetWidth;
break;
}
}
console.log('calculateBreakpoint', mediaLibraryWidth);
if( mediaLibraryWidth > 956 ) {
this.breakpoint = 'md';
} else if( mediaLibraryWidth < 957 && mediaLibraryWidth > 700 ){
this.breakpoint = 'sm';
} else {
this.breakpoint = 'xs';
}
console.log('calculateBreakpoint', this.breakpoint);
},
非常感谢任何帮助。一直在挠头。
谢谢。
【问题讨论】:
-
我们需要调用该组件的代码以及如何计算 this.breakpoint 以提供帮助:)
-
编辑更多代码示例,请原谅凌乱的计算,一旦正确应用类,这将被重新设计:)
标签: javascript vue.js