O design responsivo é muito mais do que apenas uma palavra da moda e um conjunto vagamente organizado de princípios – é uma técnica de design que exige que você aborde quase todos os problemas de maneira diferente de um site tradicional. Também é difícil codificar. Estamos profundamente empenhados em um novo design de site Hashrocket que é totalmente responsivo e usa ativos de retina – e desse projeto (e de outros semelhantes) terminamos com um ponto de partida bastante sólido para lidar com esses requisitos:
Faça com que o iOS se comporte de maneira responsável
Existem duas linhas de código cruciais de que você precisa para fazer praticamente qualquer coisa responsiva funcionar corretamente: uma meta
tag e uma webkit
tag.
Coloque isso em seu <head>
:
%meta(name="viewport" content="width=device-width, initial-scale=1")
Isso apenas informa a janela de visualização para se adequar à largura do seu dispositivo (para que o modo paisagem não pareça maior do que o modo retrato, por exemplo) e dimensionar corretamente. Alguns Googlings dessa técnica também podem resultar em recomendações de código para adicionar um maximum-scale
valor; isso desativa o zoom de aperto e geralmente não é necessário.
Coloque isso em seu Sass (ou SCSS, o que for):
body
-webkit-text-size-adjust: none
Você provavelmente conhece este – evita que o iOS dimensione seu texto para facilitar a leitura. Se o seu site responder corretamente, você está cuidando do tamanho da fonte com as consultas @mídia.
The Viewport Width Mixin
Este é o nosso mixin para nos mantermos sãos no mundo das consultas de mídia. (Este e outros exigem uma versão mais recente do Sass que suporte a passagem de blocos de conteúdo para mixins; você deve usá-lo de qualquer maneira.)
= max-width($width: 640)
@media screen and (max-width: #{$width}px)
@content
Fácil como uma torta. Basta definir o $width
valor para o que você decidir ser o ponto de interrupção principal do seu site e adicionar outros conforme necessário. Isso nos permite escrever regras rapidamente e lê-las facilmente:
.foo
margin: 60px
+max-width
margin: 40px
+max-width(480)
margin: 20px
The Retina Mixin
Os planos de fundo da retina são seu próprio conjunto de @media
dor baseada. Aqui estão alguns mixins que tornaram nossas vidas mais fáceis:
= retina
@media screen and (-webkit-min-device-pixel-ratio: 2), screen and (min-device-pixel-ratio: 2)
@content
= retina_bg($filename, $dimensions: false, $ext:"png")
background-image: image-url("#{$filename}.#{$ext}")
+retina
background-image: image-url("#{$filename}@2x.#{$ext}")
@if $dimensions != false
background-size: $dimensions
O retina
mixin é geralmente útil; o retina_bg
mixin é absolutamente essencial. Com retina_bg
, podemos escrever nossos estilos de imagem de fundo de retina em uma linha:
.bar
+retina_bg("logo", 100px)
Agora, os dispositivos não retina usam , enquanto a retina usa , como a convenção de nome de arquivo do iOS. É importante notar que nem sempre é necessário, portanto, está atrás de uma condicional e não atribui se não for especificado.logo.png
logo@2x.png
background-size
Cuide de si mesmo lá fora
Espero sinceramente que este post seja útil para você e não apenas aumentando o barulho das @media
dicas que estão por aí hoje em dia. Se você começar com essas peças, estará no caminho certo para escrever estilos responsivos que não atrapalhem o resto do seu CSS e o ajudem a manter todas as larguras e proporções classificadas.
(postado originalmente no The Hashrocket Blog )