zhou zhou
18 小时以前 fec285d150b377d004e47f0973d298b92fe4c711
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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 }