Skip to content

Instantly share code, notes, and snippets.

@profburnes
Last active May 30, 2017 12:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save profburnes/c1585c315d240a524a5916cf44612b03 to your computer and use it in GitHub Desktop.
Save profburnes/c1585c315d240a524a5916cf44612b03 to your computer and use it in GitHub Desktop.

Começando com Media Queries

Antigamente existiam somente computadores Desktop e Notebooks com resoluções parecidas, 60x480, 800x600, 1024x600 e assim por diante. Com o tempo foram surgindo placas de vídeo melhores, monitores de diversos tamanhos e os sites começaram a ficar estranhos e mal acomodados em diversas resoluções.

Nos últimos 10 anos, os Smartphones e Tablets foram popularizados, trazendo diversos dispositivos com incontáveis resoluções de tela, menores que as telas dos computadores Desktop. Outros dispositivos como TVs e Projetores também começaram a fazer parte de uma extensa lista de dispositivos.

Para isso, o HTML trouxe os Media Types que definiam para qual dispositivo um CSS seria aplicado. Com este é possível definir por exemplo, um CSS somente para impressão, onde podemos retirar imagens de fundo e cores fortes para que o usuário possa realizar uma impressão gastando menos tinta ou deixando a impressão mais legível.

Um outro Media Type aplicaria um CSS a TVs, ou Projetor ou um Handheld, como eram conhecidos os dispositivos móveis do momento, normalmente os PDAs.

Viewport

Antigamente existiam somente computadores Desktop e Notebooks com resoluções parecidas, 60x480, 800x600, 1024x600 e assim por diante. Com o tempo foram surgindo placas de vídeo melhores, monitores de diversos tamanhos e os sites começaram a ficar estranhos e mal acomodados em diversas resoluções.

Nos últimos 10 anos, os Smartphones e Tablets foram popularizados, trazendo diversos dispositivos com incontáveis resoluções de tela, menores que as telas dos computadores Desktop. Outros dispositivos como TVs e Projetores também começaram a fazer parte de uma extensa lista de dispositivos.

Para isso, o HTML trouxe os Media Types que definiam para qual dispositivo um CSS seria aplicado. Com este é possível definir por exemplo, um CSS somente para impressão, onde podemos retirar imagens de fundo e cores fortes para que o usuário possa realizar uma impressão gastando menos tinta ou deixando a impressão mais legível.

Um outro Media Type aplicaria um CSS a TVs, ou Projetor ou um Handheld, como eram conhecidos os dispositivos móveis do momento, normalmente os PDAs.

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">

Esta regra também pode ser adicionada dentro do próprio arquivo CSS:

@viewport {
  width: device-width;
  zoom: 1;
  initial-scale= 1;
}

Abaixo segue uma lista de propriedades que podem ser utilizadas:

  • width e height: faz com que a página se comporte como se o navegador tenha exatamente este tamanho de largura (width) ou altura (height), podendo ser em pixels ou até mesmo se adequar ao tamanho da tela do aparelho utilizando o devide-width ou device-height.
  • initial-scale: refere-se ao zoom inicial da página, normalmente iniciada em 1 para o zoom padrão.
  • user-scalabe, maximum e minimun-scale: refere-se ao tanto de zoom máximo e mínimo que o usuário possa aplicar na página. Pode-se definir que ele não possa aplicar zoom com o user-scalabe: no.

Mais exemplos no site do Opera

Exemplos

As regras podem ser adicionadas nas TAGs links ou dentro do próprio CSS.

No caso de aplicado na TAG Link, podemos separar CSSs diferentes para cada tela, um para mobile e um para Desktops por exemplo. Ou fazer um CSS para Desktop e adicionar as regras para telas menores no próprio arquivo.

Abaixo exemplo de como adicionar uma regra na TAG link:

<link rel="stylesheet" href="mobile.css" media="max-width: 480px">

A regra acima define que este CSS só será aplicada se o dispositivo ou tela chegar ao máximo de 480px.

Abaixo as regras mais utilizadas:

  • width
  • height
  • device-width
  • device-height
  • orientation
  • aspect-ratio
  • device-aspect-ratio

As regras ou expressões acima são conhecidas como media features. Note que existem regras parecidas como width e device-width, a primeira é relacionada ao tamanho da resolução da tela e a segunda é relacionada ao tamanho real da tela do dispositivo. Por exemplo, modelos de iPhone conseguem renderizar páginas como em um Desktop, porém a sua resolução de device-width é de 480px.

As expressões retornam sempre verdadeiro ou falso. Caso o resultado dela seja verdadeiro ela executa o que foi informado, no caso do exemplo, ele irá inserir o mobile.css somente se esta tela tiver width máximo de 480px.

Podemos utilizar operadores lógicos AND, NOT e OR para compor nossas regras, como demonstra o exemplo abaixo:

@media (min-width: 700px) and (orientation: landscape) 
<!DOCTYPE html>
<html>
<head>
<title>Exemplo de Media Querie</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="container">
<header>
<a href="index.html" id="home"><img src="http://www.professorburnes.com.br/images/logo2.png"></a>
<nav>
<ul>
<li><a href="index.html">Home</a>
<li><a href="contato.html">Contato</a>
</li>
</li>
</header>
<main>
<div class="banner">
<img src="http://www.professorburnes.com.br/images/b1.jpg">
</div>
<h1>Título 01</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<div class="foto">
<img src="http://www.professorburnes.com.br/fotos/1493992721g.jpg">
<img src="http://www.professorburnes.com.br/fotos/1493992721g.jpg">
</div>
</main>
<div class="clear"></div>
<footer>
Desenvolvido por Tidinho
</footer>
</div>
</body>
</html>
/* regras gerais */
body {
margin: 0;
background: #f1f1f1;
font: 14px Arial, Verdana;
}
.container {
width: 980px;
margin: auto;
}
header, main, footer, .banner {
width: 100%;
}
header {
background: #333;
padding: 20px 0px;
float: left;
}
footer {
background: #333;
padding: 10px 0px;
text-align: center;
color: #fff;
}
.banner img {
width: 100%;
}
#home {
float: left;
}
header nav {
float: right;
}
header nav ul {
margin: 0;
padding: 0;
}
header nav ul li {
list-style: none;
display: inline;
}
header nav ul li a {
background: #ccc;
color: #fff;
padding: 5px;
margin: 5px;
}
.foto img {
width: 478px;
float: left;
margin: 5px;
border: 1px solid #000;
}
.clear {
clear: both;
}
@media (max-width: 480px) {
header #logo {
width: 100%;
text-align: center;
}
header nav {
width: 100%;
text-align: center;
font-size: 2em;
}
main {
padding: 10px;
box-sizing: border-box;
}
.banner {
display: none;
}
.container {
width: 100%;
}
.foto img {
width: 100%;
}
p {
font-size: 1.5em;
}
}
@media (max-width: 800px) {
header nav {
text-align: center;
font-size: 2em;
}
main {
padding: 10px;
box-sizing: border-box;
}
.container {
width: 100%;
}
.foto img {
width: 100%;
}
p {
font-size: 1.5em;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment