Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
APOSTILA DE CSS
Brazelino Bertolete Neto
Fábio José Colombo
Luciano de Jesus Guesso Rodrigues de Barros
Taquaritinga – SP
2020
LISTA DE FIGURAS
Figura 1 – Box Model ............................................................................................................... 26
Figura 2 – Box Model ............................................................................................................... 27
Figura 3 – Código da Imagem .................................................................................................. 45
LISTA DE QUADROS
Quadro 1 - Parâmetros Utilizados em Media Queries .............................................................. 54
Quadro 2 - Operadores ............................................................................................................. 55
SUMÁRIO
1. CSS(CASCADING STYLE SHEETS) .................................................................................. 6
1.1 BENEFÍCIOS DO CSS..................................................................................................... 6
1.2 FORMAS DE TRABALHAR COM CSS ........................................................................ 6
1.2.1 EXTERNO ................................................................................................................. 6
1.2.1.1 Tipos de Mídia ..................................................................................................... 7
1.2.2 FOLHA DE ESTILO INCORPORADA.................................................................... 8
1.2.3 FOLHA DE ESTILO INCORPORADO NO ESCOPO ............................................ 8
1.2.4 FOLHA DE ESTILO INLINE ................................................................................... 9
1.2.5 FOLHAS DE ESTILO MÚLTIPLAS ........................................................................ 9
2. SELETORES NO CSS ......................................................................................................... 11
2.1 ALGUNS EXEMPLOS DE DECLARAÇÃO DE SELETOR ....................................... 11
2.2 TÉCNICA DE CSS RESET............................................................................................ 24
2.2.1 RESET CSS NORMALIZE.CSS ............................................................................. 25
2.4 BOX MODEL EM CSS(MODELO DE CAIXAS) ........................................................ 26
2.5 UNIDADES DE MEDIDA EM CSS .............................................................................. 27
3. COMANDOS CSS ............................................................................................................... 29
4. LAYOUT .............................................................................................................................. 42
4.1 LAYOUT FLUIDO ........................................................................................................ 42
4.2 TRANSFORMANDO UM LAYOUT FIXO EM LAYOUT FLUIDO ......................... 42
4.3 IMAGENS E RECURSOS FLEXÍVEIS ........................................................................ 45
4.4 TÉCNICAS PARA IMAGENS FLEXÍVEIS ................................................................. 46
4.4.1 RILOADR ................................................................................................................ 46
4.4.2 JQUERY PICTURE ................................................................................................. 47
4.4.3 PICTURELL ............................................................................................................ 47
4.4.4 ADAPTIVE IMAGES.............................................................................................. 48
5. MEDIA QUERIES ............................................................................................................... 50
5.1 MEDIA TYPE ................................................................................................................ 50
5.2 MEDIA QUERIES.......................................................................................................... 51
5.2.1 OUTROS PARÂMETROS UTILIZADOS EM MEDIA QUERIES ...................... 52
5.5.2 OPERADORES ........................................................................................................ 54
5.3 Exemplo Prático da Utilização das Media Queries......................................................... 55
1. CSS(CASCADING STYLE SHEETS)
O CSS surgiu em Outubro de 1994, criado por Hakon Lie, que buscava facilitar o
desenvolvimento de sites, devido na época esta atividade ser muito complexa.
Em 1995, o CSS1 foi criado pela W3C, ganhando muito destaque entre 1997 e 1999, a
partir dai ficou conhecido pelos programadores. Atualmente, encontra-se na versão CSS 3.
1.1 BENEFÍCIOS DO CSS
Algumas vantagens são:
Um único arquivo css pode controlar vários documentos HTML, eliminando assim a
redundância.
Facilidade de criação dos layouts
1.2 FORMAS DE TRABALHAR COM CSS
O CSS formata conteúdo de uma página em HTML. Esse conteúdo pode ser: imagem,
texto, vídeo, áudio ou qualquer outro elemento criado.
O CSS pode ser trabalhado de três formas:
Externas;
Incorporadas;
Inline.
1.2.1 EXTERNO
Segundo o site Maujor(2014):
“Uma folha de estilo é dita externa, quando as regras CSS são declaradas em
um documento a parte do documento HTML, isto é, a folha de estilo é um
arquivo separado do arquivo html. Um arquivo de folha de estilo deve ser
gravado com a extensão .css”
Este tipo é ideal para ser aplicada a várias páginas, porém o arquivo css externo deverá
ser lincado junto ao código HTML, dentro da seção head, conforme o código abaixo:
<head>
<link rel="stylesheet" type="text/css" href="estilo.css" media=”all”>
</head>
Ou:
<head>
<style type="text/css">
@import url("estilo.css");
</style>
</head>
1.2.1.1 Tipos de Mídia
Comando
all
braile
embossed
handheld
projection
screen
speech
tty
tv
Os tipos mídias utilizados pelo CSS estão descritos na tabela abaixo:
Todos os dispositivos
Dispositivos táteis braile
Impressoras braile
Descrição
Dispositivos manuais/portáteis (tela pequena, monocromática, gráficos bitmap,
banda limitada)
Impresso, material opaco e documentos visualizados na tela em modo de
impressão
Projetores
Telas de computador
Sintetizadores de voz. Similar a "aural"
Mídias que utilizam caracteres de tamanho fixo, como terminais ou dispositivos
portáteis com capacidades limitadas de tela
Televisores
Tabela 1 – Tipos de Mídias
Fonte: W3C
Utilizado em especificações media queries como também na declaração do CSS
incorporado ou externo através do comando media, como demonstrado no código abaixo:
<link href="estilo.css" rel="stylesheet" media=”all”/>
Ou:
<style type=”text/css” media=”screen”>
</style>
1.2.2 FOLHA DE ESTILO INCORPORADA
Uma folha de estilo incorporada ou intern são declaradas na seção head do próprio
documento HTML. Este tipo de folha é ideal para ser aplicada a uma única página, podendo
somente mudar a aparência de somente um documento.
Conforme sintaxe mostrada a seguir.
<head>
<style rel="stylesheet" type="text/css">
body {
background: #000;
url(imagens/minhaimagem.gif);
}
</style>
</head>
1.2.3 FOLHA DE ESTILO INCORPORADO NO ESCOPO
Segundo o site Maujor(2014):
“A HTML5 criou uma folha de estilo do tipo vinculada para ser usada dentro
de um container da marcação HTML. As regras CSS declaradas nessa
modalidade de folha de estilo se aplicam somente ao elementos da marcação
que se encontram dentro do container, ou no escopo do container, daí seu
nome”.
Ainda de acordo com o site, a sintaxe para declarar uma folha de estilo deste tipo é
mostrada a seguir:
<!-- marcação HTML do documento -->
<div class="minha-classe">
<style rel="stylesheet" type="text/css" scoped="scoped">
/* regras de estilo */
</style>
<!-- marcação HTML dentro do div.minha-classe
As regras CSS serão aplicadas somente aqui -->
</div>
<!-- mais marcação HTML do documento -->
1.2.4 FOLHA DE ESTILO INLINE
Folhas de Estilos Inline são declaradas dentro da tag de abertura do elemento HTML
com uso do atributo style, misturando a apresentação com a marcação.
A sintaxe é mostrada a seguir:
<p style="color:#000; margin: 5px;">
Aqui um parágrafo de cor preta e com 5px nas 4 margens.
</p>
1.2.5 FOLHAS DE ESTILO MÚLTIPLAS
Se houver alguma propriedade definida para um mesmo elemento em folhas de estilo
distintas, ocorrerá assim o EFEITO CASCATA e prevalecendo os valores da folha de estilo
mais específica.
Abaixo segue o exemplo extraindo do site Maujor:
Suponha, uma folha de estilo externa possua as seguintes declarações para o seletor h2:
h2 {
color: #fc0;
text-align: center;
font: italic 9pt Verdana, Sans-serif;
}
Uma folha de estilo interna possua as seguintes propriedades para o seletor h2:
h2 {
color: #fc0;
text-align: center;
font: italic 10pt Verdana, Sans-serif;
}
Prevalecerá a folha interna e, portanto, a fonte de h2 terá o tamanho igual a 10 pt.
LISTA DE EXERCÍCIOS
Aplique um estilo inline, um incorporado e outro externo nas duas páginas com os seguintes
temas:
Loja de Roupa
Loja Pet
2. SELETORES NO CSS
Uma folha de estilo é formada por uma ou mais regra CSS, sendo que cada regra é
composta por três partes: um seletor, uma propriedade e um valor. Portanto, sua sintaxe segue
conforme o código abaixo:
seletor {
propriedade: valor;
}
Seletor: corresponde ao elemento HTML, sendo este ele identificado por uma tag ou
uma classe ou um ID;
Propriedade: corresponde ao atributo do elemento HTML ao qual será aplicada a
regra;
Valor: corresponde a característica assumida pela propriedade.
Abaixo segue um exemplo de sintaxe de criação de uma regra no CSS:
p{
color: red;
}
2.1 ALGUNS EXEMPLOS DE DECLARAÇÃO DE SELETOR
Abaixo segue alguns exemplos de declaração de seletor no CSS:
*(Asterístico): ele atinge todos os elementos em uma página. Entretanto, este tipo de
seletor é muito utilizado para zerar as margens e o preenchimento dos elementos de
uma página. Porém, tome muito com este tipo de seletor, pois ele deixa o navegador
muito pesado, pois ele tem que selecionar todos os elementos de uma página. Além
disto tudo, este seletor é desnecessário. Abaixo segue um exemplo de sua utilização:
*{
margin: 0;
padding: 0;
}
Ele também pode ser usado como um seletor de elementos filho. Abaixo segue um
exemplo:
#pai * {
border: 1px solid black;
}
Isso fará com que ele aplique a seguinte regra em todos os elementos filhos de um
elemento identificado como “pai”. Porém, também não é recomendada sua utilização.
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE6 ou superior;
Firefox;
Chrome;
Safari;
Opera.
#Identificador: este tipo de seletor aplica regra no elemento com identificador. Ele é
muito usado, contudo, seja cuidadoso ao usar seletores com identificador. Porém,
tome cuidado com a sua utilização, pois este tipo de seletor é rígido e não permitindo
reuso. Portanto, fica dica de sempre utiliza-lo com a precedência do nome da tag.
Abaixo segue o exemplo da sua utilização:
Forma Mais Comum:
#seletor{
width: 960px;
margin: auto;
}
Forma Otimizado
elemento#seletor{
width: 960px;
margin: auto;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE6 ou superior;
Firefox;
Chrome;
Safari;
Opera.
.classe: muito conhecido como seletor de classe, sendo que a diferença entre um
identificador e uma classe é que, com a classe, você pode selecionar vários elementos.
Portanto, utilize seletor de classe quando você necessitar aplicar uma regra a um grupo
de elementos. Abaixo segue um exemplo de sua utilização:
.classe {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE6 ou superior;
Firefox;
Chrome;
Safari;
Opera.
a{
}
Elemento: este tipo de seletor se aplica todos os elementos específicos daquela
página, como por exemplo, se você usar o elemento p(parágrafo), será aplicado em
todos os elementos p da página. Abaixo segue um exemplo de sua utilização:
color: red;
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE6 ou superior;
Firefox;
Chrome;
Safari;
Opera.
ElementoX ElementoY: muito comum é o seletor de descendência, pois ele é mais
específico, como por exemplo, às vezes você quer selecionar um conjunto específico
de âncoras(a), porém se você utilizar o seletor anterior, será selecionado todos os
âncoras, entretanto, você deseja selecionar somente os âncoras que estão dentro de
li a {
}
uma lista não ordenada(li), portanto esta seria a melhor sintaxe. Abaixo segue o
exemplo de sua utilização:
text-decoration: none;
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE6 ou superior;
Firefox;
Chrome;
Safari;
Opera.
ElementoX + ElementoY: Muito conhecido como seletor adjacente. Ele somente
aplicará a regra sobre o elemento após o primeiro elemento. Como por exemplo, se
você quiser aplicar a cor vermelha sobre o primeiro parágrafo após uma lista não
ordenada, você poderá utilizar este seletor. Abaixo segue um exemplo de sua
utilização:
ul + p {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE7 ou superior;
Firefox;
Chrome;
Safari;
Opera.
ElementoX > ElementoY: A diferença entre o seletor descendente ElementoX
ElementoY e o seletor ElementoX > ElementoY é que este último somente seleciona
os elementos filhos de forma direta. No exemplo abaixo, ele aplicará regra de cor de
fonte vermelha a todos os elementos ul que estão contidos dentro da div com
identificador “lista”:
div#lista > ul {
color: red;
}
Na verdade, é recomendável utilizá-lo quando estiver trabalhando seleção de CSS
criados em JavaScript.
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE7 ou superior;
Firefox;
Chrome;
Safari;
Opera.
ElementoX ~ ElementoY: Este seletor é muito semelhante ao seletor ElementoX +
ElementoY, porém bem menos restritivo. Enquanto o primeiro(ul + p) só aplicará a
regra ao primeiro elemento após o elemento inicial, esse aplica a todos os elementos
após os primeiro elemento.
ul ~ p {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE7 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento[atributo]: Conhecido como seletor de atributos, ele seleciona os elementos
pelo o atributo específico, ou seja, todos elementos que possuírem o determinado
atributo, será aplicado a regra. No exemplo demonstrado abaixo, será aplicado a
formatação de fonte cor vermelha a todos os parágrafo que possuírem o atributo id:
p[id] {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE7 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento[atributo="valor"]: Semelhante ao seletor anterior, porém mais específico,
pois o anterior aplicava a todos os elementos que possui o atributo específico, este tipo
de seletor já se aplica a todos os elementos que possui o atributo específico, porém
como este atributo possuindo o valor também específico. No exemplo demonstrado
abaixo, será aplicado a formatação de fonte cor vermelha a todos os parágrafo que
possuírem o atributo id com valor “texto”:
p[id=”texto”] {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE7 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento[atributo*="valor"]: Semelhante ao seletor anterior, porém ele apresenta o
coringa chamado asterístico que representa que ela vai seleciona todos elementos
especificado no seletor, tendo o atributo específico do seletor contendo o valor
especificado em qualquer lugar da string, podendo ser início, no meio ou no fim da
string. Como por exemplo, será aplicado a formatação de fonte cor vermelha a todos
os parágrafo que possuírem o atributo id com valor “texto”, não importando que seja
início, meio ou fim:
p[id*=”texto”] {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE7 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento[atributo^="valor"]: Semelhante ao seletor anterior, porém aplicará a
regra para elementos que possui o atributo com o valor inicial especificado, como por
exemplo, será aplicado a formatação de fonte cor vermelha a todos os parágrafo que
possuírem o atributo id com valor inicial “texto”:
p[id^=”texto”] {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE7 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento[atributo$="valor"]: Semelhante ao anteior, porém aplicará a regra para
elementos que possui o atributo com o valor final especificado, como por exemplo,
será aplicado a formatação de fonte cor vermelha a todos os parágrafo que possuírem
o atributo id com valor final “texto”:
p[id$=”texto”] {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE7 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento[atributo~="valor"]: Neste tipo de seletor, poder-se-ia criar um atributo
chamado data-info que recebesse uma lista de itens, separados por espaço, em cada um
dos elementos. Como por exemplo, você pode criar um data-info dentro de cada
parágrafo, conforme ilustra o código abaixo:
<p id="linha01" data-info="linha palavra texto"> Linha 01 </p>
<p id="linha02" data-info="linha palavra texto"> Linha 02 </p>
Depois, você pode criar a seguinte regra:
a[data-info~="linha"] {
color: red;
}
a[data-info~="texto"] {
border: 1px solid black;
}
Portanto, será aplicado para o elementos específicos que contenha atributos com
algum valor da lista especificada no data-info de cada elemento.
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE7 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento:visited e Elemento:link: A pseudo-classe :link é muito utilizada quando
selecionar todas as âncoras que foram clicadas. Assim como, é utilizado pseudo-classe
:visited todas as âncoras que foram visitadas. Abaixo segue o exemplo de sua
utilização:
a:link {
color: red;
}
a:visted{
color: purple;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE7 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento:checked: Essa pseudo-classe somente aplicará regra aos elementos que
foram selecionados(botão radio ou checkbox). Como por exemplo, todos elementos
input do tipo “radio” ficarão azul quando forem selecionados:
input[type=”radio”]:checked {
color: blue;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE9 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento:hover: este tipo de seletor corresponde quando o mouse passa por cima do
elemento, e ele sofre aplicação da regra. Como por exemplo, o elemento p com
atributo id “linha”, vai mudar de cor para vermelho quando o mouse passar por cima:
p#linha:hover {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE6 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento:focus: este tipo de seletor esteja focado pelo teclado, como links ou campos
de um formulário. Como por exemplo, o elemento input com atributo id “campo”, vai
mudar de cor para vermelho quando ganhar o foco:
input#campo:focus {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE6 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento:visited: este tipo de seletor corresponde quando um link foi visitado. Como
por exemplo, o elemento a com atributo id “artigo”, vai mudar de cor para vermelho
quando alguém acessar o link:
a#artigo:visited {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE6 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento:active: este tipo de seletor corresponde quando um link está sendo
pressionado. Como por exemplo, o elemento a com atributo id “artigo”, vai mudar de
cor para vermelho quando alguém clicar para acessar o link:
a#artigo:active {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE6 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento:before: este tipo de seletor corresponde colocar uma formatação antes do
elemento. Como por exemplo, o elemento a com atributo id “artigo”, vai mudar de cor
para vermelho quando alguém clicar para acessar o link:
a#artigo:before {
border: 8px solid red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE6 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento:after: este tipo de seletor corresponde colocar uma formatação depois do
elemento. Como por exemplo, o elemento a com atributo id “artigo”, vai mudar de cor
para vermelho quando alguém clicar para acessar o link:
a#artigo:after {
border: 8px solid red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE6 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento:not(selector): este é a pseudo-classe negação. Caso você queira selecionar
um conjunto de elementos da mesma categoria, exceto alguns elementos especificados
por seus atributos, portanto, você pode utilizar este tipo de seletor que será muito útil.
Como por exemplo, será aplicada a cor vermelha no texto de todos os elementos
parágrafo, exceto no elemento parágrafo com identificador “linha”:
p:not(#linha) {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE9 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento::pseudoElemento: Este tipo de seletor é formado por pseudo-elementos
que são designados por ::, utilizado para aplicar regras de CSS na primeira linha ou na
primeira letra. Como por exemplo, aplicar a cor de letra vermelha na primeira linha:
p::first-line {
color: red;
}
Ou selecionar a primeira letra do parágrafo com letra vermelha:
p::first-letter {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE6 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento:nth-child(n): Este tipo de seletor é muito utilizado em uma lista de itens,
aplicando a regra CSS no item especificado pelo índice, partindo do início para fim.
Como por exemplo, será aplicada a formatação de cor vermelha na letra no terceiro
item:
li:nth-child(3) {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE9 ou superior;
Firefox;
Chrome;
Safari.
Elemento:nth-last-child(n): Semelhante ao seletor anterior, porém ele parte fim para
o início. Como por exemplo, será aplicada a formatação de cor vermelha na letra no
terceiro item do fim para início, ou seja, de uma lista de quatro itens, isto corresponde
ao segundo item:
li:nth-last-child(3) {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE9 ou superior;
Firefox 3.5 ou superior;
Chrome;
Safari;
Opera.
Elemento:first-child: Este seletor aplicará a regra CSS no primeiro item de cada
conjunto de item, ou seja, se houver de um conjunto de itens, será aplicado no
primeiro item de cada lista. Como por exemplo, será aplicada a formatação de cor de
texto vermelha no primeiro item de um conjunto de lista:
li:first-child {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE7 ou superior;
Firefox;
Chrome;
Safari;
Opera.
Elemento:last-child: Este seletor aplicará a regra CSS no último item de cada
conjunto de item, ou seja, se houver de um conjunto de itens, será aplicado no último
item de cada lista. Como por exemplo, será aplicada a formatação de cor de texto
vermelha no primeiro item de um conjunto de lista:
li:last-child {
color: red;
}
Este tipo de seletor tem compatibilidade com os seguintes navegadores:
IE9 ou superior;
Firefox;
Chrome;
Safari;
Opera.
2.2 TÉCNICA DE CSS RESET
Um dos grandes problemas encontrados pelos desenvolvedores web é a forma como
os vários browsers interpretam de formas diferentes o mesmo código, não conseguindo o
mesmo resultado a página desenvolvida.
Para resolver este problema, antigamente os desenvolvedores desenvolviam vários
arquivos CSS para cada navegador.
Portanto, para resolver esse problema, desenvolveu-se uma técnica chamada “CSS
Reset”, que se aplica uma folha de estilos básica para resetar toda formatação “original”
aplicada pelo browser. Essa folha de estilos pode ser aplicada internamente HTML ou
externamente, sendo esta a técnica mais comum, devido várias páginas poderão utilizar a
mesma formatação.
Segundo Rodrigues(2016):
“O arquivo contendo o código para realizar o CSS Reset deve ser inserido
antes de qualquer outro arquivo de estilo, para que toda formatação adicional
seja feita com base nos elementos “sem estilo”.
O ideal é que essa técnica seja utilizada nos momentos iniciais da concepção
do site, pois inserir um arquivo desses com o site já funcionando pode gerar
problemas, uma vez que o layout foi montado em cima do padrão aplicado
pelo browser e não sobre os elementos “resetados””.
Este arquivo é um CSS normal aplicando formatação padrão sobre todas as tags,
aplicando formatação sobre fontes, margin e padding. Sendo que cada desenvolvedor pode
desenvolver o seu Reset CSS, porém há, na internet, vários arquivos CSS prontos.
Entretanto, os desenvolvedores desenvolvem um estilo mais simplificado, conforme
demonstra o código abaixo:
* {
padding:0;
margin:0;
vertical-align:baseline;
list-style:none;
border:0;
}
Ainda de acordo com Rodrigues(2016):
“A partir desse ponto os estilos específicos podem ser aplicados para montar
o layout desejado. Claro que problemas de incompatibilidade existem, mas
pelo menos assim se está partindo de uma mesma base, independente do
browser. Ou seja, um problema a menos com relação ao layout da página
quando esta é visualizada em diferentes navegadores”.
2.2.1 RESET CSS NORMALIZE.CSS
Normalize.css é um arquivo CSS que padroniza todos os elementos HTML para
serem processados em vários navegadores. Este arquivo apresenta as seguintes vantagens:
Preserva padrões;
Normaliza estilos;
Repara erros e inconsistências comuns dos diferentes navegadores.
Melhora a usabilidade.
Para se utilizar este arquivo, primeiramente, você deve baixar da internet e depois
linkar com a sua página através do seguinte comando: <link href="normalize.css"
rel="stylesheet"/>.
2.4 BOX MODEL EM CSS(MODELO DE CAIXAS)
Todos elementos do HTML é composto em um retângulo, formando uma caixa, ou
seja, todos elementos são blocos ou boxes que vão formando o layout da página.
Cada box é formado pelos seguintes elementos:
content(conteúdo): pode ser um texto , imagem etc;
padding(enchimento): está localizado ao redor do conteúdo;
border(bordas): são linhas que delimitam o elemento;
margin(margens): é o espaçamento entre os elementos.
A figura abaixo demonstra isto:
Figura 1 – Box Model
Fonte: W3School
Sabendo-se que cada elemento desta caixa é formado: Acima(Top), Abaixo(Bottom),
Esquerda(Left) e Direita(Right). Estes elementos podem ser formatado, conforme
demonstrado na figura abaixo:
Figura 2 – Box Model
Fonte: W3School
2.5 UNIDADES DE MEDIDA EM CSS
Vejam abaixo as unidades disponíveis:
Absolutas:
o in (polegadas)
o cm (centímetros)
o mm (milímetros)
o pt (pontos)
o pc (picas)
o px (pixels)
Relativas:
o em
o ex
Porcentagem:
o %
Unidades mais recomendadas são as relativas, pois o desenvolvedor mantém um
controle relativo em relação ao tamanho da fonte padrão do usuário. Já as unidades absolutas
permitem um controle exato da aparência da página.
LISTA DE EXERCÍCIOS
Aplique um pelo menos três seletores nas duas páginas com os seguintes temas:
Loja de Roupa
Loja Pet
3. COMANDOS CSS
Abaixo segue uma tabela com alguns comandos de CSS:
Comandos CSS
Texto
Comando Definição Valores
Exemplo
Possíveis
text-align Alinhamento de Texto Left
Center
Right
Justify
Start
End
text-align: left;
text-indent Endentação de
Parágrafo
text-transform Formatação de
capitalização(Maiúscula
e Minúscula).
text-decoration Formatação de linha
decorativa.
Valores text-indent: 5px;
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras)
lowercase; text-transform: uppercase;
none;
uppercase;
none;
text-decoration: none;
underline;
overline;
line-through
text-shadow Coloca sombreamento
no texto.
Deslocamento
Horizontal,
Vertical,
Esfumaçamento
e Cor.
text-shadow: 1px 1px 1px
rgba(0,0,0,0.6);
Posicionamento
Comando Definição Valores
Possíveis
Position Posição do objeto na
tela.
Absolute
Relative
Fixed
Static
Bottom Alinhamento do Objeto auto;
Com Relação a Valores
Margem Inferior Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras)
Left
Alinhamento do Objeto auto;
Com Relação a Valores
Margem à Esquerda Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras)
position: absolute;
bottom: auto;
bottom: 60px;
left: auto;
left: 60px;
Right
Alinhamento do Objeto auto;
Com Relação a Valores
Margem à Direita Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras)
Top
Alinhamento do Objeto
Com Relação a
Margem Superior
Borda
auto;
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras)
Comando Definição Valores
Possíveis
Border Colocar borda em Tamanho da
objeto.
borda, Estilo da
Borda e Cor.
border-bottom Colocar borda na parte Tamanho da
inferior do objeto. borda, Estilo da
Borda e Cor.
border-left Colocar borda à Tamanho da
esquerda do objeto. borda, Estilo da
Borda e Cor.
border-right Colocar borda à direita Tamanho da
do objeto.
borda, Estilo da
Borda e Cor.
right: auto;
right: 60px;
top: auto;
top: 60px;
Exemplo
border: 5px dotted red;
border: 5px dotted red;
border: 5px dotted red;
border: 5px dotted red;
border-top Colocar borda na parte Tamanho da border: 5px dotted red;
superior do objeto. borda, Estilo da
Borda e Cor.
box-shadow Colocar um Deslocamento box-shadow: 1px 1px 4px
sobreamento na borda. Horizontal, black;
Vertical,
Esfumaçamento
e Cor.
border-color Coloca cor na borda Cor border-color: #CCC #999
#999 #CCC;
border-radius Coloca curvas nas Valores em border-radius: 8px 6px 7px
bordas.
pixels ou 5px;
porcentagem.
Caixa
Comando Definição Valores
Exemplo
Possíveis
Float
Direção da flutuação da float;
float: left;
caixa.
inherit;
right;
none;
Clear Limpa o efeito de both;
clear: both;
flutuação.
float;
inherit;
right;
none;
Width Largura do Box auto;
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras).
max-width Largura máxima do auto;
Box
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras).
min-width Largura mínima do Box auto;
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras).
width: auto;
width: 200px;
max-width: auto;
max-width: 200px;
min-width: auto;
min -width: 200px;
Height Altura do Box auto;
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras).
max-height Altura máxima do Box auto;
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras).
min-height Altura mínima do Box auto;
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras).
height: auto;
height: 200px;
max-height: auto;
max-height: 200px;
min-height: auto;
min-height: 200px;
Padding Espaçamento da borda
em relação ao objeto;
padding-bottom Espaçamento da borda
abaixo em relação ao
objeto;
padding-left Espaçamento da borda
à esquerda em relação
ao objeto;
padding-right Espaçamento da borda
à direita em relação ao
objeto;
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras).
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras).
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras).
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras).
padding: 5px;
padding: 5px 3px 2px 4px;
padding-bottom: 5px;
padding-left: 5px;
padding-right: 5px;
padding-top Espaçamento da borda
acima em relação ao
objeto;
Margin Margem da borda em
relação ao objeto.
margin-bottom Margem da borda
abaixo em relação ao
objeto.
margin-left Margin da borda à
esquerda em relação ao
objeto;
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras).
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras).
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras).
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras).
padding-top: 5px;
margin: 5px;
margin: 5px 3px 2px 4px;
margin-bottom: 5px;
margin-left: 5px;
margin-right Margem da borda à
direita em relação ao
objeto;
margin-top Margem da borda
acima em relação ao
objeto;
Cor
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras).
Valores
Numéricos Em
Conjunto Com
Uma das
Unidades de
Medidas(px,
em, entre
outras).
Comando Definição Valores
Possíveis
Color Colocar cor no texto Nome das cores
em inglês;
#Valores
Hexadecimais;
Comando
rgba(Red,
Green, Blue,
Alpha).
margin-right: 5px;
margin-top: 5px;
Exemplo
color: red;
color: #0052cc;
color: rgba(0,0,0,1);
Opacity Opacidade do objeto. inherit;
Valores
Numéricos(
sabendo-se que
o 1 representa o
máximo e 0
representa o
mínimo)
Fundo da Página
Comando Definição Valores
Possíveis
Background Colocar cor ou imagem Nome das cores
no fundo
em inglês;
#Valores
Hexadecimais;
Caminho das
Imagens,
Quantidade de
Repetição e
Tamanho;
backgroundcolor
Colocar cor de fundo na Nome das cores
página.
em inglês;
#Valores
Hexadecimais.
backgroundimage
Colocar uma imagem Caminho da
de fundo na página. imagem.
backgroundrepeat
Define a repetição da no-repeat;
imagem no fundo da repeat;
página
repeat-x;
repeat-y;
opacity: 0.5;
Exemplo
background: white;
background: #ee00ff;
background:
url("../_imagens/imagem.jpg")
no-repeat 0px 80px;
background-color: white;
background-color: #ee00ff;
background-image:
url("../_imagens/imagem.jpg");
background-repeat: repeat;
background-repeat: no-repeat;
Layout
Comando Definição Valores
Possíveis
box-sizing Tamanho do box border-box;
padding-box;
margin-box;
contente-box;
Transição
Comando Definição Valores
Possíveis
Transition Transição de Efeitos Efeito e
Tempo.
Conteúdo Genérico
Comando Definição Valores
Possíveis
Display Exibição do conteúdo. block;
inline-block;
none.
Lista e Marcadores
Comando Definição Valores
Possíveis
list-style Estilo de marcadores da none;
lista.
Lista Não
Ordenada:
circle;
square;
disc.
Lista Ordenada:
decimal;
lower-latin;
Entre Outros.
Exemplo
box-sizing: border-box;
Exemplo
transition: opacity 1s;
Exemplo
display: block;
Exemplo
list-style: none;
list-style: disc;
list-style: decimal;
Fonte
Comando Definição Valores
Possíveis
font-family Define a fonte das Nome das
letras.
fontes.
font-size Define o tamanho das Valores
fontes.
Numéricos(
sabendo-se que
o 1 representa o
máximo e 0
representa o
mínimo)
font-weight Define o negrito nas bold
letras.
bolder
font-style Define o itálico nas
letras.
italic
Conteúdo
Comando Definição Valores
Possíveis
Contente Define o conteúdo. Valores de
texto ou
símbolo.
Exemplo
font-family: Arial;
font-size: 10pt;
font-weight: bold;
font-style: italic;
Exemplo
content: "\03B2";
Caso queira se aprofundar, consulte o arquivo CSS Referencial que consta neste material ou
acesse o site W3C.
LISTA DE EXERCÍCIOS
Aplique formatação de estilo nas duas páginas com os seguintes temas:
Loja de Roupa
Loja Pet
4. LAYOUT
4.1 LAYOUT FLUIDO
É uma técnica utilizada pelos os desenvolvedores para que o seu site esteja adaptável
para qualquer resolução, a sua adaptação está relacionada com a unidade de medida utilizável.
As unidades de medidas pontos e pixels são que unidades de medida fixas e ems e
porcentagens, variáveis, portanto, eles se adaptam e mantêm relações de tamanho com outros
elementos de um documento.
Portanto, segundo Tárcio(2012):
“Fica claro que usar pts ou pxs não é o adequado para designs responsivos
(num primeiro momento, já que, com a prática e/ou experiência e/ou
demanda do projeto, pode ser necessário especificar alguns valores fixos em
determinadas situações)”.
Ainda de acordo com Tárcio(2012):
“marcar unidades com porcento fornece uma exibição mais consistente e
acessível para os visitantes. Quando as configurações de exibição do cliente
se alteram, as medidas marcadas com % se alteram de maneira mais razoável,
permitindo que a legibilidade seja preservada, bem como a acessibilidade e o
design visual”.
Agora com relação a fontes sempre é utilizado a unidade de medida em.
Portanto, quando se fala em responsividade com relação a texto, você deverá utilizar
a seguinte unidade de medida em, sabendo-se que para converter o elemento alvo em pixels
para contexto em pixel utiliza-se a seguinte forma para cálculo correto para gerar um site
responsivo: Resultado Final = Elemento Alvo / Contexto do Elemento Alvo. Ou seja:
Elemento Alvo. Elemento-alvo com a medida atual;
Contexto do Elemento Alvo. Tomando como base o elemento-pai;
Resultado Final. O valor relativo.
4.2 TRANSFORMANDO UM LAYOUT FIXO EM LAYOUT FLUIDO
apostila.
Para este exemplo, será modificado a página e o CSS que está junto no material desta
Primeiramente, deve-se utilizar a meta tag viewport, pois ela é responsável exibir
páginas web feitas somente para desktop (no momento, a imensa maioria de todas elas)
ajustando. Deve-se seguir conforme código abaixo:
<meta name="viewport" content="width=device-width,initial-scale=1">.
Agora, se você pegar o elemento container, ele é uma div, e portanto, não há um
elemento pai, portanto, pega-se a resolução de 960px é a unidade fixa do container e divide-se
pela resolução, como no exemplo, a tela utilizada tinha 1366px, sendo isto dará um resultado
final de 70,27%.
Agora se pegar o elemento h1, ele tem como padrão 32px para converter para
unidade de medida em, deve-se pegar o 32px e dividir pelo elemento pai que no caso é o
padrão do navegador(16px), sendo assim terá um valor de 2em.
Agora se pegar a margem do conteúdo com relação elemento pai container, você
deve-se pegar o valor do elemento alvo(15px) e dividir pelo elemento pai(960px) e depois
multiplicar por 100, que dará um valor final de 1.5625%.
Como o Contexto de .content-main, que é o elemento .content, não possui declaração
explícita de largura, é preciso verificar o próximo elemento ascendente. No caso, é o
.container. Este sim com declaração (prévia) de largura de 960px. Por isso, neste caso, o
Contexto será de 960, portanto pega-se o valor do elemento alvo .content-main(593px) e
divide-se pelo elemento de contexto(960px) que dará o resultado de 61.7708%.
Ainda de acordo com o exemplo extraído do livro de Tárcio(2012):
“O elemento .hero (e seu descendente .brief), dentro de .content-main,
também precisa ter suas medidas convertidas. Algo interessante a se levar em
conta é que o cálculo da relatividade de .hero .brief é 5 / 593 = 0.008431.
Contudo, apesar de esta ser uma ciência (pretensiosamente) exata, há muito
do fator humano envolvido. Portanto, quando estiver desenvolvendo grids
flexíveis e algum resultado, apesar de preciso, não for do agrado, não há nada
demais em (caso isso seja responsabilidade sua) arredondar este valor”.
Agora altere os outros elementos descendente do .content-main, conforme código
abaixo:
.last-contents {
font-size: .75em; /* 12 / 16 */
}
.last-content-call {
float: left;
margin: 2.5295% 2.5295% 2.5295% 0; /* 15 / 593 (.content-main) */
width: 47.2175%; /* 280 / 593 */
}
.last-content-call .brief {
margin: 1.7857% 0; /* 5 / 280 */
}
Agora com a barra lateral, incluído todos os seus descendentes, altere:
.content-sidebar {
background-color: #F0F0F0;
float: right;
padding: 1.0416%; /* 10 / 960 */
width: 33.5416%; /* 322 / 960 */
}
.main-nav ul {
list-style-type: none;
}
.main-nav li {
background-color: #F9F9F9;
float: left;
margin: 4.6583%; /* 15 / 322 (.content-sidebar) */
outline: 1px solid #DEDEDE;
text-align: center;
width: 40.3726%; /* 130 / 322 */
}
.main-nav a {
display: block;
padding: 7.6923%; /* 10 / 130 */
text-decoration: none;
}
E para finalizar, agora vem o rodapé:
.main-footer {
background-color: #F0F0F0;
float:left;
font-size: .75em; /* 12 / 16 */
margin: 1.5625% 0; /* 15 / 960 */
}
padding: 1.5625%; /* 15 / 960 */
text-align: center;
width: 100%;
4.3 IMAGENS E RECURSOS FLEXÍVEIS
Dentro de uma página, há vários elementos visuais(imagens) que devem ser ajustar em
conjunto com a resolução da tela, para isto, utiliza-se o CSS. Será feito um exemplo,
utilizando o exemplo do capítulo anterior, portanto, adicione a linha abaixo no código:
Figura 3 – Código da Imagem
Fonte: Próprio Autor
Agora tente modificar a resolução da tela do navegador, você verá que a imagem foi
fixada com o tamanho de 350px de largura. Para resolver, este problema basta somente um
pouco de CSS, então acrescente o seguinte CSS no arquivo style.css:
img,
iframe,
object,
embed,
video {
height: auto;
max-width: 100%;
}
Agora você verá que a imagem se ajusta automaticamente em 100% de acordo com o
container o qual está inserido a imagem.
4.4 TÉCNICAS PARA IMAGENS FLEXÍVEIS
Porém, há um grande dilema: uma imagem apresenta tamanho de Kb, Mb entre outros.
Quando você visualiza esta imagem de um computador desktop com uma internet veloz
parece que o tamanho não seja o problema, porém quando você visualiza de um dispositivo
móvel com uma resolução menor e uma internet mais lenta, pode parecer um terror. Para isto,
há várias técnicas para imagens flexíveis.
4.4.1 RILOADR
Segundo Tárcio, o Riloadr se auto-intitula um framework independente carregador de
imagens responsivas.
Ainda de acordo com o próprio autor, ele realmente possui muitas boas características.
Só para citar algumas:
Relativamente fácil de aprender e usar;
Oferece bastante controle sobre como as imagens responsivas irão se comportar;
Opção de carregamento sob demanda (“lazy load”) das imagens;
Suporta browsers com JavaScript desabilitado (ou sem JavaScript);
Não faz múltiplas requisições para a mesma imagem.
A ideia principal do Riloadr é trocar o atributo src pelo atributo data-src. E com
JavaScript, é possível conseguir excelentes resultados:
<img data-src="cachorro.jpg">
<noscript>
<img src="img/small/cachorro.jpg">
</noscript>
4.4.2 JQUERY PICTURE
Ele é um plugin para jQuery(Tamanho de 2 KB), responsável por deixar as imagens
responsivas. Ele é utilizado com elemento <figure>, em conjunto alguns data-*), também
utilizado com elemento <picture>. Abaixo segue um exemplo:
<figure class="responsive" data-media="assets/img/small.png" datamedia440="assets/img/medium.png"
data-media600="assets/img/large.png">
</figure>
$(function(){
})
<noscript>
</noscript>
<img src="assets/img/large.png" alt="">
Após isto, para inicializar o plugin, basta digitar o seguinte código JQuery:
$('figure.responsive').picture();
Ele tem suporte pelos melhores navegadores e pelo Internet Explorer.
4.4.3 PICTURELL
Ele é uma abordagem de imagens responsivas. Porém, ele exige uma marcação
diferente:
<div data-picture data-alt="Descrição da imagem">
<div data-src="small.jpg"></div>
<div data-src="medium.jpg" data-media="(min-width: 400px)">
</div>
<div data-src="large.jpg" data-media="(min-width: 800px)">
</div>
<div data-src="extralarge.jpg" data-media="(min-width: 1000px)">
</div>
<noscript>
<img src="assets/img/small.jpg" alt="Descrição da imagem">
</noscript>
</div>
4.4.4 ADAPTIVE IMAGES
De acordo com Tárcio(2012):
“Adaptive Images é uma das técnicas que, na opinião do criador (e de
milhares de pessoas pelo mundo que a utilizam), mais fazem mais sentido.
Adaptive Images detecta o tamanho da tela do visitante e automaticamente
cria, faz cache e entrega versões redimensionadas de imagens referenciadas
em tags <img>, apropriadas ao dispositivo que está sendo usado.
A técnica envolve o uso de PHP, JavaScript e um pouco de conteúdo em seu
arquivo .htaccess. Além de ser bastante e ciente por servir diferentes
tamanhos da mesma imagem dependendo do dispositivo usado para a
visualização do site, um outro ponto forte é que nenhuma alteração na
marcação HTML se faz necessária.”
Cuidado Com as Imagens de Alta Resolução
Algumas dicas para você trabalhar com imagens de alta resolução e não sobrecarregue
a sua aplicação web, sendo que Tárcio cita Bradley:
“Não fazer requisição da mesma imagens várias vezes. Quando o
navegador vê pela primeira vez um elemento img no DOM, ele,
imediatamente faz uma requisição ao servidor para esta imagem (mesmo
antes de o DOM estar pronto). O atributo src deve ser alterado antes mesmo
de o navegador passar pelo elemento de imagem ou já será tarde e a
requisição já terá sido feita. Além disso, se vários pedidos estavam sendo
feitos para uma imagem, isso não só retarda o navegador e impacta na
performance, mas, também, aumenta o “estresse” adicional sobre os
servidores.
Não usar cookie nem o elemento <base>. Não se deve usar por causa do
lookahead parser dos navegadores que já dispara mais requisições das <img>
antes mesmo de o JavaScript entrar em ação. Ou seja, o download da imagem
começa antes de o código que especifica o cookie ou base rodar.
Manipulação mínima do DOM. Manipular o DOM requer tempo e retarda a
atuação do navegador, portanto, a solução usada deve fazer tão poucas
atualizações no DOM quanto possível para garantir que todos os dispositivos,
especialmente os de baixa capacidade de processamento, possam lidar com
esta manipulação.
Imagens devem continuar visíveis sem JavaScript. Se o JavaScript não
estiver habilitado, o navegador ainda deve ser capaz de interpretar e
renderizar todas as imagens da página em seu tamanho default.
Não apresentar imagens em alta resolução para todos. A maioria dos
usuários não têm displays de alta resolução, isso é fato. Ter servidores
servindo imagens maiores para todos os usuários adiciona uma “pressão
extra” nos servidores, clientes, largura de banda, etc. Só apresente imagens de
alta resolução para aqueles que realmente podem se valer deste recurso”.
5. MEDIA QUERIES
5.1 MEDIA TYPE
É uma recomendação da W3C(desde do CSS2) para especificação qual é tipo de
dispositivo será aplicado as regras de estilos(CSS), como por exemplo, se estiver utilizando
uma TV para projetação do site, portanto, no atributo media, que está contido na tag link(tag
que liga o arquivo CSS com a página), deve-se especificar TV, conforme demonstrado na
figura abaixo:
<link href="estilo.css" rel="stylesheet" media=”tv”/>
E assim, deve especificar qual é o dispositivo que será exibido a página. Na tabela xx
tem todos tipos de media disponível para o CSS.
Também é possível dentro de um mesmo arquivo CSS, você criar várias regras CSS
para vários dispositivos, como ilustra o exemplo abaixo:
@media screen{
body{
color: red;
}
}
@media projection{
body{
color: blue;
}
}
Se você observar o código anterior, há duas regras de estilos para serem aplicadas em
dois tipos de dispositivos, um tela de computador(screen) e outra para projetores(projection).
Também poderia juntar duas mídias numa mesma regra, conforme ilustrado na figura
abaixo:
@media projection, screen{
body{
color: blue;
}
}
Portanto, com o passar dos anos, os dispositivos foram evoluindo, e ai as Media Type
não conseguiam mais diferenciar os diferentes tipos de dispositivos, pois mesmo dispositivos
menores tinham poder de renderização dos seus navegadores como se fossem navegadores de
dispositivos maiores, porém a forma de trabalhar dos dispositivos continuava diferente, ou
seja, a resolução de tela. Para resolver este problema, surge as Media Queries.
5.2 MEDIA QUERIES
É uma recomendação da W3C(desde do 2012) para especificação qual é tipo de
dispositivo será aplicado as regras de estilos(CSS), como por exemplo, se estiver utilizando
um Projetor, com largura máxima de 320px, para projetação do site, portanto, no atributo
media, que está contido na tag link(tag que liga o arquivo CSS com a página), pode-se
especificar conforme demonstrado na figura abaixo:
<link href="estilo.css" rel="stylesheet" media=”tv and (max-width: 320px)”/>
Também é possível dentro de um mesmo arquivo CSS, você criar várias regras CSS
para um mesmo dispositivo com várias resoluções, como ilustra o exemplo abaixo:
@media screen and (min-width: 320px){
body{
color: red;
}
}
@media screen and (min-width: 480px){
body{
color: blue;
}
}
5.2.1 OUTROS PARÂMETROS UTILIZADOS EM MEDIA QUERIES
Pode-se utilizar outros parâmetros, conforme demonstra a tabela abaixo:
Parâmetros Utilizados em Media Queries
Parâmetros Definição Sintaxe
aspect-radio
Define a proporção que (aspect-radio: proporção)
será exibido o navegador
na tela, sendo o primeiro
número aplicado a
proporção de pixels na
horizontal, e o segundo
número, a proporção de
pixel na vertical.
@media screen and (aspect-radio: 16/9){
body{
color: blue;
}
}
Parâmetros Definição Sintaxe
color
Indica a quantidade de bit (color: quantidade de bits)
de cor do dispositivo. Se o
dispositivo não tiver
números diferentes de bit,
então o valor será 0.
@media screen and (color){
body{
color: blue;
}
}
@media screen and (min-color: 6){
body{
color: blue;
}
}
@media screen and (max-color: 16){
body{
color: blue;
}
}
Parâmetros Definição Sintaxe
device-aspect-radio Define a proporção da tela
do dispositivo, sendo o
primeiro número aplicado a
proporção de pixels na
horizontal, e o segundo
número, a proporção de
pixel na vertical.
@media screen and (device-aspect-radio: 16/9){
body{
color: blue;
}
}
Parâmetros Definição Sintaxe
device-height
Define a altura da tela do
dispositivo(em pixel).
@media screen and (max-device-height: 329px){
body{
color: blue;
}
}
(device-aspect-radio:
proporção)
(device-height: número px)
@media screen and (min-device-height: 290px){
body{
color: blue;
}
}
Parâmetros Definição Sintaxe
device-width
Define a largura da tela do (device-width: número px)
dispositivo(em pixel).
@media screen and (max-device-width: 329px){
body{
color: blue;
}
}
@media screen and (min-device- width: 290px){
body{
color: blue;
}
}
Parâmetros Definição Sintaxe
orientation Indica o modo de (orientation: orientação)
exibição(Paisagem/Retrato)
que está sendo exibido.
@media screen and (orientation: landscape){
body{
color: blue;
}
}
@media screen and (orientation: portrait){
body{
color: blue;
}
}
Quadro 1 - Parâmetros Utilizados em Media Queries
Aqui foi apresentado somente alguns tipos de parâmetros, porém há vários.
5.5.2 OPERADORES
Para declaração de uma Media Querie, há alguns operadores que se pode trabalhar, na
tabela abaixo está representado estes operadores:
Parâmetros Definição Sintaxe
and Operador de junção(e). @media dispositivo and
(parâmetro: valor)
@media screen and (min-width: 480px) and (max-width: 500px){
body{
color: blue;
}
}
, Operador de disjunção(ou). @media dispositivo and
(parâmetro: valor),
@media (parâmetro: valor)
@media screen and (min-width: 480px) and (max-width: 500px),
@media projection and (min-width: 380px) and (max-width: 720px),
{
body{
color: blue;
}
}
only Somente para aquele
determinado dispositivo
com aquela determinada
resolução
@media only dispositivo
and (parâmetro: valor),
@media only screen and (min-width: 480px) and (max-width: 500px),
@media only projection and (min-width: 380px) and (max-width: 720px),
{
body{
color: blue;
}
}
Quadro 2 - Operadores
5.3 Exemplo Prático da Utilização das Media Queries
Abaixo o exemplo do HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Layout Fixo</title>
<meta name="viewport" content="width=device-width,initial-scale=1">.
<link href="normalize.css" rel="stylesheet" />
<link href="style.css" rel="stylesheet" />
</head>
<body>
<div class="container">
<header class="header">
<h1>
Media Queries
</h1>
<div class="content">
<div class="content-main">
<article class="hero">
<h2>
Título Importante
</h2>
<img src="cute-dogs.jpg">
<p class="brief">
Descrição ou resumo de um
conteúdo importante, que precisa ser
deste
mostrado para evidenciar a notoriedade
conteúdo. Descrição ou
resumo de um conteúdo importante, que
precisa ser mostrado para evidenciar a
notoriedade deste conteúdo.
</p>
</article>
</div>
</div>
</header>
</html>
</body>
</div>
Agora será colocado o código do CSS:
@charset "UTF-8";
html {
}
font-family: Arial, Helvetica, sans-serif;
.container {
margin: 0 auto;
width: 70.27%;
}
h1 {
}
font-size: 4em;
h2{
}
font-size: 2em;
p{
font-size: 1.5em;
}
.content {
margin: 1.5625% 0;
}
.content-main {
float: left;
width: 61.7708%;
}
.content-main {
float: left;
width: 61.7708%;
}
.hero {
}
margin: 4.2158% 0;
.brief {
}
margin: 1% 0;
img{
width: 40%;
height: 40%;
}
@media screen and (min-width: 500px) and (max-width: 800px){
h1 {
font-size: 2em;
}
h2{
font-size: 1em;
}
p{
font-size: .5em;
}
body
{
background-color: yellow;
}
}
@media screen and (min-width: 120px) and (max-width: 499px){
h1 {
font-size: 1em;
}
h2{
}
font-size: .50em;
p{
}
font-size: .25em;
body
{
background-color: silver;
}
}
REFERÊNCIAS
RODRIGUES, J. Como utilizar a técnica CSS Reset. Disponível
em:<http://www.devmedia.com.br/como-utilizar-a-tecnica-css-reset/26797>. Acessado
em: Out. 2015.
SILVA, M. S. A regra CSS e sua sintaxe. Disponível
em:<http://www.maujor.com/tutorial/sintaxetut.php>. Acessado em: Fev. 2016.
SILVA, P. Normalize. Disponível em: <https://jaison.com.br/post/normalizecsspadronizar-css>.
Acessado em: Jan. 2016.
Site W3C. Guia de Referência CSS 2.1. Disponível em:
<http://www.w3c.br/divulgacao/guiasreferencia/css2/#mod-tipos>. Acessado em: Mar.
16.
WAY, J. Os 30 Seletores CSS Que Você Deve Memorizar. Disponível em:
<http://code.tutsplus.com/pt/tutorials/the-30-css-selectors-you-must-memorize--net-
16048>. Acessado em: Fev. 2016.