Introdução ao CSS 3
Prof. David Fernandes de Oliveira
Instituto de Computação
UFAM
Introdução ao CSS 3
Conforme já visto, o desenvolvimento client-side é baseado
em 3 camadas principais:
―
Conteúdo, viabilizado pelo HTML
―
Estilo, viabilizado pelo CSS
―
Comportamento, viabilizado pelo JavaScript
As camadas possibilitam o desenvolvimento independente de
cada área da produção
―
Se quisermos modificar o design, podemos fazê-lo editando
apenas o CSS, sem se preocupar com HTML ou Javascript
Nesta primeira parte do curso, iremos abordar a segunda
camada: o Estilo, viabilizado pelo CSS
Introdução ao CSS 3
CSS é uma abreviação de Cascading Style Sheet
Tem por finalidade especificar a apresentação ou estilo dos
elementos de uma página
Segundo a W3C (World Wide Consortium):
―
O CSS é um mecanismo simples para adicionar estilos, por
exemplo, fontes, cores e espaçamentos aos documentos HTML
O principal benefício do CSS é a separação do conteúdo,
viabilizado pelo HTML, do estilo do documento HTML
É possível mudar completamente o estilo de uma página
alterando apenas seu código CSS
―
Exemplo: [Link]
Introdução ao CSS 3
Introdução ao CSS 3
Usado para separar o layout das páginas do seu conteúdo e
estrutura
– Exemplo: [Link]
Validador CSS:
– [Link]/css-validator/
– Esta ferramenta é útil para garangir que seu código CSS está
correto e funcionará nos browsers compatíveis com essa
tecnologia
Estilos Inline
Podemos aplicar CSS a um documento através de três métodos
distintos:
―
Método inline, método embarcado, e método externo
Estilos inline declaram o formato de um elemento usando o
atributo style do HTML 5
<h1 style="font-size: 22px; color: red">
Instituto de Computação
</h1> Cada propriedade
CSS é seguida
por dois pontos e
As propriedades o valor da
são separadas propriedade
por ponto e
vírgula
Estilos Inline
Podemos aplicar CSS a um documento através de três métodos
distintos:
―
Método inline, método embarcado, e método externo
Estilos inline declaram o formato de um elemento usando o
atributo style do HTML 5
<h1 style="font-size: 22px; color: red">
Instituto de Computação
</h1> Cada propriedade
CSS é seguida
por dois pontos e
As propriedades o valor da
são separadas propriedade
por ponto e
vírgula
Estilos Inline
Podemos aplicar CSS a um documento através de três métodos
distintos:
Método inline, método embarcado, e método externo
― No entanto, note que estilos inline não são capazes de
separar o conteúdo (criado HTML) dos estilos (criado pelo CSS),
Estilos inline
e por isso seudeclaram o evitado
uso deve ser formato de um elemento usando o
atributo style do HTML 5
<h1 style="font-size: 22px; color: red">
Instituto de Computação
</h1> Cada propriedade
CSS é seguida
por dois pontos e
As propriedades o valor da
são separadas propriedade
por ponto e
vírgula
Estilos Embarcados
Uma segunda opção para incorporar código CSS nas páginas
Web é através dos estilos embarcados
Nessa técnica, as diretrizes CSS são adicionadas ao conteúdo
HTML através do elemento <style>
―
Tais estilos são adicionados no cabeçalho da página, entre <head>
e </head>
<style>
h1 {
font-size: 22px;
color: red;
}
</style>
<h1>Instituto de Computação</h1>
Estilos Embarcados
Uma segunda opção para incorporar código CSS nas páginas
Web é através dos estilos embarcados
Nessa técnica,
Seletorasdas
diretrizes CSS são adicionadas ao conteúdo
regiões a serem
HTML através do elemento <style>
estilizadas
―
Tais estilos são adicionados no cabeçalho da página, entre <head>
e </head>
<style>
h1 {
font-size: 22px;
color: red;
}
</style>
<h1>Instituto de Computação</h1>
Estilos Externos
Style sheets externos são arquivos que possuem apenas
diretrizes CSS
São úteis para criar um look-and-feel uniforme para todo o site
―
Diferentes páginas podem usar o mesmo arquivo de estilo
Torna a navegação mais rápida, por causa do cacheamento do
browser
Forma de chamada, adicionada no elemento head:
<link rel="stylesheet" type="text/css" href="[Link]">
Estilos Externos
Style sheets externos são arquivos que possuem apenas
diretrizes CSS
h1 {
São úteis para
<!DOCTYPE criar um look-and-feel
html> uniforme
font-size: para todo o site
22px;
<html> color: red;
―
Diferentes
<head> páginas podem usar o} mesmo arquivo de estilo
<meta charset="utf-8">
Arquivo
Torna<title>Instituto
a navegação mais rápida, por causa do cacheamento
de Computação</title>
do
[Link]
browser
<link rel="stylesheet" href="[Link]">
</head>
Forma de chamada, adicionada no elemento head:
<body>
<h1>Instituto de Computação</h1>
<link rel="stylesheet" type="text/css" href="[Link]">
</body>
</html>
Estilos Externos
Style sheets externos são arquivos que possuem apenas
diretrizes CSS
h1 {
São úteis para
<!DOCTYPE criar um look-and-feel
html> uniforme
font-size: para todo o site
22px;
<html> color: red;
―
Diferentes
<head> páginas podem usar o} mesmo arquivo de estilo
<meta charset="utf-8">
Arquivo
Torna<title>Instituto
a navegação mais rápida, por causa do cacheamento
de Computação</title>
do
[Link]
browser
<link rel="stylesheet" href="[Link]">
</head>
Forma de chamada, adicionada no elemento head:
<body>
<h1>Instituto de Computação</h1>
<link rel="stylesheet" type="text/css" href="[Link]">
</body>
</html>
Propriedade color
A propriedade color é usada para definir a cor de um texto
Nomes de cores e códigos hexadecimais podem ser usados
como valores da propriedade color
Uma lista completa de cores com seus respectivos nomes pode
ser encontrada em [Link]
Propriedade color
Muitas cores possuem nome, alem do código hexadecimal
Propriedade color
O plugin ColorZilla do Chrome e Firefox permite a identificação
de uma cor específica adotada por uma dada página
Seletores CSS
Usamos os seletores CSS para especificar os elementos HTML
que serão estilizados por um conjunto de regras CSS
Por enquanto, veremos três tipos de seletores:
―
Seletores de elementos
―
Seletores de IDs
―
Seletores de Classes
Seletores de Elementos
Os seletores de elementos são usados para especificar o estilo
de um único tipo de elemento HTML
body {
margin: 0;
padding: 0;
border-top: 1px solid #ff0;
}
h1, h2, h3, h4, h5, h6 {
font-family: arial, helvetica, sans-serif;
}
Seletores de ID
O ID permite a seleção de um único elemento da página HTML
<p id="intro">Este é meu texto introdutório</p>
#intro {
border-bottom: 2px solid #FFFFFF;
}
Os ids devem ser únicos, isto é, não pode haver mais de um
elemento com mesmo id em uma página
O ID é reconhecido no CSS pelo sinal de #
Seletores de Classes
O seletores de classes possuem a mesma utilidade que o ID:
identificar elementos
No entanto, ele é usado para criar uma classe de elementos
que terão características de estilo iguais
<p class="intro">Este é meu texto introdutório</p>
.intro {
border-bottom: 2px solid #FFFFFF;
}
Propriedade font-family
A propriedade font-family especifica o nome da fonte a ser
usada por um elemento
―
Diversas fontes podem ser informadas
―
Se o browser não suportar a primeira fonte informada, ele
tentará a fonte seguinte, e assim por diante
―
Fontes genéricas permitem selecionar um tipo de fonte, ao
invés de uma fonte específica
h1 {
font-family: tahoma, helvetica, sans-serif;
}
Propriedade font-family
Fontes genéricas permitem selecionar um tipo de fonte, ao
invés de uma fonte específica
Propriedade font-family
Propriedade font-family
Além da propriedade font-family, existe uma série de
outras propridades de fontes, tais como: font-style,
font-weight e font-size.
Fontes de Estilo
Cada elemento de uma página possui um conjunto de proprie-
dades CSS que será usado pelo browser para renderizá-lo
Para identificar essas propriedades, o browser precisa acessar
todas as fontes de estilo disponíveis
―
Até então, já vimos três diferentes formas de definir os estilos de
suas páginas: estilos inline, embarcados, e externos
Além dessas três fontes de estilo, ainda existe a fonte de estilo
padrão de cada browser
Fontes de Estilo
Os estilos do browser são os estilos padrões usados pelo
browser quando nenhum outro estilo é informado
―
Estes estilos podem variar um pouco entre diferentes browsers,
mas eles tendem a ser similares
Cascateamento de Estilos
Para renderizar um elemento de uma página, os browsers
buscam por suas propriedades CSS através da seguinte ordem:
―
Estilos do browser
―
Estilos externos Menor
prioridade
―
Estilos embarcados
―
Estilos Inline style
Maior
prioridade
Cascateamento de Estilos
Qual será a cor do título <h1> da página abaixo?
<html>
<head>
<meta charset="utf-8">
<title>Instituto de Computação</title>
<style>
h1 {
color: red;
}
</style>
</head>
<body>
<h1 style="color: blue">Instituto de Computação</h1>
<p>
O Instituto de Computação (IComp), antigo (...)
</p>
</body>
</html>
Cascateamento de Estilos
Qual será a cor do título <h1> da página abaixo?
<html>
<head>
<meta charset="utf-8">
<title>Instituto de Computação</title>
<style>
h1 {
color: red;
}
</style>
</head>
<body>
<h1 style="color: blue">Instituto de Computação</h1>
<p>
O Instituto de Computação (IComp), antigo (...)
</p>
</body>
</html>
Estilos Importantes
É possível mudar a ordem de cascateamento através do
comando !important
<html>
<head>
<meta charset="utf-8">
<title>Instituto de Computação</title>
<style>
h1 {
color: red !important;
}
</style>
</head>
<body>
<h1 style="color: blue">Instituto de Computação</h1>
<p>
O Instituto de Computação (IComp), antigo (...)
</p>
...
Estilos Importantes
É possível mudar a ordem de cascateamento através do
comando !important
<html>
<head>
<meta charset="utf-8">
<title>Instituto de Computação</title>
<style>
h1 {
color: red !important;
}
</style>
</head>
<body>
<h1 style="color: blue">Instituto de Computação</h1>
<p>
O Instituto de Computação (IComp), antigo (...)
</p>
...
Tamanhos CSS
Muitas propriedades CSS requerem a especificação de um
tamanho ou distância
―
Exemplo 1: a propriedade width é usada para informar o
comprimento de um elemento
―
Exemplo 2: a propriedade font-size é usada para
informar o tamanho da fonte de um elemento
<style type="text/css">
p {
background: gray;
color: white;
width: 12cm;
font-size: 20pt;
}
</style>
Unidades Absolutas
No exemplo anterior, foram usadas as unidades cm e pt, que
são exemplos de unidades absolutas
O CSS suporta quatro tipos de unidades absolutas:
―
in: inches (polegadas)
―
px: pixels (1/96 de polegada, ou seja, 96px = 1 inch)
―
pt: points (1/72 de polegada, ou seja, 72px = 1 inch)
―
cm: centimetros
―
mm: millimeters
Unidades Relativas
Unidades relativas são medidas em relação ao tamanho de
outros elementos da página
O CSS suporta as seguintes unidades relativas:
– em: relativo ao tamanho da fonte do elemento
– rem: relativo ao tamanho da fonte do elemento html (root)
– %: relativo ao valor da propriedade para o elemento pai
– vw: relativo à largura do viewport (janela do browser ou
app). 1vh = 1/100 da largura do viewport
– vh: relativo à altura do viewport (janela do browser ou app).
1vh = 1/100 da altura do viewport
Unidades Relativas
A unidade em é usada para estabelecer tamanhos relativos ao
tamanho da fonte do elemento atual
<style>
p {
color: white;
background: grey;
height: 2em;
}
</style>
<p style="font-size: 20px">
Instituto de Computação
</p>
<p style="font-size: 14px">
Universidade Federal do Amazonas
</p>
Seletor Universal
O seletor universal seleciona todos os elementos em um
documento
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
* {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a href="[Link]
<p>Estou aprendendo <span>CSS</span>.</p>
<a href="[Link] o website da W3C</a>
</body>
</html>
Seletor Universal
O seletor universal seleciona todos os elementos em um
documento
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
* {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a href="[Link]
<p>Estou aprendendo <span>CSS</span>.</p>
<a href="[Link] o website da W3C</a>
</body>
</html>
Seleção por elementos
Para selecionar todas as instâncias de um elemento (tag),
basta usar o nome do elemento como seletor
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
a {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a href="[Link]
<p>Estou aprendendo <span>CSS</span>.</p>
<a href="[Link] o website da W3C</a>
</body>
</html>
Seleção por elementos
Para selecionar todas as instâncias de um elemento (tag),
basta usar o nome do elemento como seletor
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
a {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a href="[Link]
<p>Estou aprendendo <span>CSS</span>.</p>
<a href="[Link] o website da W3C</a>
</body>
</html>
Seleção por classes
Para selecionar todas as instâncias de um elemento (tag),
basta usar o nome do elemento como seletor
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
.cl1 {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a class="cl1" href="[Link]
<p>Estou aprendendo <span class="cl1 cl2">CSS</span>.</p>
<a href="[Link] o website da W3C</a>
</body>
</html>
Seleção por classes
Para selecionar todas as instâncias de um elemento (tag),
basta usar o nome do elemento como seletor
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
.cl1 {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a class="cl1" href="[Link]
<p>Estou aprendendo <span class="cl1 cl2">CSS</span>.</p>
<a href="[Link] o website da W3C</a>
</body>
</html>
Seleção por classes
Também é possível combinar seleção por elemento e por
classe
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
span.cl1 {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a class="cl1" href="[Link]
<p>Estou aprendendo <span class="cl1 cl2">CSS</span>.</p>
<a href="[Link] o website da W3C</a>
</body>
</html>
Seleção por classes
Também é possível combinar seleção por elemento e por
classe
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
span.cl1 {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a class="cl1" href="[Link]
<p>Estou aprendendo <span class="cl1 cl2">CSS</span>.</p>
<a href="[Link] o website da W3C</a>
</body>
</html>
Seleção por ID
A seleção por ID permite a seleção de elementos pelo valor do
atributo global id
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
#w3clink {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a class="cl1" href="[Link]
<p>Estou aprendendo <span class="cl1 cl2">CSS</span>.</p>
<a id="w3clink" href="[Link] a W3C</a>
</body>
</html>
Seleção por ID
A seleção por ID permite a seleção de elementos pelo valor do
atributo global id
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
#w3clink {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a class="cl1" href="[Link]
<p>Estou aprendendo <span class="cl1 cl2">CSS</span>.</p>
<a id="w3clink" href="[Link] a W3C</a>
</body>
</html>
Seleção por atributo
A seleção por atributo permite a seleção de elementos a partir
de condições sobre seus atributos
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
[href*=w3c] {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a class="cl1" href="[Link]
<p>Estou aprendendo <span class="cl1 cl2">CSS</span>.</p>
<a id="w3clink" href="[Link] a W3C</a>
</body>
</html>
Seleção por atributo
A seleção por atributo permite a seleção de elementos a partir
de condições sobre seus atributos
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
[href*=w3c] {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a class="cl1" href="[Link]
<p>Estou aprendendo <span class="cl1 cl2">CSS</span>.</p>
<a id="w3clink" href="[Link] a W3C</a>
</body>
</html>
Seleção por atributo
Tipos de condições na seleção por atributo
União de Seletores
Seletores separados por vírgulas selecionam todos os
elementos que casam com um dentre os seletores informados
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
.cl2, [href*=w3c] {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a class="cl1" href="[Link]
<p>Estou aprendendo <span class="cl1 cl2">CSS</span>.</p>
<a id="w3clink" href="[Link] a W3C</a>
</body>
</html>
União de Seletores
Seletores separados por vírgulas selecionam todos os
elementos que casam com um dentre os seletores informados
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
.cl2, [href*=w3c] {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a class="cl1" href="[Link]
<p>Estou aprendendo <span class="cl1 cl2">CSS</span>.</p>
<a id="w3clink" href="[Link] a W3C</a>
</body>
</html>
Selecionando Descendentes
O seletor de descendentes é usado para selecionar elementos
contidos dentro de outro elemento
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
p .cl1 {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a class="cl1" href="[Link]
<p>Estou aprendendo <span class="cl1 cl2">CSS</span>.</p>
<a id="w3clink" href="[Link] a W3C</a>
</body>
</html>
Selecionando Descendentes
O seletor de descendentes é usado para selecionar elementos
contidos dentro de outro elemento
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
p .cl1 {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a class="cl1" href="[Link]
<p>Estou aprendendo <span class="cl1 cl2">CSS</span>.</p>
<a id="w3clink" href="[Link] a W3C</a>
</body>
</html>
Selecionando Descendentes
O seletor de descendentes é usado para selecionar elementos
contidos dentro de outro elemento
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
p .cl1 {
border: thin black solid;
padding: 4px;
}
O primeiro seletor é aplicado, e então os descendentes
</style>
dos elementos selecionados são avaliados de acordo
</head>
com o segundo seletor.
<body>
<a class="cl1" href="[Link]
O segundo
<p>Estou seletor <span
aprendendo irá avaliar todos cl2">CSS</span>.</p>
class="cl1 os elementos dentro
<ado primeiro seletor,
id="w3clink" e não apenas seus filhos
href="[Link] imediatos.
a W3C</a>
</body>
</html>
Selecionando Filhos
Usando o seletor de filhos, podemos selecionar os
descendentes imediados de um dado elemento
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
p > .cl1 {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a class="cl1" href="[Link]
<p>Estou aprendendo <span class="cl1 cl2">CSS</span>.</p>
<a id="w3clink" href="[Link] a W3C</a>
</body>
</html>
Selecionando Filhos
Usando o seletor de filhos, podemos selecionar os
descendentes imediados de um dado elemento
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
p > .cl1 {
border: thin black solid;
padding: 4px;
}
</style>
</head>
<body>
<a class="cl1" href="[Link]
<p>Estou aprendendo <span class="cl1 cl2">CSS</span>.</p>
<a id="w3clink" href="[Link] a W3C</a>
</body>
</html>
Selecionando Filhos
Usando o seletor de filhos, podemos selecionar os
descendentes imediados de um dado elemento
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style type="text/css">
p > .cl1 {
border: thin black solid;
padding: 4px;
}
</style>
Exercício
</head> Acesse o site [Link]
<body> e identique os seletores apropriados em
<a class="cl1" href="[Link]
cada caso.
<p>Estou aprendendo <span class="cl1 cl2">CSS</span>.</p>
<a id="w3clink" href="[Link] a W3C</a>
</body>
</html>
Box Model
O box model do CSS é essencialmente uma caixa que envolve
todos os elementos do tipo block
Esta caixa possui quatro elementos, conforme mostrado na
figura abaixo:
Bordas
Existem três propriedades CSS básicas para bordas: border-
width, border-style, e border-color
<style type="text/css">
p {
border-width: 5px;
border-style: solid;
border-color: blue;
}
</style>
<p>
O Instituto de Computação é o mais novo
instituto da UFAM, tendo sido formado a
partir do antigo Departamento de Ciência
da Computação (DCC).
</p>
Bordas
Existem três propriedades CSS básicas para bordas: border-
width, border-style, e border-color
<style type="text/css">
p {
border-width: 5px;
border-style: solid;
border-color: blue;
}
</style>
<p>
O Instituto de Computação é o mais novo
instituto da UFAM, tendo sido formado a
partir do antigo Departamento de Ciência
da Computação (DCC).
</p>
Bordas
A tabela ao lado mostra as
opções disponíveis para a
propriedade border-style
Além destas, existe a opção
none, que força a não
apresentação da borda.
Bordas
Ao invés de usar cada propriedade individualmente, podemos
adotar um atalho:
<style type="text/css">
p {
border: 5px solid blue;
}
</style>
<p>
O Instituto de Computação é o mais novo
instituto da UFAM, tendo sido formado a
partir do antigo Departamento de Ciência
da Computação (DCC).
</p>
Bordas
Ao invés de usar cada propriedade individualmente, podemos
adotar um atalho:
<style type="text/css">
p {
border: 5px solid blue;
}
</style>
<p>
O Instituto de Computação é o mais novo
Para usardaoUFAM,
instituto atalho, é preciso
tendo obedecer
sido formado a a
ordem:
partir do width
antigo style color de Ciência
Departamento
da Computação (DCC).
</p>
Bordas Arredondadas
Podemos criar bordas arredondadas usando as propriedades
border radius
Existem 5 propriedades associadas com essa capacidade
Bordas Arredondadas
No exemplo abaixo, apenas a borda superior à esquerda será
arredondada
<style type="text/css">
p {
border: 5px solid blue;
border-top-left-radius: 16px;
}
</style>
<p>
O Instituto de Computação é o mais novo
instituto da UFAM, tendo sido formado a
partir do antigo Departamento de Ciência
da Computação (DCC).
</p>
Exercício
Codifique uma página html/css cujo resultado seja similar ao
da figura abaixo
github
CSS1
Padding
Padding (acolchoamento) é o espaço entre o conteúdo do
elemento e sua borda
Padding
É possível atribuir um valor de padding para cada lado de um
elemento caixa, ou atribuir um único valor de padding para o
elemento inteiro
Padding
É possível atribuir um valor de padding para cada lado de um
elemento caixa, ou atribuir um único valor de padding para o
elemento inteiro
Quando informamos o
padding usando
porcentagens, a
porcentagem é sempre
relativa ao comprimento
do elemento pai.
A altura não é levada
em conta.
Padding
Declarando os valores de padding para cada lado
<style type="text/css">
div {
border: 10px double black;
background-color: lightgray;
background-clip: content-box;
padding-top: 10px;
padding-right: 16px;
padding-bottom: 6px;
padding-left: 12px;
}
</style>
Padding
O padding também pode ser feito em uma única declaração
Para isso, basta usar o comando padding e definir os valores
na seguinte ordem: topo, direita, fundo e esquerda
top
padding-top: 10px;
padding-right: 16px;
padding-bottom: 6px;
padding-left: 12px;
padding: 10px 16px 6px 12px;
left right
Os estilos acima
produzem o
mesmo efeito
bottom
Margin
Margin é o espaço entre a borda do elemento e aquilo que o
rodeia na página Web
Margin
É possível atribuir um valor de margin para cada lado de um
elemento caixa, ou atribuir um único valor de margin para o
elemento inteiro
Margin
É possível atribuir um valor de margin para cada lado de um
elemento caixa, ou atribuir um único valor de margin para o
elemento inteiro
Quando informamos a
margem usando
porcentagens, a
porcentagem é sempre
relativa ao comprimento
do elemento pai.
A altura não é levada
em conta.
Margin
Declarando os valores de margin vertical e horizontal
<style type="text/css">
img {
border: 4px solid black;
background: lightgray;
margin: 4px 6px;
}
</style>
...
<body>
<img src="imgs/css_pq.png" alt="CSS3">
<img src="imgs/css_pq.png" alt="CSS3">
</body>
Margin
Declarando os valores de margin vertical e horizontal
<style type="text/css">
img {
border: 4px solid black;
background: lightgray;
margin: 4px 6px;
}
</style>
...
<body>
<img src="imgs/css_pq.png" alt="CSS3">
<img src="imgs/css_pq.png" alt="CSS3">
</body>
Sombra de Caixas
Uma das ferramentas mais aguardadas do CSS3 foi a
habilidade de adicionar sombras aos elementos
A sompra é feita através da propriedade box-shadow, que
veremos a seguir
Sombra de Caixas
Os valores da propriedade box-shadow seguem o seguinte
formato:
box-shadow: hoffset voffset blur spread color inset
hoffset, a offset horizontal, que é um valor de comprimento
– Valores positivos criam uma sombra pra direita, e negativos
para a esquerda
voffset, a offset vertical, que é um valor de comprimento
– Valores positivos criam uma sombra pra baixo, e negativos para
cima
Sombra de Caixas
Os valores da propriedade box-shadow seguem o seguinte
formato:
box-shadow: hoffset voffset blur spread color inset
blur, especifica o tamanho do borrão. Quanto maior o
valor, mais borrada fica a sombra. Opcional.
spread, especifica o grau de espalhamento. Opcional.
color, especifica a cor da sombra. Se omitodo, o browser irá
escolher a cor. Opcional.
inset, causa uma sombra dentro da caixa, e não for a.
Opcional.
Sombra de Caixas
Exemplo de sombra externa à caixa:
<style type="text/css">
div {
margin: 100px;
border: medium solid black;
box-shadow: 4px 4px 10px 2px gray;
}
</style>
Ordem dos valores:
hoffset voffset blur
spread color inset
Sombra de Caixas
Exemplo de sombra externa à caixa:
<style type="text/css">
div {
margin: 100px;
border: medium solid black;
box-shadow: 2px 2px 4px 2px gray inset;
}
</style>
Ordem dos valores:
hoffset voffset blur
spread color inset
Sombra de Caixas
Exemplo de sombra interna à caixa: É possível definir
múltiplas sombras
<style type="text/css"> em uma única
div { declaração da
margin: 100px; propriedade
border: medium solid black; box-shadow
box-shadow: 4px 4px 10px 2px gray,
2px 2px 4px 2px gray inset;
}
</style>
Ordem dos valores:
hoffset voffset blur
spread color inset
Acesse o site da w3schools e faça os seguintes exercícios de CSS:
Seletores, How to, Border, Margin, Padding, Height/Width e Box
Model.
Background
Propriedades relacionadas com o background:
Background
Propriedades relacionadas com o background:
<style type="text/css">
div {
border: medium solid black;
background-color: lightgray;
background-image: url(imgs/css_pq.png);
background-size: 40px;
background-repeat: repeat-x;
}
</style>
<div>
O Instituto de Computação é o mais novo instituto
da UFAM, tendo sido formado a partir do antigo
Departamento de Ciência da Computação (DCC).
</div>
Background
Propriedades relacionadas com o background:
<style type="text/css">
div {
border: medium solid black;
background-color: lightgray;
background-image: url(imgs/css_pq.png);
background-size: 40px;
background-repeat: repeat-x;
}
</style>
<div>
O Instituto de Computação é o mais novo instituto
da UFAM, tendo sido formado a partir do antigo
Departamento de Ciência da Computação (DCC).
</div>
Background
Possíveis valores para a propriedade background-repeat
Background
A propriedade background-position seta a localização da
imagem de background
– É mais útil quando a imagem não está sendo repetida
<style type="text/css">
div {
border: medium solid black;
background-color: lightgray;
background-image: url(imgs/css_pq.png);
background-size: 40px;
background-repeat: no-repeat;
background-position: 30px 10px;
}
</style>
Background
A propriedade background-position seta a localização da
imagem de background
– É mais útil quando a imagem não está sendo repetida
<style type="text/css">
div {
border: medium solid black;
background-color: lightgray;
background-image: url(imgs/css_pq.png);
background-size: 40px;
background-repeat: no-repeat;
background-position: 30px 10px;
}
</style>
Exercício
Codifique uma página html/css cujo resultado seja similar
ao da figura abaixo
github
CSS3
Tamanho dos Elementos
As propriedades abaixo são usadas para definir o tamanho
dos elementos das páginas
Tamanho dos Elementos
As propriedades abaixo são usadas para definir o tamanho
dos elementos das páginas
O valor padrão de todas essas propriedades é auto,
para que o browser procure estimar o tamanho
correto dos elementos com base no fluxo do
conteúdo da página
Tamanho dos Elementos
Pode-se usar as propriedades min- and max- para limitar o
quanto o browser pode redimensionar um elemento
<style type="text/css">
.bloco {
background: lightgray;
border: 4px solid black;
margin: 2px;
box-sizing: border-box;
<div class="bloco">
min-width: 100px;
<img src="/img/[Link]" />
width: 50%;
</div>
max-width: 200px;
padding: 8px;
}
.bloco > img {
width: 100%;
}
</style>
Tamanho dos Elementos
Pode-se usar as propriedades min- and max- para limitar o
quanto o browser pode redimensionar um elemento
<style type="text/css">
img {
background: lightgray;
border: 4px solid black;
margin: 2px;
box-sizing: border-box;
min-width: 100px;
width:50%;
max-width: 200px;
}
</style>
Lidando com Transbordamento
Quando diminuímos o tamanho de um elemento, seu
conteúdo pode não caber mais em seu interior
Por padrão, quando isso ocorre, o browser deixa o
conteúdo do elemento transbordar para fora
<style type="text/css">
div {
width: 200px;
height: 100px;
border: medium double;
}
</style>
Lidando com Transbordamento
Quando diminuímos o tamanho de um elemento, seu
conteúdo pode não caber mais em seu interior
Por padrão, quando isso ocorre, o browser deixa o
conteúdo do elemento
No entanto, transbordar para
esse comportamento fora
padrão
pode ser mudado através das propriedades
<style type="text/css">
div {
overflow
width: 200px;
height: 100px;
border: medium double;
}
</style>
Lidando com Transbordamento
Propriedades overflow existentes
Lidando com Transbordamento
Possíveis valores para a propriedade overflow:
Lidando com Transbordamento
overflow: hidden - o conteúdo é truncado, e apenas a
porção dentro da caixa é apresentada
<style type="text/css">
div {
width: 200px;
height: 100px;
overflow: hidden;
border: medium double;
}
</style>
Lidando com Transbordamento
overflow: auto – a barra de rolagem aparece caso haja
transbordamento
<style type="text/css">
div {
width: 200px;
height: 100px;
overflow: auto;
border: medium double;
}
</style>
Lidando com Transbordamento
overflow: scroll – a barra de rolagem aparece, havendo
transbordamento ou não
<style type="text/css">
div {
width: 200px;
height: 100px;
overflow: scroll;
border: medium double;
}
</style>
Tipos de Caixas dos Elementos
Através da propriedade display podemos mudar o tipo de
caixa de um elemento
Alguns valores da propriedade display:
Tipos de Caixas dos Elementos
Quando usamos display: block, é criado um elemento do
tiplo bloco
– Este elemento é verticalmente separado dos demais elementos
que estão à sua volta
– O elemento faz uma quebra de linha antes e depois de si
mesmo
O elemento p, usado para criar parágrafos, inclui essa
propriedade/valor em seu estilo padrão
Tipos de Caixas dos Elementos
Usando o valor block para a propriedade display
<style type="text/css">
div {
border: medium solid black
}
span {
display: block;
border: medium double black;
margin: 2px;
}
</style>
...
<div>
Dentro do estilo CSS, a propriedade CSS display é
utilizada para indicar a forma como
os <span>elementos HTML</span> serão dispostos
na página ou em espaços delimitados.
</div>
Tipos de Caixas dos Elementos
Usando o valor block para a propriedade display
<style type="text/css">
div {
border: medium solid black
}
span {
display: block;
border: medium double black;
margin: 2px;
}
</style>
...
<div>
Dentro do estilo CSS, a propriedade CSS display é
utilizada para indicar a forma como
os <span>elementos HTML</span> serão dispostos
na página ou em espaços delimitados.
</div>
Tipos de Caixas dos Elementos
Quando usamos display: inline, o elemento não se separa
do fluxo do conteúdo
Certas propriedades típicas de blocos, tais como width e
height, são ignoradas
<style type="text/css">
div {
display: inline;
}
span {
display: inline;
border: medium double black;
margin: 20em;
width: 100em;
height: 200em;
}
</style>
Tipos de Caixas dos Elementos
Usando display: inline-block, criamos um elemento com
características bloco e inline
– Não existe quebras de linha antes e depois do elemento
– Entretando, dentro do elemento, propriedades tais como width
e height podem ser aplicadas
<style type="text/css">
div {
display: inline;
}
span {
display: inline-block;
border: medium double;
width: 10em;
height: 2em;
margin: 3px;
}
</style>
Tipos de Caixas dos Elementos
Usando display: none, o elemento não aparece na página
<p>A declaração display: block faz com que o elemento HTML
seja renderizado como bloco, tal como os parágrafos e os
cabeçalhos o são.</p>
<p id="toggle">A declaração display: none faz com que o elemento
HTML não seja renderizado.</p>
<button>Block</button><button>None</button>
const buttons = [Link]("BUTTON");
for (var i = 0; i < [Link]; i++) {
buttons[i].onclick = function(e) {
[Link]("toggle").[Link]=
[Link];
};
}
Tipos de Caixas dos Elementos
Usando display: none, o elemento não aparece na página
<p>A declaração display: block faz com que o elemento HTML
seja renderizado como bloco, tal como os parágrafos e os
cabeçalhos o são.</p>
<p id="toggle">A declaração display: none faz com que o elemento
HTML não seja renderizado.</p>
<button>Block</button><button>None</button>
const buttons = [Link]("BUTTON");
for (var i = 0; i < [Link]; i++) {
buttons[i].onclick = function(e) {
[Link]("toggle").[Link]=
[Link];
};
}
Alinhamento de Textos
A propriedade text-align é usada para configurar o
alinhamento do conteúdo textual
Seus possíveis valores são: left, right, center e justify
Alinhamento de Textos
A propriedade text-align é usada para configurar o
alinhamento do conteúdo textual
Seus possíveis valores são: left, right, center e justify
Além da propriedade text-align, existe uma série de
outras propridades de textos: text-indent, text-transform,
text-decoration, word-spacing e letter-spacing.
Posicionamento de conteúdo
A propriedade position define o método com que um
elemento é posicionado na página
Possíveis valores da propriedade position:
Posicionamento de conteúdo
Podemos usar as propriedades
Exemplo de uso do position top, bottom, left, e right para
img { deslocar o elemento
top: 20px; especificado pela propriedade
left: 200px; position
}
<img id="css-logo" src="imgs/css_pq.png" alt="css"/>
<button>Static</button>
<button>Relative</button>
<button>Absolute</button>
<button>Fixed</button>
const buttons = [Link]("BUTTON");
const cssLogo = [Link]("css-logo");
for (var i = 0; i < [Link]; i++) {
buttons[i].onclick = function(e) {
[Link] = [Link];
};
}
Posicionamento de conteúdo
Podemos usar as propriedades
Exemplo de uso do position top, bottom, left, e right para
img { deslocar o elemento
top: 20px; especificado pela propriedade
left: 200px; position
}
<img id="css-logo" src="imgs/css_pq.png" alt="css"/>
<button>Static</button>
<button>Relative</button>
<button>Absolute</button>
<button>Fixed</button>
const buttons = [Link]("BUTTON");
const cssLogo = [Link]("css-logo");
for (var i = 0; i < [Link]; i++) {
buttons[i].onclick = function(e) {
[Link] = [Link];
};
}
Posicionamento de conteúdo
Podemos usar as propriedades
Exemplo de uso do position top, bottom, left, e right para
img { deslocar o elemento
top: 20px; especificado pela propriedade
left: 200px; position
}
<img id="css-logo" src="imgs/css_pq.png" alt="css"/>
<button>Static</button>
<button>Relative</button>
<button>Absolute</button>
<button>Fixed</button>
const buttons = [Link]("BUTTON");
const cssLogo = [Link]("css-logo");
for (var i = 0; i < [Link]; i++) {
buttons[i].onclick = function(e) {
[Link] = [Link];
};
}
Posicionamento de conteúdo
Podemos usar as propriedades
Exemplo de uso do position top, bottom, left, e right para
img { deslocar o elemento
top: 20px; especificado pela propriedade
left: 200px; position
}
<img id="css-logo" src="imgs/css_pq.png" alt="css"/>
<button>Static</button>
<button>Relative</button>
<button>Absolute</button>
<button>Fixed</button>
const buttons = [Link]("BUTTON");
const cssLogo = [Link]("css-logo");
for (var i = 0; i < [Link]; i++) {
buttons[i].onclick = function(e) {
[Link] = [Link];
};
}
Posicionamento de conteúdo
Podemos usar as propriedades
Exemplo de uso do position top, bottom, left, e right para
img { deslocar o elemento
top: 20px; especificado pela propriedade
left: 200px; position
}
<img id="css-logo" src="imgs/css_pq.png" alt="css"/>
<button>Static</button>
<button>Relative</button>
<button>Absolute</button>
<button>Fixed</button>
const buttons = [Link]("BUTTON");
const cssLogo = [Link]("css-logo");
for (var i = 0; i < [Link]; i++) {
buttons[i].onclick = function(e) {
[Link] = [Link];
};
}
Posicionamento absoluto
A propriedade position:absolute provê grande controle
sobre o local de um elemento na página
Normalmente, os elementos são posicionandos na página
na ordem em que aparecem no HTML
Especificar a posição de um elemento como absoluta ignora
o fluxo normal dos elementos
Os elementos são dispostos de acordo com a distância do
topo, da esquerda, da direita ou do fundo das páginas
Posicionamento absoluto
Para compreender o posicionamento absoluto, considere as
duas imagens abaixo
Posicionamento absoluto
Podemos usar a proriedade position: absolute para colocar
uma imagem em cima da outra
<style type="text/css">
.bg_image {
position: absolute;
top: 10px;
left: 10px;
z-index: 1;
}
.fg_image {
position: absolute;
top: 35px;
left: 110px;
z-index: 2;
}
</style>
<body>
<img src="img/[Link]" class="bg_image" alt="Background" />
<img src="img/[Link]" class="fg_image" alt="Logo CSS" />
</body>
Posicionamento absoluto
A propriedade z-index permite criar elementos sobrepostos
– Elementos com z-index maiores são mostrados na frente dos
elementos com z-index menores
<style type="text/css">
.bg_image {
position: absolute;
top: 10px;
left: 10px;
z-index: 1;
}
.fg_image {
position: absolute;
top: 35px;
left: 110px;
z-index: 2;
}
</style>
Posicionamento relativo
A proriedade position: relative posiciona um elemento em
relação a sua posição original
<p>O texto no final está <span class="super">acima</span></p>
<p>O texto no final está <span class="sub">abaixo</span></p>
<p>O texto no final está <span class="shiftleft">a esquerda</span></p>
<p>O texto no final está <span class="shiftright">a direita</span></p>
<style type="text/css">
p { font-size: 1.3em; font-family: verdana, arial, sans-serif; }
span { color: red; font-size:0.6em; height: 1em; position:relative;}
.super { top:-10px; }
.sub { bottom:-10px; }
.shiftleft { left:-10px; }
.shiftright { right:-10px; }
</style>
Exercício
O código abaixo gera a página da esquerda. Use posicio-
namento relativo para transformá-la na página da direita.
<style>
[Link] { width:100px; height:200px; background-color:blue; }
[Link] { width:100px; height:150px; background-color:yellow; }
[Link] { width:100px; height:150px; background-color:red; }
[Link] { width:200px; height:50px; background-color:green; }
</style>
<div class="blue"></div>
<div class="yellow"></div>
<div class="red"></div>
<div class="green"></div>
github
CSS3
Layout Flexbox
Os métodos de display vistos até então, block e inline, são
pouco flexíveis e não atendem a requisitos muito comuns
O Flexbox é um método de display do CSS3 que permite
organizar os itens de uma página dentro de containers
flex
container
flex items
Layout Flexbox
Os métodos de display vistos até então, block e inline, são
pouco flexíveis e não atendem a requisitos muito comuns
O Flexbox é um método de display do CSS3 que permite
organizar os itens de uma página dentro de containers
Algumas propriedades CSS do flexbox estão relacionadas
com o container, enquanto outras com os itens
flex
container
flex items
Propriedades do Flex Container
display: define um flex container, habilitando o contexto
flex para todos os seus filhos (flex itens)
.container { display: flex | inline-flex; }
flex-direction: estabelece o main-axis, definindo a direção
dos itens dentro de um flex container
.container { flex-direction: row | row-reverse | column |
column-reverse; }
cross axis
cross axis start
main axis
cross axis end
main axis start main axis end
Propriedades do Flex Container
display: define um flex container, habilitando o contexto
flex para todos os seus filhos (flex itens)
.container { display: flex | inline-flex; }
flex-direction: estabelece o main-axis, definindo a direção
dos itens dentro de um flex container
.container { flex-direction: row | row-reverse | column |
column-reverse; }
cross axis
cross axis start
main axis
cross axis end
main axis start main axis end
Propriedades do Flex Container
flex-wrap: define se os itens de um container podem ou não
mover para uma nova linha caso não caibam na primeira
.container{ flex-wrap: nowrap | wrap | wrap-reverse; }
Propriedades do Flex Container
justify-content: define o alinhamento horizontal dos itens
quando esses não usam todo o espaço do container
.container{ justify-content: flex-start; }
.container{ justify-content: flex-end; }
.container{ justify-content: center; }
.container{ justify-content: space-between; }
.container{ justify-content: space-around; }
Propriedades do Flex Container
align-items: Define o alinhamento dos itens no cross-axis. É
similar ao justify-content, porém usado no eixo transversal
.container{ align-items: stretch | flex-start | flex-end | center | baseline }
Propriedades do Flex Container
align-items: Define o alinhamento dos itens no cross-axis. É
similar ao justify-content, porém usado no eixo transversal
.container{ align-items: stretch | flex-start | flex-end | center | baseline }
Propriedades do Flex Container
align-items: Define o alinhamento dos itens no cross-axis. É
similar ao justify-content, porém usado no eixo transversal
.container{ align-items: stretch | flex-start | flex-end | center | baseline }
Outras propriedades associadas aos flex containers:
align-content e flex-flow (atalho flex-direction e flex-wrap)
Flex Itens
Os Flex Itens são os filhos diretos de um Flex Container
– Um elemento se torna um flex container com display: flex
Um Flex Item também pode ser um Flex Container, bastando
definir display: flex nele
– Assim os filhos desse item também serão flex itens.
flex
container
flex items
Propriedades dos Flex Itens
flex-grow: define a proporção com que um item deve
crescer, caso seja necessário
.item { flex-grow: <número>; /* padrão 0 */ }
flex-shrink: define a proporção com que um item deve
encolher, caso seja necessário
.item { flex-shrink: <número>; /* padrão 1 */ }
flex-basis: define o tamanho inicial que um item deve ter
antes que o espaço ao seu redor seja distribuído
.item { flex-basis: <tamanho> | auto; /* padrão auto */ }
Propriedades dos Flex Itens
flex: atalho para as propriedades flex-grow, flex-shrink e
flex-basis, nesta ordem
.item { flex: <flex-grow> <flex-shring> <flex-basis> }
/* valor padrão: 0 1 auto */
order: modifica a ordem dos flex itens
.item { order: <numero> } /* valor padrão: 0 */
align-self: define o alinhamento específico de um único flex
item dentro do container
.item { order: stretch | flex-start | flex-end | center | baseline }
/* valor padrão: flex-start */
Exercício
Acesse o site [Link]
e ajude os sapos a chegar até as
vitórias-régias em um jogo de 24 fases.
Design Responsivo
Web Design Responsivo é uma abordagem de web
design destinada a elaborar sites que forneçam uma ótima
experiência de visualização para uma ampla gama de
dispositivos
Media Queries
Média Queries são utilizadas para mudar o layout do site
de acordo com o tipo do dispositivo usado para acessá-lo
Elas permitem que a página use regras de estilo CSS com base
nas seguintes características do dispositivo:
– Width – Largura da janela do browser. Valor: medidas de
comprimento. Aceita prefixo min/max: Sim.
– Height – Altura da janela do browser. Valor: medidas de
comprimento. Aceita prefixo min/max: Sim.
– Device-width – Tamanho da tela. Valor: medidas de
comprimento. Aceita prefixo min/max: Sim.
– Device-height – Altura da tela. Valor: medidas de comprimento.
Aceita prefixo min/max: Sim.
– Orientation – Orientação da mídia. Valor: portrait (retrato) ou
landscape (paisagem). Aceita prefixo min/max: Não.
Media Queries
Outras características que podem ser avaliadas por expressões
Media Queries:
– Device-aspect-ratio – Proporção da tela do dispositivo. Aceita
prefixo min/max: Não.
– Color – Número de bits por cor. Se o valor for zero o dispositivo
é monocromático. Valor: numérico. Aceita prefixo min/max: Sim.
– Resolution – Resolução do dispositivo (densidade por pixel).
Valor: número em DPI ou DCM. Aceita prefixo min/max: Sim.
– Operadores – Através dos operadores not (não), and (e) e only
(apenas) é possível combinar as características acima
Exemplos de Media Queries
É possível criar um CSS específico para telas de, no
máximo, 430px (como um iPhone em modo retrato):
<link rel="stylesheet" href="[Link]"
media="screen and (max-width: 430px)">
Além dos media queries de tamanho, podemos adotar
uma media query que pega a orientação do dispositivo:
<link rel="stylesheet" href="[Link]"
media="screen and (min-width: 320px) and
(orientation: portrait)">
Exemplos de Media Queries
Por exemplo, podemos customizar o layout de acordo
com a forma do usuário segurar o aparelho
– É sabido que um celular em modo retrato é mais usável com
navegação na parte de baixo à esquerda; e, no modo paisagem,
com navegação no topo e nas laterais
Exemplos de Media Queries
Além de declarar as media queries na tag <link> no
HTML, podemos também fazer direto dentro do CSS
/* regra aplicada em todo lugar */
body { background: blue; }
/* aplica somente a partir de 768px */
@media screen and (min-width: 768px) {
body { font-size: 80%; }
}
/* aplica somente a partir de 1024px em landscape */
@media screen and (min-width: 1024px) and (orientation: landscape) {
nav { display: flex; }
}