Web/CSS/@viewport

From Get docs

DeprecatedThis feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.


Note: See https://github.com/w3c/csswg-drafts/issues/4766 for discussion around @viewport's removal from the standards track.


The @viewport CSS at-rule lets you configure the viewport through which the document is viewed. It's primarily used for mobile devices, but is also used by desktop browsers that support features like "snap to edge" (such as Microsoft Edge).

Lengths specified as percentages are calculated relative to the initial viewport, which is the viewport before any user agent or authored styles have had an opportunity to adjust the viewport. This is typically based on the size of the window on desktop browsers that aren't in full screen mode.

On mobile devices (or desktop devices that are in full screen mode), the initial viewport is usually the portion of a device's screen that is available for application use. This may be either the full screen or the full screen area minus areas controlled by the operating system (such as a taskbar) or the application-available screen area (either the full screen or the screen minus any areas owned by the operating system or other applications).

@viewport {
  width: 100vw; /*Sets the width of the actual viewport to the device width*/
}

Note: The use of <meta name="viewport"> tag overrides @viewport


Syntax

The at-rule contains a set of nested [[../../../Glossary/descriptor_(CSS)-2|descriptor]]s in a CSS block that is delimited by curly braces.

A zoom factor of 1.0 or 100% corresponds to no zooming. Larger values zoom in. Smaller values zoom out.

Descriptors

Browser support for @viewport is weak at this time, with support being largely available in Internet Explorer and Edge. Even in those browsers, only a small number of descriptors are available. Browsers will ignore @viewport if they don't support it, and will ignore any descriptors that they don't recognize.

min-width
Used in the determination of the width of the viewport when the document is first displayed.
max-width
Used in the determination of the width of the viewport when the document is first displayed.
width
A shorthand descriptor for setting both min-width and max-width.
min-height
Used in the determination of the height of the viewport when the document is first displayed.
max-height
Used in the determination of the height of the viewport when the document is first displayed.
height
A shorthand descriptor for setting both min-height and max-height.
zoom
Sets the initial zoom factor.
min-zoom
Sets the minimum zoom factor.
max-zoom
Sets the maximum zoom factor.
user-zoom
Controls whether or not the user should be able to change the zoom factor.
orientation
Controls the document's orientation.
viewport-fit
Controls the display of the document on non-rectangular displays.

Formal syntax

@viewport {
  <group-rule-body>
}

Examples

Setting viewport size, zoom, and orientation

@viewport {
  min-width: 640px;
  max-width: 800px;
}

@viewport {
  zoom: 0.75;
  min-zoom: 0.5;
  max-zoom: 0.9;
}

@viewport {
  orientation: landscape;
}

Specifications

Specification Status Comment
CSS Round Display Level 1The definition of '@viewport' in that specification. Working Draft Defined the viewport-fit descriptor.
CSS Device AdaptationThe definition of '@viewport' in that specification. Working Draft Initial definition

Browser compatibility

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
@viewport

Chrome No support 29 — 84

Notes' Disabled'

No support 29 — 84

Notes' Disabled'

Notes' See Chromium bug 235457. Disabled' From version 29 until version 84 (exclusive): this feature is behind the --enable-experimental-webkit-features runtime flag and the --enable-viewport runtime flag.

Edge Full support 12

Prefixed' Disabled'

Full support 12

Prefixed' Disabled'

Prefixed' Implemented with the vendor prefix: -ms- Disabled' From version 12: this feature is behind the Enable @-ms-viewport rules preference.

Firefox No support No

Notes'

No support No

Notes'

Notes' See Firefox bug 747754.

IE Full support 10

Prefixed'

Full support 10

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Opera Full support 16

Disabled'

Full support 16

Disabled'

Disabled' From version 16: this feature is behind the --enable-experimental-webkit-features runtime flag and the --enable-viewport runtime flag. No support 11.1 — 15

Prefixed'

Prefixed' Implemented with the vendor prefix: -o-

Safari No support No

Notes'

No support No

Notes'

Notes' See WebKit bug 95959.

WebView Android

No support 4.4 — 37

Chrome Android No support 29 — 84

Notes' Disabled'

No support 29 — 84

Notes' Disabled'

Notes' See Chromium bug 235457. Disabled' From version 29 until version 84 (exclusive): this feature is behind the --enable-experimental-webkit-features runtime flag and the --enable-viewport runtime flag.

Firefox Android No support No

Notes'

No support No

Notes'

Notes' See Firefox bug 747754.

Opera Android Full support 16

Disabled'

Full support 16

Disabled'

Disabled' From version 16: this feature is behind the --enable-experimental-webkit-features runtime flag and the --enable-viewport runtime flag. No support 11.1 — 14

Prefixed'

Prefixed' Implemented with the vendor prefix: -o-

Safari iOS No support No

Notes'

No support No

Notes'

Notes' See WebKit bug 95959.

Samsung Internet Android

Full support 2.0

height descriptor Chrome

No support 29 — 84

Edge Full support 12

Prefixed'

Full support 12

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Firefox

No support No

IE Full support 10

Prefixed'

Full support 10

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Opera Full support 16


Full support 16


No support 11.1 — 15


Safari

No support No

WebView Android

No support 4.4 — 37

Chrome Android

No support 29 — 84

Firefox Android

No support No

Opera Android Full support 16


Full support 16


No support 11.1 — 14


Safari iOS

No support No

Samsung Internet Android

Full support 2.0

max-height descriptor Chrome

No support 29 — 84

Edge Full support 12

Prefixed'

Full support 12

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Firefox

No support No

IE Full support 10

Prefixed'

Full support 10

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Opera Full support 16


Full support 16


No support 11.1 — 15


Safari

No support No

WebView Android

No support 4.4 — 37

Chrome Android

No support 29 — 84

Firefox Android

No support No

Opera Android Full support 16


Full support 16


No support 11.1 — 14


Safari iOS

No support No

Samsung Internet Android

Full support 2.0

max-width descriptor Chrome

No support 29 — 84

Edge Full support 12

Prefixed'

Full support 12

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Firefox

No support No

IE Full support 10

Prefixed'

Full support 10

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Opera Full support 16


Full support 16


No support 11.1 — 15


Safari

No support No

WebView Android

No support 4.4 — 37

Chrome Android

No support 29 — 84

Firefox Android

No support No

Opera Android Full support 16


Full support 16


No support 11.1 — 14


Safari iOS

No support No

Samsung Internet Android

Full support 2.0

max-zoom descriptor Chrome

No support 29 — 84

Edge Full support 12

Prefixed'

Full support 12

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Firefox

No support No

IE Full support 10

Prefixed'

Full support 10

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Opera

Full support 16

Safari

No support No

WebView Android

No support No

Chrome Android

No support 29 — 84

Firefox Android

No support No

Opera Android

Full support 16

Safari iOS

No support No

Samsung Internet Android

Full support 2.0

min-height descriptor Chrome

No support 29 — 84

Edge Full support 12

Prefixed'

Full support 12

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Firefox

No support No

IE Full support 10

Prefixed'

Full support 10

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Opera Full support 16


Full support 16


No support 11.1 — 15


Safari

No support No

WebView Android

No support 4.4 — 37

Chrome Android

No support 29 — 84

Firefox Android

No support No

Opera Android Full support 16


Full support 16


No support 11.1 — 14


Safari iOS

No support No

Samsung Internet Android

Full support 2.0

min-width descriptor Chrome

No support 29 — 84

Edge Full support 12

Prefixed'

Full support 12

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Firefox

No support No

IE Full support 10

Prefixed'

Full support 10

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Opera Full support 16


Full support 16


No support 11.1 — 15


Safari

No support No

WebView Android

No support 4.4 — 37

Chrome Android

No support 29 — 84

Firefox Android

No support No

Opera Android Full support 16


Full support 16


No support 11.1 — 14


Safari iOS

No support No

Samsung Internet Android

Full support 2.0

min-zoom descriptor Chrome

No support 29 — 84

Edge Full support 12

Prefixed'

Full support 12

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Firefox

No support No

IE Full support 10

Prefixed'

Full support 10

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Opera

Full support 16

Safari

No support No

WebView Android

No support No

Chrome Android

No support 29 — 84

Firefox Android

No support No

Opera Android

Full support 16

Safari iOS

No support No

Samsung Internet Android

Full support 2.0

orientation descriptor Chrome

No support No

Edge No support 12 — 79

Prefixed'

No support 12 — 79

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Firefox

No support No

IE Full support 10

Prefixed'

Full support 10

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Opera

No support No

Safari

No support No

WebView Android

No support No

Chrome Android

No support No

Firefox Android

No support No

Opera Android No support 11.1 — 14

Prefixed'

No support 11.1 — 14

Prefixed'

Prefixed' Implemented with the vendor prefix: -o-

Safari iOS

No support No

Samsung Internet Android

No support No

user-zoom descriptor Chrome

No support 29 — 84

Edge Full support 12

Prefixed'

Full support 12

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Firefox

No support No

IE Full support 10

Prefixed'

Full support 10

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Opera

Full support 16

Safari

No support No

WebView Android

No support No

Chrome Android

No support 29 — 84

Firefox Android

No support No

Opera Android

Full support 16

Safari iOS

No support No

Samsung Internet Android

Full support 2.0

viewport-fit descriptor Chrome

No support No

Edge

No support No

Firefox

No support No

IE

No support No

Opera

No support No

Safari

No support No

WebView Android

No support No

Chrome Android

No support No

Firefox Android

No support No

Opera Android

No support No

Safari iOS

No support No

Samsung Internet Android

No support No

width descriptor Chrome

No support 29 — 84

Edge Full support 12

Prefixed'

Full support 12

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Firefox

No support No

IE Full support 10

Prefixed'

Full support 10

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Opera Full support 16


Full support 16


No support 11.1 — 15


Safari

No support No

WebView Android

No support 4.4 — 37

Chrome Android

No support 29 — 84

Firefox Android

No support No

Opera Android Full support 16


Full support 16


No support 11.1 — 14


Safari iOS

No support No

Samsung Internet Android

Full support 2.0

zoom descriptor Chrome

No support 29 — 84

Edge Full support 12

Prefixed'

Full support 12

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Firefox

No support No

IE Full support 10

Prefixed'

Full support 10

Prefixed'

Prefixed' Implemented with the vendor prefix: -ms-

Opera

Full support 16

Safari

No support No

WebView Android

No support 4.4 — 37

Chrome Android

No support 61 — 84

Firefox Android

No support No

Opera Android

Full support 16

Safari iOS

No support No

Samsung Internet Android

Full support 8.0

Legend

Full support  
Full support
No support  
No support
See implementation notes.'
See implementation notes.
User must explicitly enable this feature.'
User must explicitly enable this feature.
Requires a vendor prefix or different name for use.'
Requires a vendor prefix or different name for use.


See also