@dolphinweex/weex-vue-render 0.2.42 → 0.2.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3373,8 +3373,8 @@ function watchAppear (context, fireNow) {
3373
3373
  * 此处延时执行是临时规避措施,后续需要优化
3374
3374
  */
3375
3375
  if (i == 0) {
3376
- setTimeout(() => {
3377
- detectAppear(el, visibleData, dir);
3376
+ setTimeout(() => {
3377
+ detectAppear(el, visibleData, dir);
3378
3378
  }, 1);
3379
3379
  } else {
3380
3380
  detectAppear(el, visibleData, dir);
@@ -7737,7 +7737,8 @@ var slideMixin = {
7737
7737
  }
7738
7738
  },
7739
7739
 
7740
- _slideTo: function _slideTo(index, isTouchScroll) {
7740
+ _slideTo: function _slideTo(index, isTouchScroll, transtionTime = null) {
7741
+ let slideTranstionTime = this.isTransform ? `transform ${transtionTime || TRANSITION_TIME / 1600}s ease-out` : `left ${transtionTime || TRANSITION_TIME / 1600}s ease-out`
7741
7742
  var this$1 = this;
7742
7743
  if (this.frameCount <= 0) {
7743
7744
  return;
@@ -7785,7 +7786,7 @@ var slideMixin = {
7785
7786
  lastNode.style.zIndex = '10';
7786
7787
 
7787
7788
  // 执行向左滑动动画
7788
- inner.style.transition = this.isTransform ? `transform ${TRANSITION_TIME / 1000}s ease-in-out` : `left ${TRANSITION_TIME / 1000}s ease-in-out`;
7789
+ inner.style.transition = slideTranstionTime;
7789
7790
  this.innerOffset += this._wrapperWidth;
7790
7791
  this._setPosition(inner, this.innerOffset);
7791
7792
 
@@ -7798,7 +7799,7 @@ var slideMixin = {
7798
7799
  this._setPosition(inner, this.innerOffset);
7799
7800
 
7800
7801
  setTimeout(() => {
7801
- inner.style.transition = this.isTransform ? `transform ${TRANSITION_TIME / 1000}s ease-in-out` : `left ${TRANSITION_TIME / 1000}s ease-in-out`;
7802
+ inner.style.transition = slideTranstionTime;
7802
7803
  }, 50);
7803
7804
  }, TRANSITION_TIME);
7804
7805
 
@@ -7814,7 +7815,7 @@ var slideMixin = {
7814
7815
  inner.appendChild(cloneNode);
7815
7816
 
7816
7817
  // 执行向右滑动动画
7817
- inner.style.transition = this.isTransform ? `transform ${TRANSITION_TIME / 1000}s ease-in-out` : `left ${TRANSITION_TIME / 1000}s ease-in-out`;
7818
+ inner.style.transition = slideTranstionTime;
7818
7819
  this.innerOffset -= this._wrapperWidth;
7819
7820
  this._setPosition(inner, this.innerOffset);
7820
7821
 
@@ -7830,7 +7831,7 @@ var slideMixin = {
7830
7831
  this._setPosition(inner, 0);
7831
7832
 
7832
7833
  setTimeout(() => {
7833
- inner.style.transition = this.isTransform ? `transform ${TRANSITION_TIME / 1000}s ease-in-out` : `left ${TRANSITION_TIME / 1000}s ease-in-out`;
7834
+ inner.style.transition = slideTranstionTime;
7834
7835
  }, 50);
7835
7836
  }, TRANSITION_TIME);
7836
7837
 
@@ -7838,13 +7839,13 @@ var slideMixin = {
7838
7839
  } else {
7839
7840
  // 正常切换
7840
7841
  this.innerOffset = -index * this._wrapperWidth;
7841
- inner.style.transition = this.isTransform ? `transform ${TRANSITION_TIME / 1000}s ease-in-out` : `left ${TRANSITION_TIME / 1000}s ease-in-out`;
7842
+ inner.style.transition = slideTranstionTime;
7842
7843
  this._setPosition(inner, this.innerOffset);
7843
7844
  }
7844
7845
  } else {
7845
7846
  // 非无限轮播的正常切换
7846
7847
  this.innerOffset = -index * this._wrapperWidth;
7847
- inner.style.transition = this.isTransform ? `transform ${TRANSITION_TIME / 1000}s ease-in-out` : `left ${TRANSITION_TIME / 1000}s ease-in-out`;
7848
+ inner.style.transition = slideTranstionTime;
7848
7849
  this._setPosition(inner, this.innerOffset);
7849
7850
  }
7850
7851
 
@@ -8259,6 +8260,8 @@ var slideMixin = {
8259
8260
  if (!this.scrollable || this.frameCount<=1) {
8260
8261
  return // 🚫 禁止滚动行为
8261
8262
  }
8263
+ this.lastMoveTime = Date.now();
8264
+ this.lastMovePosition = event.touches[0].pageX;
8262
8265
  var touch = event.changedTouches[0];
8263
8266
  this._stopAutoPlay();
8264
8267
  var inner = this.$refs.inner;
@@ -8306,6 +8309,20 @@ var slideMixin = {
8306
8309
  var offsetY = touch.pageY - startY;
8307
8310
  tp.offsetX = offsetX;
8308
8311
  tp.offsetY = offsetY;
8312
+
8313
+ const now = Date.now();
8314
+ const deltaTime = now - this.lastMoveTime;
8315
+ const deltaX = Math.abs(event.touches[0].pageX - this.lastMovePosition);
8316
+ if (deltaTime > 0) {
8317
+ this.velocity = deltaX / deltaTime; // 像素/毫秒
8318
+ // 计算动画时间,速度越大动画时间越短
8319
+ const baseTime = TRANSITION_TIME / 1000; // 基准时间
8320
+ const minTime = 0.1; // 最小动画时间(秒)
8321
+ this.transitionDuration = Math.max(minTime, baseTime / (this.velocity + 1));
8322
+ }
8323
+
8324
+ this.lastMoveTime = now;
8325
+ this.lastMovePosition = event.touches[0].pageX;
8309
8326
  var isV = tp.isVertical;
8310
8327
  if (typeof isV === 'undefined') {
8311
8328
  isV = tp.isVertical = Math.abs(offsetX) < Math.abs(offsetY);
@@ -8416,7 +8433,7 @@ var slideMixin = {
8416
8433
  var reset = Math.abs(offsetX / this._wrapperWidth) < 0.2;
8417
8434
  var direction = offsetX > 0 ? 1 : -1;
8418
8435
  var newIndex = reset ? this.currentIndex : (this.currentIndex - direction);
8419
- this._slideTo(newIndex, true);
8436
+ this._slideTo(newIndex, true ,this.transitionDuration);
8420
8437
  }
8421
8438
  delete this._touchParams;
8422
8439
  },
package/package.json CHANGED
@@ -49,5 +49,5 @@
49
49
  "type": "git",
50
50
  "url": "git+ssh://git@github.com/weexteam/weex-vue-render.git"
51
51
  },
52
- "version": "0.2.42"
52
+ "version": "0.2.43"
53
53
  }