vue监听滚动事件 实现vxe-grid的header顶端显示
1.vxe-grid部分
<vxe-grid
:data="specialPriceDetailBeanData"
:columns="detailTableColumn"
:header-row-class-name="tableHeaderClassName"
size="mini"
border
resizable
show-overflow
show-header-overflow/>
- 监听事件
data() {
return {
tableHeaderClassFlag: false
}
},
mounted() {
this.addListener()
},
destroy() {
this.removeListener()
},
methods: {
addListener() {
window.addEventListener('scroll', this.handleScroll, true)
},
removeListener() {
window.removeEventListener('scroll', this.handleScroll)
},
handleScroll() {
var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
if (scrollTop > 260) {
this.tableHeaderClassFlag = true
} else {
this.tableHeaderClassFlag = false
}
},
tableHeaderClassName(row) {
if (this.tableHeaderClassFlag) {
return 'headerClass'
} else {
return 'headerClassNone'
}
}
}
- style部分
<style>
.headerClass {
margin-top: 30px;
top: 44px;
z-index: 99999;
position: fixed;
}
.headerClassNone {
background-color: #eee !important;
}
</style>
- 注意事项
该效果与fixed属性冲突,与横向滚动条冲突
因此不要固定列,列的width设置不要出现横向滚动条