跳到内容

useBreakpoints

类别
导出大小
919 B
上次更改
5 天前

响应式视口断点。

演示

当前断点: []
活动断点
xs(<640px): false
xs(<=640px): false
sm: false
md: false
lg: false
xl: false
2xl: false
greaterThanBreakPoint: false

用法

js
import { breakpointsTailwind, useBreakpoints } from '@vueuse/core'

const breakpoints = useBreakpoints(breakpointsTailwind)

const smAndLarger = breakpoints.greaterOrEqual('sm') // sm and larger
const largerThanSm = breakpoints.greater('sm') // only larger than sm
const lgAndSmaller = breakpoints.smallerOrEqual('lg') // lg and smaller
const smallerThanLg = breakpoints.smaller('lg') // only smaller than lg
vue
<script setup lang="ts">
import { useBreakpoints } from '@vueuse/core'

const breakpoints = useBreakpoints({
  mobile: 0, // optional
  tablet: 640,
  laptop: 1024,
  desktop: 1280,
})

// Can be 'mobile' or 'tablet' or 'laptop' or 'desktop'
const activeBreakpoint = breakpoints.active()

// true or false
const laptop = breakpoints.between('laptop', 'desktop')
</script>

<template>
  <div :class="activeBreakpoint">
    ...
  </div>
</template>

服务器端渲染和 Nuxt

如果您正在使用启用了 SSR 的 useBreakpoints,那么您需要指定要在服务器上渲染并在 hydration 之前渲染的屏幕尺寸,以避免 hydration 不匹配

js
import { breakpointsTailwind, useBreakpoints } from '@vueuse/core'

const breakpoints = useBreakpoints(
  breakpointsTailwind,
  { ssrWidth: 768 } // Will enable SSR mode and render like if the screen was 768px wide
)

或者,您可以使用 provideSSRWidth 为您的应用程序全局设置此项

预设

  • Tailwind: breakpointsTailwind
  • Bootstrap v5: breakpointsBootstrapV5
  • Vuetify v2: breakpointsVuetifyV2 (已弃用: breakpointsVuetify)
  • Vuetify v3: breakpointsVuetifyV3
  • Ant Design: breakpointsAntDesign
  • Quasar v2: breakpointsQuasar
  • Sematic: breakpointsSematic
  • Master CSS: breakpointsMasterCss
  • Prime Flex: breakpointsPrimeFlex
  • ElementUI / ElementPlus: breakpointsElement

断点预设并非有意自动导入,因为它们不是以 use 开头,以具有 VueUse 的作用域。 它们必须显式导入

js
import { breakpointsTailwind } from '@vueuse/core'
// and so on

类型声明

显示类型声明
typescript
export * from "./breakpoints"
export type Breakpoints<K extends string = string> = Record<
  K,
  MaybeRefOrGetter<number | string>
>
export interface UseBreakpointsOptions extends ConfigurableWindow {
  /**
   * The query strategy to use for the generated shortcut methods like `.lg`
   *
   * 'min-width' - .lg will be true when the viewport is greater than or equal to the lg breakpoint (mobile-first)
   * 'max-width' - .lg will be true when the viewport is smaller than the xl breakpoint (desktop-first)
   *
   * @default "min-width"
   */
  strategy?: "min-width" | "max-width"
  ssrWidth?: number
}
/**
 * Reactively viewport breakpoints
 *
 * @see https://vueuse.org.cn/useBreakpoints
 */
export declare function useBreakpoints<K extends string>(
  breakpoints: Breakpoints<K>,
  options?: UseBreakpointsOptions,
): Record<K, ComputedRef<boolean>> & {
  greaterOrEqual: (k: MaybeRefOrGetter<K>) => ComputedRef<boolean>
  smallerOrEqual: (k: MaybeRefOrGetter<K>) => ComputedRef<boolean>
  greater(k: MaybeRefOrGetter<K>): ComputedRef<boolean>
  smaller(k: MaybeRefOrGetter<K>): ComputedRef<boolean>
  between(a: MaybeRefOrGetter<K>, b: MaybeRefOrGetter<K>): ComputedRef<boolean>
  isGreater(k: MaybeRefOrGetter<K>): boolean
  isGreaterOrEqual(k: MaybeRefOrGetter<K>): boolean
  isSmaller(k: MaybeRefOrGetter<K>): boolean
  isSmallerOrEqual(k: MaybeRefOrGetter<K>): boolean
  isInBetween(a: MaybeRefOrGetter<K>, b: MaybeRefOrGetter<K>): boolean
  current: () => ComputedRef<K[]>
  active(): ComputedRef<"" | K>
}
export type UseBreakpointsReturn<K extends string = string> = ReturnType<
  typeof useBreakpoints<K>
>

源代码

SourceDemoDocs

贡献者

Anthony Fu
Anthony Fu
Doctor Wu
IlyaL
Adrien Foulon
AAABingBing
Stefano Bartoletti
Ruslan Makarov
jack-allocate
Ed
Adrian Rudnik
Inesh Bose
Imam Susanto
azaleta
webfansplz
Ege İliklier
Shinigami
Alex Kozack
taidaid
wheat
Azri Kahar

更新日志

v12.8.0 于 3/5/2025
7432f - feat(types): 弃用 MaybeRefMaybeRefOrGetter,转而支持 Vue 的原生类型 (#4636)
v12.3.0 于 1/2/2025
59f75 - feat(toValue): 弃用来自 @vueuse/sharedtoValue,转而支持 Vue 的原生类型
v12.1.0 于 12/22/2024
55965 - feat(useSSRWidth): 为 useMediaQuery 和 useBreakpoints 添加可选的 SSR 支持 (#4317)
v12.0.0-beta.1 于 11/21/2024
0a9ed - feat!: 移除 Vue 2 支持,优化捆绑包并进行清理 (#4349)
v11.2.0 于 10/30/2024
f71e5 - feat: 为 ElementUI/ElementPlus 添加断点 (#4238)
v10.8.0 于 2/20/2024
3ae45 - feat: 添加 active getter,为 Vuetify v3 添加断点 (#3687)
15fc0 - feat: 添加 strategy 选项以允许桌面优先约定 (#3783)
d3317 - feat: 允许传递 ref 或 getter 来获取断点 (#3621)
a086e - fix: 更严格的类型
v10.7.0 于 12/5/2023
dc624 - feat: 使参数具有响应性 (#3592)
v10.5.0 于 10/7/2023
ec9a4 - fix: 为 bootstrap 添加缺失的断点 (#3413)
v10.4.0 于 8/25/2023
8b5ed - feat: 为 PrimeFlex 添加断点 (#3317)
v10.0.0-beta.3 于 4/12/2023
e75a5 - feat: 更新依赖
v10.0.0-beta.2 于 3/28/2023
bbabd - feat: 获取当前断点 (#2906)

在 MIT 许可证下发布。