<label class="label" for="eventDesc" id="labelheight" :style="height:100%"> </label> <div id="eventDesc"></div> 使用vue修改改动态样式,当id为eventDesc的高度为65px时,label标签高度为100%否则则为原来的高度60px,请给出例子
时间: 2023-07-06 08:37:51 浏览: 162
vue 动态修改a标签的样式的方法
5星 · 资源好评率100%
可以使用Vue的computed属性来实现这个需求,具体实现如下:
```
<template>
<div>
<label class="label" for="eventDesc" :style="{ height: labelHeight }"></label>
<div id="eventDesc" :style="{ height: eventHeight }"></div>
</div>
</template>
<script>
export default {
data() {
return {
eventHeight: '65px', // 默认高度为65px
labelHeight: '100%', // 默认高度为100%
};
},
computed: {
// 监听eventDesc元素的高度变化
watchEventHeight() {
return () => {
const height = document.getElementById('eventDesc').offsetHeight;
this.labelHeight = height === 65 ? '100%' : '60px';
};
},
},
mounted() {
// 监听eventDesc元素的高度变化
window.addEventListener('resize', this.watchEventHeight);
this.watchEventHeight();
},
beforeDestroy() {
window.removeEventListener('resize', this.watchEventHeight);
},
};
</script>
```
上述代码中,我们使用了computed属性来监听eventDesc元素的高度变化,并根据元素高度的不同来动态修改label元素的高度。在mounted生命周期中,我们还添加了一个resize事件的监听器,以便在窗口大小改变时重新计算eventDesc元素的高度。在beforeDestroy生命周期中,我们又移除了resize事件的监听器,以免造成内存泄漏。
阅读全文