wux-weapp
Version:
一套组件化、可复用、易扩展的微信小程序 UI 组件库
19 lines (16 loc) • 790 B
JavaScript
export function clamp(v, min, max) {
return Math.max(min, Math.min(v, max))
}
export function rubberband(distance, dimension, constant) {
if (dimension === 0 || Math.abs(dimension) === Infinity) return Math.pow(distance, constant * 5)
return (distance * dimension * constant) / (dimension + constant * distance)
}
/**
* Calculates the rubberbanding effect from a given `position` value, two bounds `min`, `max` and an elasticity `constant`.
*/
export function rubberbandIfOutOfBounds(position, min, max, constant = 0.15) {
if (constant === 0) return clamp(position, min, max)
if (position < min) return -rubberband(min - position, max - min, constant) + min
if (position > max) return +rubberband(position - max, max - min, constant) + max
return position
}