<template>
<div class="table">
<div class="table-wrapper">
<div class="table_top">
<span id="drag-control_span">标题1</span>
......
</div>
<div class="table_content">
<ul>
<li
v-for="(item, index) in list"
:key="index"
>
<span class="drag-accused_span">
<div class="span_c">标题xxxx</div>
</span>
......
</li>
</ul>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
list: [],
dragging: false,
draggState: {},
disabled: [],
}
},
mounted() {
document.documentElement.style.setProperty(
'--myColWidth',
this.isMore ? '100px' : '700px'
)
this.addDragEvent()
},
methods: {
// 添加流程标题拖拽事件
addDragEvent() {
const _me = this
const el = this.$el
const dragDom = el.querySelector('span#drag-control_span')
dragDom.style.cursor = 'col-resize'
dragDom.onmousedown = e => {
// 鼠标按下,计算当前元素距离可视区的距离
_me.dragging = true
_me.draggState = {
disX: e.clientX,
w: dragDom.clientWidth,
}
const handleMouseMove = e => {
if (_me.dragging) {
var windowWidth =
document.documentElement.clientWidth || document.body.clientWidth
const minW = 200
const maxW = windowWidth - dragDom.offsetWidth
// 通过事件委托,计算移动的距离
const l = e.clientX - _me.draggState.disX
// 改变当前元素宽度,不可超过最小最大值
var nw = _me.draggState.w + l
nw = nw < minW ? minW : nw
nw = nw > maxW ? maxW : nw
document.documentElement.style.setProperty(
'--myColWidth',
`${nw}px`
)
}
}
const clear = () => {
if (_me.dragging) {
_me.dragging = false
_me.draggState = {}
}
dragDom.removeEventListener('mousemove', handleMouseMove)
dragDom.removeEventListener('mouseup', clear)
dragDom.removeEventListener('mouseleave', clear)
}
dragDom.addEventListener('mousemove', handleMouseMove)
dragDom.addEventListener('mouseup', clear)
dragDom.addEventListener('mouseleave', clear)
}
},
},
}
</script>
<style scoped lang="scss">
.table {
.table_top {
span:first-child {
width: var(--myColWidth);
}
}
}
</style>
原生实现表格宽度拖拽
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 本博客持续修改与更新中,点击这里查看最新的内容 ** 已知在移动端和safairi 都没有 软用,大家看看就好,有...
- 实战需求 实现Table表格类组件基于多视图测量并限定宽度 实现表格限定宽度 多列协同限定宽度 本文价值与收获 看...
- 需要实现如下需求,现有一个表格,每行数据都能进行拖拽,进行上下移动,并序号自动更新这样的UI效果是可以有组件支持的...