gtht-miniapp-sdk
Version:
gtht-miniapp-sdk 是一套基于 Uniapp + Vue3 框架开发的兼容多端的 UI 组件库
67 lines (66 loc) • 1.81 kB
JavaScript
import { clamp } from './number';
/**
* @description: 获取阻尼值
* @param {number} value
* @param {number} min
* @param {number} max
* @param {number} damping
* @return {number}
*/
export function getDampingValue(value, min, max, damping) {
if (value < min) {
return min + (value - min) * damping;
}
if (value > max) {
return max + (value - max) * damping;
}
return value;
}
/**
* @description: 获取矩形阻尼值
* @param {number} offset 当前的偏移量
* @param {number} areaSize 范围值
* @param {number} viewSize 范围内某个视图尺寸值
* @param {number} damping 阻尼系数
* @return {number}
*/
export function getRectDampingValue(offset, areaSize, viewSize, damping) {
const diff = areaSize - viewSize;
let min, max;
if (diff < 0) {
min = diff;
max = 0;
}
else {
min = 0;
max = diff;
}
return getDampingValue(offset, min, max, damping);
}
/**
* @description: 获取范围值
* @param {number} offset 当前的偏移量
* @param {number} areaSize 范围值
* @param {number} viewSize 范围内某个视图尺寸值
* @return {number}
*/
export function getInBoundValue(offset, areaSize, viewSize) {
const diff = areaSize - viewSize;
const [min, max] = [0, diff].sort((a, b) => a - b);
return clamp(offset, min, max);
}
/**
* @description: 获取溢出值范围
* @param {number} overflow 最大溢出值
* @param {number} areaSize 范围值
* @param {number} viewSize 范围内某个视图尺寸值
* @return {*}
*/
export function getOverflowRangeInArea(overflow, areaSize, viewSize) {
if (areaSize > viewSize) {
return [-overflow, areaSize + overflow];
}
else {
return [areaSize - viewSize - overflow, overflow];
}
}