mirror of
https://gitee.com/layui/layui.git
synced 2025-06-28 13:34:27 +08:00
update
This commit is contained in:
parent
5e2a9c4812
commit
b6310b8a83
@ -357,6 +357,19 @@ tabs.on('afterClose(testID)', function(data) {
|
|||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
<h3 id="on-dragend" class="ws-anchor ws-bold">标签拖拽结束后的事件 <sup>2.12+</sup></h3>
|
||||||
|
|
||||||
|
`tabs.on('dragend(id)', callback)`
|
||||||
|
|
||||||
|
标签拖拽结束后触发。
|
||||||
|
|
||||||
|
```js
|
||||||
|
// tabs 拖拽结束后的事件
|
||||||
|
tabs.on('dragend(testID)', function(data) {
|
||||||
|
console.log(data);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
## 💖 心语
|
## 💖 心语
|
||||||
|
|
||||||
tabs 是通过 component 重构的首个组件,它来自于最早试图发布的 Layui 3.0(后因为 3.0 技术路线的变化,而整理放至 2.10+ 版本中),目的是将 element 模块中的 tab 组件进行解耦,增强其可扩展性。为了给开发者必要的时间缓冲,我们会将旧 tab 组件仍然保留在后续的若干版本中,但会在合适的时机对旧 tab 组件进行剔除,建议开发者尽量提前过渡到当前新的 tabs 组件。
|
tabs 是通过 component 重构的首个组件,它来自于最早试图发布的 Layui 3.0(后因为 3.0 技术路线的变化,而整理放至 2.10+ 版本中),目的是将 element 模块中的 tab 组件进行解耦,增强其可扩展性。为了给开发者必要的时间缓冲,我们会将旧 tab 组件仍然保留在后续的若干版本中,但会在合适的时机对旧 tab 组件进行剔除,建议开发者尽量提前过渡到当前新的 tabs 组件。
|
||||||
|
@ -733,11 +733,13 @@ layui.define('component', function(exports) {
|
|||||||
var that = this;
|
var that = this;
|
||||||
var namespace = '.lay-tabs-drag';
|
var namespace = '.lay-tabs-drag';
|
||||||
var container = headerElem.parent();
|
var container = headerElem.parent();
|
||||||
var scrollable = container.hasClass('layui-tabs-scroll');
|
|
||||||
var draggedElem;
|
var draggedElem;
|
||||||
var scrollWidth = headerElem.prop('scrollWidth');
|
var scrollable;
|
||||||
var outerWidth = headerElem.outerWidth();
|
var tabListSize;
|
||||||
|
var containerSize;
|
||||||
var scrollThreshold = 100;
|
var scrollThreshold = 100;
|
||||||
|
var maxOffset = 0;
|
||||||
|
var minOffset;
|
||||||
|
|
||||||
var isDndElem = function(el) {
|
var isDndElem = function(el) {
|
||||||
return el && el.nodeName.toLowerCase() == 'li' && !!el.getAttribute('lay-id');
|
return el && el.nodeName.toLowerCase() == 'li' && !!el.getAttribute('lay-id');
|
||||||
@ -747,6 +749,10 @@ layui.define('component', function(exports) {
|
|||||||
headerElem.on('mousedown' + namespace, '>li', function() {
|
headerElem.on('mousedown' + namespace, '>li', function() {
|
||||||
if(isDndElem(this)){
|
if(isDndElem(this)){
|
||||||
this.draggable = true;
|
this.draggable = true;
|
||||||
|
scrollable = container.hasClass('layui-tabs-scroll');
|
||||||
|
tabListSize = headerElem.prop('scrollWidth');
|
||||||
|
containerSize = headerElem.outerWidth();
|
||||||
|
minOffset = containerSize - tabListSize;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
headerElem.on('dragstart' + namespace, function(e) {
|
headerElem.on('dragstart' + namespace, function(e) {
|
||||||
@ -761,14 +767,11 @@ layui.define('component', function(exports) {
|
|||||||
});
|
});
|
||||||
headerElem.on("dragover" + namespace, function (e) {
|
headerElem.on("dragover" + namespace, function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.originalEvent.dataTransfer.dropEffect = "move";
|
e.originalEvent.dataTransfer.dropEffect = 'move';
|
||||||
|
|
||||||
// 拖拽边缘滚动
|
// 拖拽边缘滚动
|
||||||
if (scrollable) {
|
if (scrollable) {
|
||||||
var tabLeft = headerElem.data("left") || 0;
|
|
||||||
var containerRect = container[0].getBoundingClientRect();
|
var containerRect = container[0].getBoundingClientRect();
|
||||||
var step = 200;
|
|
||||||
var rAFStep = 5;
|
|
||||||
var isScrollLeft = e.clientX - containerRect.left < scrollThreshold;
|
var isScrollLeft = e.clientX - containerRect.left < scrollThreshold;
|
||||||
var isScrollRight = containerRect.right - e.clientX < scrollThreshold;
|
var isScrollRight = containerRect.right - e.clientX < scrollThreshold;
|
||||||
|
|
||||||
@ -776,20 +779,24 @@ layui.define('component', function(exports) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var step = 35;
|
||||||
|
var rAFStep = 5;
|
||||||
|
var newOffset = headerElem.data('left') || 0;
|
||||||
|
|
||||||
var cb = function () {
|
var cb = function () {
|
||||||
if (step > 0) {
|
if (step > 0) {
|
||||||
step -= rAFStep;
|
step -= rAFStep;
|
||||||
if (isScrollLeft) {
|
if (isScrollLeft) {
|
||||||
tabLeft += rAFStep;
|
newOffset = newOffset + rAFStep;
|
||||||
} else if (isScrollRight) {
|
} else if (isScrollRight) {
|
||||||
tabLeft += -rAFStep;
|
newOffset = newOffset - rAFStep;
|
||||||
}
|
}
|
||||||
if (tabLeft > 0) {
|
if (newOffset > maxOffset) {
|
||||||
tabLeft = 0;
|
newOffset = maxOffset;
|
||||||
} else if (tabLeft < outerWidth - scrollWidth) {
|
} else if (newOffset < minOffset) {
|
||||||
tabLeft = outerWidth - scrollWidth;
|
newOffset = minOffset;
|
||||||
}
|
}
|
||||||
headerElem.css("left", tabLeft).data("left", tabLeft);
|
headerElem.css('left', newOffset).data('left', newOffset);
|
||||||
rAF(cb);
|
rAF(cb);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user