Last updated:
CSS env() Function: A Developer's Guide
Explore the CSS env() function and its practical applications for responsive, device-aware layouts.
What is env()?
The CSS env() function inserts user-agent defined environment variables into your styles. It’s similar to var() but for browser-defined values rather than custom properties, and it’s globally scoped to the entire document.
Key Environment Variables
- Safe Area Insets:
safe-area-inset-top,safe-area-inset-right,safe-area-inset-bottom,safe-area-inset-left - Titlebar Areas:
titlebar-area-x,titlebar-area-y,titlebar-area-width,titlebar-area-height(for desktop PWAs) - Keyboard Insets:
keyboard-inset-top,keyboard-inset-right,keyboard-inset-bottom,keyboard-inset-left,keyboard-inset-width,keyboard-inset-height
Practical Use Cases
Mobile Safe Areas
- Prevent content from being hidden behind device notches or rounded corners
- Ensure buttons and interactive elements stay within the visible viewport
- Handle different screen shapes (rectangular vs. round displays)
Progressive Web Apps (PWAs)
- Position content around window control buttons (minimize, maximize, close)
- Utilize full application window surface area with Window Controls Overlay
- Create custom title bars that don’t interfere with system controls
Virtual Keyboard Handling
- Adjust layouts when on-screen keyboards appear
- Prevent content from being hidden behind virtual keyboards
- Maintain proper spacing and visibility on mobile devices
Cross-Device Compatibility
- Handle different viewport shapes and sizes automatically
- Ensure consistent user experience across various device types
- Reduce the need for device-specific CSS media queries
Fixed Positioning
- Position fixed elements in safe areas of the viewport
- Avoid content being covered by system UI elements
- Create responsive layouts that adapt to device constraints
Syntax Examples
/* Basic usage with fallback */
padding-top: env(safe-area-inset-top, 20px);
/* Multiple safe area insets */
padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
/* PWA titlebar positioning */
top: env(titlebar-area-y);
left: env(titlebar-area-x);
width: env(titlebar-area-width);
height: env(titlebar-area-height);
Browser Support
The env() function has been widely available since January 2020 with excellent support across modern browsers. It’s essential for mobile-first and PWA development.
This function is particularly valuable for creating responsive, device-aware layouts that work seamlessly across different screen shapes and sizes.
Browser Support
Fully supported
Chrome 69
Edge 79
Firefox 65
Safari 11.1