const BREAKPOINT_CONFIG = {
|
xs: { threshold: 12, fallback: 24 },
|
// 手机:小于 12 时使用满宽
|
sm: { threshold: 12, fallback: 12 },
|
// 平板:小于 12 时使用半宽
|
md: { threshold: 8, fallback: 8 },
|
// 中等屏幕:小于 8 时使用三分之一宽
|
lg: null,
|
// 大屏幕:直接使用设置的 span
|
xl: null
|
// 超大屏幕:直接使用设置的 span
|
}
|
function calculateResponsiveSpan(itemSpan, defaultSpan, breakpoint) {
|
const finalSpan = itemSpan ?? defaultSpan
|
const config = BREAKPOINT_CONFIG[breakpoint]
|
if (!config) {
|
return finalSpan
|
}
|
return finalSpan >= config.threshold ? finalSpan : config.fallback
|
}
|
function createResponsiveSpanCalculator(defaultSpan) {
|
return (itemSpan, breakpoint) => {
|
return calculateResponsiveSpan(itemSpan, defaultSpan, breakpoint)
|
}
|
}
|
export { calculateResponsiveSpan, createResponsiveSpanCalculator }
|