动态操作
-
+
-
Tab Content-1
-
Tab Content-2
-
Tab Content-3
-
Tab Content-4
-
Tab Content-5
-
Tab Content-6
+
Tab Content-1
+
Tab Content-2
+
Tab Content-3
+
Tab Content-4
+
Tab Content-5
+
Tab Content-6
diff --git a/src/modules/tabs.js b/src/modules/tabs.js
index 62a24965..2c4c9db8 100644
--- a/src/modules/tabs.js
+++ b/src/modules/tabs.js
@@ -735,11 +735,13 @@ layui.define('component', function(exports) {
var container = headerElem.parent();
var draggedElem;
var scrollable;
- var tabListSize;
- var containerSize;
- var scrollThreshold = 100;
+ var tabListScrollSize;
+ var tabListOuterSize;
var maxOffset = 0;
var minOffset;
+ var dragScrollLength = 35;
+ var dragScrollSpeed = 5;
+ var dragScrollPercentage = 12; // 容器边缘滚动区域大小,百分比值
var isDndElem = function(el) {
return el && el.nodeName.toLowerCase() == 'li' && !!el.getAttribute('lay-id');
@@ -750,9 +752,9 @@ layui.define('component', function(exports) {
if(isDndElem(this)){
this.draggable = true;
scrollable = container.hasClass('layui-tabs-scroll');
- tabListSize = headerElem.prop('scrollWidth');
- containerSize = headerElem.outerWidth();
- minOffset = containerSize - tabListSize;
+ tabListScrollSize = headerElem.prop('scrollWidth');
+ tabListOuterSize = headerElem.outerWidth();
+ minOffset = tabListOuterSize - tabListScrollSize;
}
});
headerElem.on('dragstart' + namespace, function(e) {
@@ -772,15 +774,15 @@ layui.define('component', function(exports) {
// 拖拽边缘滚动
if (scrollable) {
var containerRect = container[0].getBoundingClientRect();
- var isScrollLeft = e.clientX - containerRect.left < scrollThreshold;
- var isScrollRight = containerRect.right - e.clientX < scrollThreshold;
+ var isScrollLeft = (e.clientX - containerRect.left) / containerRect.width * 100 < dragScrollPercentage;
+ var isScrollRight = (containerRect.right - e.clientX) / containerRect.width * 100 < dragScrollPercentage
- if (!isScrollLeft && !isScrollRight) {
+ if (!(isScrollLeft || isScrollRight)) {
return;
}
- var step = 35;
- var rAFStep = 5;
+ var step = dragScrollLength;
+ var rAFStep = dragScrollSpeed;
var newOffset = headerElem.data('left') || 0;
var cb = function () {
From 0928fbea84b40585ae7c2c71857c7dbd9b103a68 Mon Sep 17 00:00:00 2001
From: sight <26325820+Sight-wcg@users.noreply.github.com>
Date: Sun, 22 Jun 2025 20:51:45 +0800
Subject: [PATCH 4/5] update
---
src/modules/tabs.js | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/modules/tabs.js b/src/modules/tabs.js
index 2c4c9db8..e030ad29 100644
--- a/src/modules/tabs.js
+++ b/src/modules/tabs.js
@@ -758,7 +758,9 @@ layui.define('component', function(exports) {
}
});
headerElem.on('dragstart' + namespace, function(e) {
- e.originalEvent.dataTransfer.effectAllowed = 'move';
+ if(e.originalEvent.dataTransfer){
+ e.originalEvent.dataTransfer.effectAllowed = 'move';
+ }
draggedElem = $(e.target);
that.change(draggedElem, false, true);
});
@@ -769,7 +771,9 @@ layui.define('component', function(exports) {
});
headerElem.on("dragover" + namespace, function (e) {
e.preventDefault();
- e.originalEvent.dataTransfer.dropEffect = 'move';
+ if(e.originalEvent.dataTransfer){
+ e.originalEvent.dataTransfer.dropEffect = 'move';
+ }
// 拖拽边缘滚动
if (scrollable) {
From b5f1e9838ba3c065084c0e70250500ed7af73a95 Mon Sep 17 00:00:00 2001
From: sight <26325820+Sight-wcg@users.noreply.github.com>
Date: Sun, 22 Jun 2025 23:41:05 +0800
Subject: [PATCH 5/5] update
---
src/modules/tabs.js | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/modules/tabs.js b/src/modules/tabs.js
index e030ad29..473dcc2b 100644
--- a/src/modules/tabs.js
+++ b/src/modules/tabs.js
@@ -778,10 +778,10 @@ layui.define('component', function(exports) {
// 拖拽边缘滚动
if (scrollable) {
var containerRect = container[0].getBoundingClientRect();
- var isScrollLeft = (e.clientX - containerRect.left) / containerRect.width * 100 < dragScrollPercentage;
- var isScrollRight = (containerRect.right - e.clientX) / containerRect.width * 100 < dragScrollPercentage
+ var isScrollStart = (e.clientX - containerRect.left) / containerRect.width * 100 < dragScrollPercentage;
+ var isScrollEnd = (containerRect.right - e.clientX) / containerRect.width * 100 < dragScrollPercentage
- if (!(isScrollLeft || isScrollRight)) {
+ if (!(isScrollStart || isScrollEnd)) {
return;
}
@@ -792,9 +792,9 @@ layui.define('component', function(exports) {
var cb = function () {
if (step > 0) {
step -= rAFStep;
- if (isScrollLeft) {
+ if (isScrollStart) {
newOffset = newOffset + rAFStep;
- } else if (isScrollRight) {
+ } else if (isScrollEnd) {
newOffset = newOffset - rAFStep;
}
if (newOffset > maxOffset) {