Web Analytics

nuxt-viewport

⭐ 155 stars English by mvrlin

nuxt-viewport

[![npm version][npm-version-src]][npm-version-href] [![npm downloads][npm-downloads-src]][npm-downloads-href] [![License][license-src]][license-href]

Define custom viewports for your Nuxt️ project

Features

> Note\
This version is Nuxt 3+ & Nuxt Bridge only. For Nuxt 2 see 1.0.1

Quick Setup

npx nuxi@latest module add nuxt-viewport
{
  modules: [
    [
      'nuxt-viewport', {
        / Viewport options /
      }
    ],
  ]
}
using top level options

{
  modules: [
    'nuxt-viewport',
  ],

viewport: { / Viewport options / }, }

Usage

Usage with composable

Usage with "@nuxt/bridge"

Configuration

breakpoints

An object where the key is the name of the viewport, and the value is the viewport size.

cookie

An object with options for cookie. See more https://www.npmjs.com/package/cookiejs#cookie-attributes

defaultBreakpoints

An object where the key is the name of the detected device, and the value is the breakpoint key.

fallbackBreakpoint

The breakpoint key to be used, if the device was not detected.

feature

CSS media feature.

Default configuration

{
  // ...
  viewport: {
    breakpoints: {
      desktop: 1024,
      desktopMedium: 1280,
      desktopWide: 1600,

mobile: 320, mobileMedium: 375, mobileWide: 425,

tablet: 768, },

cookie: { expires: 365, // 365 days name: 'viewport', path: '/', sameSite: 'Strict', secure: true, },

defaultBreakpoints: { desktop: 'desktop', mobile: 'mobile', tablet: 'tablet', },

fallbackBreakpoint: 'desktop',

feature: 'minWidth', }, // ... }

Example configuration for Tailwind CSS

{
  // ...
  viewport: {
    breakpoints: {
      xs: 320,
      sm: 640,
      md: 768,
      lg: 1024,
      xl: 1280,
      '2xl': 1536,
    },

defaultBreakpoints: { desktop: 'lg', mobile: 'xs', tablet: 'md', },

fallbackBreakpoint: 'lg' }, // ... }

Per-page configuration

You can override the global configuration for specific pages using definePageMeta.

API

viewport.breakpoint

Current breakpoint.

viewport.breakpointValue

// Example using defaults.

viewport.breakpointValue('desktop') // Result: 1024. viewport.breakpointValue('tablet') // Result: 768. viewport.breakpointValue('mobile') // Result: 320.

viewport.isGreaterThan

// Example: viewport.breakpoint is "mobile".

viewport.isGreaterThan('mobile') // Result: false. viewport.isGreaterThan('desktop') // Result: false.

viewport.isGreaterOrEquals

// Example: viewport.breakpoint is "mobile".

viewport.isGreaterOrEquals('mobile') // Result: true. viewport.isGreaterOrEquals('desktop') // Result: false.

viewport.isLessThan

// Example: viewport.breakpoint is "desktop".

viewport.isLessThan('desktopWide') // Result: true. viewport.isLessThan('mobile') // Result: false.

viewport.isLessOrEquals

// Example: viewport.breakpoint is "tablet".

viewport.isLessOrEquals('tablet') // Result: true. viewport.isLessOrEquals('mobile') // Result: false.

viewport.match

// Example: viewport.breakpoint is "tablet".

viewport.match('tablet') // Result: true. viewport.match('desktop') // Result: false.

viewport.matches

// Example: viewport.breakpoint is "mobileWide".

viewport.matches('tablet', 'mobileWide') // Result: true. viewport.matches('mobile', 'tablet') // Result: false.

viewport.queries

Object with generated media queries.

Contributing

You can contribute to this module online with CodeSandBox:

Edit nuxt-viewport

Or locally:

License

MIT License

Copyright (c) mvrlin mvrlin@pm.me

[npm-version-src]: https://img.shields.io/npm/v/nuxt-viewport/latest.svg?style=for-the-badge [npm-version-href]: https://npmjs.com/package/nuxt-viewport

[npm-downloads-src]: https://img.shields.io/npm/dt/nuxt-viewport.svg?style=for-the-badge [npm-downloads-href]: https://npmjs.com/package/nuxt-viewport

[license-src]: https://img.shields.io/npm/l/nuxt-viewport.svg?style=for-the-badge [license-href]: https://npmjs.com/package/nuxt-viewport

--- Tranlated By Open Ai Tx | Last indexed: 2025-12-15 ---