Deprecated
This 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 descriptors 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
andmax-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
andmax-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 1 The definition of '@viewport' in that specification. |
Working Draft | Defined the viewport-fit descriptor. |
CSS Device Adaptation The definition of '@viewport' in that specification. |
Working Draft | Initial definition |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
@viewport | Chrome
No support
29 — 84
| Edge
Full support
12
| Firefox
No support
No
| IE
Full support
10
| Opera
Full support
16
| 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
| Safari iOS
No support
No
| Samsung Internet Android Full support 2.0 |
height descriptor | Chrome No support 29 — 84 | Edge
Full support
12
| Firefox No support No | IE
Full support
10
| Opera
Full support
16
| 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
| Safari iOS No support No | Samsung Internet Android Full support 2.0 |
max-height descriptor | Chrome No support 29 — 84 | Edge
Full support
12
| Firefox No support No | IE
Full support
10
| Opera
Full support
16
| 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
| Safari iOS No support No | Samsung Internet Android Full support 2.0 |
max-width descriptor | Chrome No support 29 — 84 | Edge
Full support
12
| Firefox No support No | IE
Full support
10
| Opera
Full support
16
| 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
| Safari iOS No support No | Samsung Internet Android Full support 2.0 |
max-zoom descriptor | Chrome No support 29 — 84 | Edge
Full support
12
| Firefox No support No | IE
Full support
10
| 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
| Firefox No support No | IE
Full support
10
| Opera
Full support
16
| 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
| Safari iOS No support No | Samsung Internet Android Full support 2.0 |
min-width descriptor | Chrome No support 29 — 84 | Edge
Full support
12
| Firefox No support No | IE
Full support
10
| Opera
Full support
16
| 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
| Safari iOS No support No | Samsung Internet Android Full support 2.0 |
min-zoom descriptor | Chrome No support 29 — 84 | Edge
Full support
12
| Firefox No support No | IE
Full support
10
| 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
| Firefox No support No | IE
Full support
10
| 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
| Safari iOS No support No | Samsung Internet Android No support No |
user-zoom descriptor | Chrome No support 29 — 84 | Edge
Full support
12
| Firefox No support No | IE
Full support
10
| 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
| Firefox No support No | IE
Full support
10
| Opera
Full support
16
| 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
| Safari iOS No support No | Samsung Internet Android Full support 2.0 |
zoom descriptor | Chrome No support 29 — 84 | Edge
Full support
12
| Firefox No support No | IE
Full support
10
| 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
<meta>
, specifically<meta name="viewport">
- Using the viewport meta tag to control layout on mobile browsers