【发布时间】:2018-07-14 11:40:51
【问题描述】:
Vue 在动态样式绑定方面似乎很慢(与 jQuery 相比):
我有一个带有overflow-x 的容器,也是一个比它的父容器更宽的内部容器。还有两个带有absolute 位置的按钮。
- 第一个按钮
style属性由Vue渲染 - 第二个按钮
style属性由jQuery渲染
在容器滚动第一个按钮style 期间,更新非常慢。
jQuery 的速度要快得多。
有没有办法提高它的渲染速度?
代码如下:
new Vue({
el: "#app",
data: {
left_offset : 0,
$b2 : null
},
computed:{
_left_offset_style(){
return `left:${this.left_offset}px`;
}
},
mounted(){
this.$b2 = $(this.$el).find('.b2');
},
methods: {
scrollMe(e){
this.left_offset = parseInt($(e.target).scrollLeft());
this.$b2.css({left:`${this.left_offset}px`} );
}
}
})
.container {
width: 400px;
height: 200px;
overflow-x: auto;
overflow-y: hidden;
position: relative;
}
.inner-container{
width: 800px;
height: 200px;
}
button{
position: absolute;
width: 100px;
}
.b2{
top: 40px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="app">
<div class="container" @scroll="scrollMe">
<button :style="_left_offset_style" class="b1">b1</button>
<button class="b2">b2</button>
<div class="inner-container"></div>
</div>
</div>
【问题讨论】:
标签: html css performance vue.js vuejs2