Descubra como a função env()
e as variáveis safe-area-inset-*
resolvem problemas de responsividade em dispositivos com notch e cantos arredondados, tanto na vertical quanto na horizontal.

Introdução
Já aconteceu com você de abrir um site no iPhone ou em um celular com notch, e perceber que parte do conteúdo está cortado ou colado demais nas bordas?
Com a popularização de dispositivos com notches, câmeras frontais embutidas e cantos arredondados, o CSS tradicional (padding: 20px
, por exemplo) muitas vezes não é suficiente para garantir que o conteúdo fique legível e acessível em todas as telas.
Aí entra o env()
com os safe-area insets, uma solução moderna para criar interfaces que respeitam as áreas seguras dos dispositivos.
Neste artigo, você vai entender:
- O que é
env()
- Como usar as variáveis
safe-area-inset-*
- Como ele funciona em diferentes orientações de tela
- Exemplos práticos
- Como lidar com compatibilidade
Vamos entender melhor?
O que é env()
no CSS?
O env()
é uma função CSS que permite acessar variáveis do ambiente, ou seja, valores que o navegador fornece dinamicamente com base no dispositivo, sistema operacional ou contexto.
Um dos usos mais populares dessa função é trabalhar com os safe area insets, que informam:
- Quanta margem é necessária no topo, lateral ou base da tela para evitar sobreposição com notches, barras ou cantos arredondados.
As quatro variáveis principais são:
env(safe-area-inset-top)
env(safe-area-inset-right)
env(safe-area-inset-bottom)
env(safe-area-inset-left)
Qual problema ele resolve?
Em dispositivos como:
- iPhone X e posteriores (com notch)
- Smartphones Android com câmera embutida
- Tablets com cantos arredondados
A área útil da tela não é um retângulo perfeito.
Se não tomarmos cuidado, o conteúdo pode:
- Ficar cortado pelo notch ou câmera
- Ficar escondido atrás da barra inferior de gestos
- Ficar visualmente desconfortável, colado nas bordas
Com os safe-area insets
, podemos criar layouts responsivos de verdade, que respeitam essas áreas seguras automaticamente, tanto no modo vertical quanto horizontal.
Como ele funciona em diferentes orientações?
As variáveis são dinâmicas:
- No modo vertical (portrait) → o
safe-area-inset-top
cobre o notch no topo. - No modo horizontal (landscape) → o
safe-area-inset-left
esafe-area-inset-right
passam a proteger as laterais (onde o notch “gira”).
Ou seja: você escreve uma vez, e o navegador ajusta conforme a orientação.
Exemplo básico de uso
body {
padding-top: env(safe-area-inset-top);
padding-right: env(safe-area-inset-right);
padding-bottom: env(safe-area-inset-bottom);
padding-left: env(safe-area-inset-left);
}
Exemplo avançado: Layout fluido com fallback
.container {
padding:
calc(16px + env(safe-area-inset-top, 0px))
calc(16px + env(safe-area-inset-right, 0px))
calc(16px + env(safe-area-inset-bottom, 0px))
calc(16px + env(safe-area-inset-left, 0px));
}
Usando media queries para ajustes finos (opcional)
@media (orientation: landscape) {
.header {
padding-left: calc(16px + env(safe-area-inset-left, 0px));
padding-right: calc(16px + env(safe-area-inset-right, 0px));
}
}
💡 Dica: Isso só é necessário em casos muito específicos. Na maioria dos projetos, confiar apenas no env() já cobre os dois modos.
Compatibilidade e fallback
Suporte
- iOS 11+ (Safari)
- Android Chrome 69+
- Edge, Firefox (versões modernas)
Fallback
Para navegadores que não suportam env(), use o segundo parâmetro como valor padrão:
padding-top: env(safe-area-inset-top, 20px);
Ou:
padding-top: 20px;
padding-top: env(safe-area-inset-top, 20px);
Boas práticas
- Use env() apenas onde há risco de conflito com notches, barras e gestos.
- Combine com unidades responsivas (vh, dvh) para layouts flexíveis.
- Teste em simuladores e dispositivos reais nos dois modos (vertical e horizontal).
- Evite sobrecarregar com media queries quando não for necessário.
Conclusão
O env() e os safe-area insets são essenciais para criar interfaces modernas, responsivas e à prova de notch, tanto na vertical quanto na horizontal.
Com pouco código, você protege seu layout, melhora a experiência do usuário e mostra atenção aos detalhes — características de um desenvolvedor frontend de alto nível. 💪
Que tal revisar seus layouts e adicionar suporte a safe areas hoje mesmo?
📢 Gostou do artigo?
Me siga no LinkedIn para mais dicas práticas sobre CSS moderno, responsividade e experiência do usuário!