chore: initialize qiming workspace repository
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
// @ts-nocheck
|
||||
/**
|
||||
* 计算偏移
|
||||
* @param {number} containerWidth 容器宽度
|
||||
* @param {number} targetLeft 当前元素left值
|
||||
* @param {number} targetWidth 当前元素宽度
|
||||
* @param {number} offset 上一次 scroll-view left值
|
||||
* @return
|
||||
*/
|
||||
export function calcScrollOffset(containerWidth : number, targetLeft : number, targetWidth : number, offset : number) : number {
|
||||
return offset + targetLeft - (1 / 2) * containerWidth + targetWidth / 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据提供的移动距离和基数进行缓动处理。
|
||||
* 如果移动距离的绝对值超过最大阈值,则应用缓动效果。
|
||||
*
|
||||
* @param {number} moveX - 水平移动的距离。
|
||||
* @param {number} base - 应用于缓动效果的基数。
|
||||
* @returns {number} 缓动处理后的移动距离。
|
||||
*/
|
||||
export function ease(moveX : number, base : number) : number{
|
||||
const absDistance = Math.abs(moveX);
|
||||
const max = 50
|
||||
if (absDistance > max) {
|
||||
return (max + (absDistance - max) * 0.2) * base;
|
||||
}
|
||||
return moveX;
|
||||
};
|
||||
|
||||
|
||||
// export function calculateTabDistances(tabRects: DOMRect[], index: number, offset: number = 0): number[] {
|
||||
// let count = 0;
|
||||
// let distance = 0;
|
||||
// let totalSize = 0;
|
||||
// tabRects.forEach((item) => {
|
||||
// if (count < index) {
|
||||
// distance += item.width;
|
||||
// count += 1;
|
||||
// }
|
||||
// totalSize += item.width;
|
||||
// });
|
||||
|
||||
// return [distance + offset, totalSize]
|
||||
// }
|
||||
|
||||
// 高效版本,只遍历一次到最大索引
|
||||
export function calculateTabPositions(
|
||||
tabRects: DOMRect[],
|
||||
currentIdx: number,
|
||||
nextIdx: number = 0
|
||||
): number[] {
|
||||
let currentDistance = 0;
|
||||
let nextDistance = 0;
|
||||
|
||||
const maxIndex = Math.max(currentIdx, nextIdx);
|
||||
|
||||
// 只遍历到最大索引位置
|
||||
for (let i = 0; i < maxIndex && i < tabRects.length; i++) {
|
||||
if (i < currentIdx) {
|
||||
currentDistance += tabRects[i].width;
|
||||
}
|
||||
if (i < nextIdx) {
|
||||
nextDistance += tabRects[i].width;
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
currentDistance,
|
||||
nextDistance
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user