Prévia do material em texto
PROGRAMAÇÃO PARA INTERNET Prof. Cayo Fontana
CSS
FOLHAS DE ESTILOS EM CASCATA
SUMÁRIO
Introdução
Sintaxe
Comentário
Formas de Declaração
Seletores
Precedência e Especificidade
Cascata e Herança
INTRODUÇÃO
No passado, exclusivamente nas questões de definição de leiaute na web, a
estilização do HTML era feito no próprio HTML, com a utilização de algumas tags
para estilos, como a tag <font>
<h1>
<font color="#00FF00">Título</font>
</h1>
À princípio, não parece estranho definir estilos com elementos HTML específicos para
tal aplicabilidade...
INTRODUÇÃO
Imagine que você possua um site com:
40 diferentes conteúdos (arquivos HTML’s distintos)
4 títulos em média para cada arquivo
160 tags de definição de fonte no total (código inflado)
Seu cliente deseja que você altere o tipo da fonte e a cor dos títulos...
Isso dará um pouco de trabalho!
Solução proposta: CSS (Cascading Style Sheet) – Folha de Estilos em Cascata
INTRODUÇÃO
Definição
Linguagem de Folha de estilos utilizada para padronizar as definições e
configurações de leiaute no (X)HTML (pode-se utilizar em documentos XML)
CSS define como e qual é a forma de apresentação em que os elementos HTML,
em um dado documento, serão exibidos
Vantagens
Segregação de código HTML (estruturação) de código de estilização
Documentos e códigos HTML mais coesos e “limpos”
Facilidade para alterar um conjunto de elementos (independente do tipo)
SINTAXE
Estrutura simples: declaração de propriedades e valores separados por um sinal de
dois pontos “:”, e cada propriedade é separada por um sinal de ponto e vírgula “;”
background-color: yellow;
color: blue;
Estas definições de propriedades exibirão o conteúdo de elemento(s) HTML com o
texto na cor azul e com o fundo amarelo
Existem 3 diferentes maneiras de estilizar conteúdo(s) e documento(s) HTML utilizando
CSS
SINTAXE
Estrutura simples: declaração de propriedades e valores separados por um sinal de
dois pontos “:”, e cada propriedade é separada por um sinal de ponto e vírgula “;”
background-color: yellow;
color: blue;
Estas definições de propriedades exibirão o conteúdo de elemento(s) HTML com o
texto na cor azul e com o fundo amarelo
Existem 3 diferentes maneiras de estilizar conteúdo(s) e documento(s) HTML utilizando
CSS
SINTAXE
Atributo Style
O atributo style é um atributo HTML global utilizado para definições de estilos
diretamente no elemento HTML
<p style="color: blue; background-color: yellow;">
O conteúdo será exibido com fonte em azul e fundo amarelo.
</p>
SINTAXE
Atributo Style
O atributo style é um atributo HTML global utilizado para definições de estilos
diretamente no elemento HTML
<p style="color: blue; background-color: yellow;">
O conteúdo será exibido com fonte em azul e fundo amarelo.
</p>
Não recomendado!
Não apresenta as vantagens da utilização do CSS no HTML
SINTAXE
Elemento (Tag) Style
Outra maneira de se utilizar o
CSS é declarando suas
propriedades dentro de uma
tag <style>
Utilizando um Seletor CSS, foi
estabelecido que todo elemento
p será apresentado com fonte
azul e fundo amarelo
<style>
p {
background-color: yellow;
color: blue;
}
</style>
<p>
O conteúdo será exibido com
fonte em azul e fundo amarelo.
</p>
SINTAXE
Arquivo Externo
Definições de CSS em um arquivo fisicamente separado do arquivo HTML
Necessário informar, no HTML atual, uma ligação com o documento de estilos
Um documento de folha de estilos em cascata, possui a extensão .css
Vantagens
Projeto com maior organização (HTML coeso e limpo)
Reusabilidade de definições de estilos para elementos HTML
Desempenho na manutenibilidade do código
SINTAXE
Arquivo Externo
Ligação entre os arquivos HTML e CSS
deve ser feita dentro da tag <head>
do HTML
<link rel="stylesheet"
href="estilos.css">
O conteúdo de um arquivo CSS recebe
apenas a definição dos estilos:
Exemplo de arquivo CSS:
p {
background-color: yellow;
color: blue;
}
Elemento
HTML
Propriedade
CSS
Valor da
Propriedade
COMENTÁRIO
Comentários em código CSS são definidos pela declaração composta de dois
caracteres: a barra “/” e o asterisco “*”
Para iniciar um comentário, a composição da declaração é feita pelo caracter barra
Inserção de comentários de código CSS é através de
SELETORES
São elementos de ligação entre o documento HTML e o estilo CSS
O seletor especifica qual(is) elemento(s) receberão o tratamento definido no bloco
de declaração
A declaração configura o efeito que o seletor terá, e é composta por um par, ou
conjunto de pares, propriedade: “valor”, dentro de um bloco de declaração
O bloco de declaração é aberto com uma chave esquerda “{” e fechado com uma
chave direita “}”
Um bloco de declaração é sempre precedido de um – ou um conjunto – de seletor
SELETORES
Seletor Universal
O seletor universal corresponde a qualquer tipo de elemento
Em sua declaração, utiliza-se o asterisco para representa-lo
Caso ele seja composto, poderá ter sua simbologia padrão omitida
• * { color: yellow; }
• *.classe { color: yellow; } é equivalente a .classe { color: yellow; }
SELETORES
Seletor de Tipo
O seletor de tipo atua para o nome corresponde à tag HTML que foi definido no
tipo
A configuração no bloco de declaração de um seletor de tipo, incidirá em todos os
elementos nos arquivos HTML’s referenciados
• div { color: yellow; }
• h1 { color: yellow; }
SELETORES
Seletor Descendente
Em algumas situações possivelmente deseja-se que um elemento, ou um conjunto de
elementos, se comporte de acordo com seu contexto hierárquico
A ordem hierárquica dá-se de acordo com a ordem de composição do seletor, da
esquerda para a direita
• div p a { color: blue; }
SELETORES
Seletor Filho
O seletor filho corresponde a um conjunto de elementos que compõem o seletor
separados por um colchete angular direito “>”
As definições de leiaute somente serão aplicados aos filhos diretos dos elementos, na
ordem da esquerda para a direita da sua declaração
• div > p > a { color: blue; }
SELETORES
Seletor Irmão/Relacional Adjacente
Corresponde a um conjunto de elementos que sejam adjacentes na árvore HTML, ou
seja, que estejam no mesmo nível hierárquico
Caso haja algum elemento entre os irmãos adjacentes, a definição será ignorada
• div + a + p { color: yellow; }
SELETORES
Seletor Irmão Geral
Corresponde a um conjunto de elementos que estejam no mesmo nível hierárquico do
documento HTML e que esteja precedido do irmão (ou irmãos) à esquerda
Caso haja algum elemento entre os irmãos adjacentes, o mesmo será ignorado
• div ~ p { color: yellow; }
SELETORES
Seletor de ID
Permite a aplicação de definições de estilos em um elemento pelo sei identificador
único ID
Sua declaração é dada pela presença do símbolo tralha “#” precedido pelo ID do
elemento
• #teste { color: blue; }
• div#teste { color: blue; }
SELETORES
Seletor de Atributos
Permite a aplicação de definições de estilos em elementos que possuem
determinados atributos, ou correspondência total ou parcial de um valor de atributo
Delimitados por colchetes e, quando há presença de valor, separados pelo sinal de
igualdade “=“
• h1[title] { color: blue; }
• h1[class=classe] { color: blue; }
SELETORES
Seletor de Classe
Estabelece um definições de estilos através do nome de uma classe, definido no CSS
Sua declaração é dada pela presença do símbolo ponto “.” precedido pelo nome
dado ao seletor do tipo classe
• .classe { color: blue; }
• h1.classe{ color: blue; }
SELETORES
Seletor de Pseudo-Classe e Pseudo-Elements
São palavras-chaves que podem ser adicionadas à determinados seletores para especificar
o estado de um elemento HTML
Pseudo-classes e pseudo-elementos, permitem que sejam definidas estilos não apenas aos
conteúdos apresentados estaticamente na apresentação de um documento HTML, mas também
em relação a comportamentos dinâmicos
Exemplos de pseudo-classes:
hover: posicionamento do mouse
visited: histórico de navegação
checked: status de um conteúdo
SELETORES
Seletor de Pseudo-Classe e Pseudo-Elements
Sua declaração é dada pelo uso de dois ponto “:” precedidos pelo nome do seletor
ou pelo uso duplicado de dois pontos “::”, também precedidos pelo nome do seletor,
para pseudo-classe e pseudo-elemento, respectivamente
Exemplo
Pseudo-classe: a:visited, li:hover, option:checked
Pseudo-elements: p::first-line { margin-left: 20px }
PRECEDÊNCIA DE ESTILOS
Um único documento HTML pode:
• Importar links para várias folhas de estilo externas (estilos com arquivos externos)
• Conter uma ou mais folhas de estilo incorporadas (estilos com Tag Style)
• Fazer uso de estilos inline
Problema: Definições podem entrar em conflito
Solução: CSS usa um mecanismo chamado de cascata para resolver tais conflitos e
através de especificidade e herança
PRECEDÊNCIA DE ESTILOS
Especificidade
Determina a regra a ser aplicada pelos clientes (navegadores)
Problema:
a { div a {
} }
A especificidade do seletor determina quais as regras de precedência aplicadas
sobre o código CSS para um mesmo elemento quando várias regras são aplicadas
Cada seletor tem sua especificidade
PRECEDÊNCIA DE ESTILOS
No exemplo anterior conseguimos ver a atuação da cascata no código CSS
O seletor [a] possui especificidade 1, já o seletor [div a] possui especificidade 2
Porque?
Isso ocorre pela soma de elementos presentes no seletor. No primeiro caso, temos um
elemento para um seletor. No segundo, dois elemento para um único seletor, então
Peso = 1 (elemento div) + 1 (elemento a)
Cálculo de Especificidade
Especificidade descreve o peso de um seletor e suas declarações, e possui uma regra
baseada em valores para que essa seja alcançada
PRECEDÊNCIA DE ESTILOS
CASCATA E HERANÇA
O estilo final para um elemento pode ser especificado em muitos lugares diferentes,
que pode interagir num meio complexo
Esta interação complexa faz do CSS uma ferramenta poderosa, porém pode tornar
o código confuso
O comportamento cascata efetivamente estabelece uma sequência para avaliar o
estilo de um determinado elemento
O estilo padrão do navegador para a linguagem de marcação
O estilo especificado por um usuário que está lendo o documento
O estilo ligado ao documento pelo seu autor
CASCATA E HERANÇA
Estilo Padrão do Navegador
Ao visualizar um documento no navegador, parte do estilo é definido por um conjunto de
definições padrão do navegador para um código HTML
Estilo Definido pelo Usuário
Estilo oriundo das configurações do navegador no qual algum arquivo de configuração
de estilos de usuário está definido (userConten.css por exemplo, em um perfil)
Estilo Ligado ao HTML
Estilo definido nos arquivos de folhas de estilo relacionados ao documento HTML (ou
definidos inline, ou no documento ou ligados a algum arquivo de estilos externo)
CASCATA E HERANÇA
Na estilização de elementos em cascata, a ordem de prioridade segue da seguinte
maneira:
1. O autor das folhas de estilo tem prioridade
2. O leitor das folhas de estilo,
3. O padrão do navegador
Onde;
Autor código CSS (de atributo, de tag, ou externo), e
Leitor configurações e definições do usuário em seu perfil no navegador
CASCATA E HERANÇA
Herança é a característica que elementos HTML herdam propriedade de outros
elementos
Se <p> possui uma configuração e no código HTML a tag <a> é parte do conteúdo
de <p>, então a herda definições de <p>
Na herança propriedades CSS aplicadas a uma tag são repassadas para as tags
aninhadas
<p style=“color: #FF0000;”>
<a>Link</a>
</p>
CASCATA E HERANÇA
Herança não se aplica apenas a estilização de elementos seletores, podem ser
aplicáveis a quaisquer outros seletores existentes no CSS
A utilização de herança é uma boa prática na construção de estilos HTML usando
CSS:
Exemplos:
Definir todo o estilo global de HTML no seletor de elemento body, fornece o
reuso daquele estilo para todos os demais elementos internos
No estilo, é só especificar a fonte que você deseja usar, e todas as tags na
página herdam a fonte: body { font-family: Arial, Helvetica, sans-serif;}
BOX MODEL – MODELO DE CAIXA
No HTML, todos os elementos são considerados caixas, independentemente do seu
propósito
Ao serem carregados pelo navegador os elementos se ajustam
Content: conteúdo do elemento
(imagens, textos, etc)
Padding: limpa uma área em torno
do conteúdo (transparente)
Border: região que limita a área do
conteúdo
Margin: limpa uma região fora da
borda
BOX MODEL – MODELO DE CAIXAS
Definição:
h1 {
border: 1px solid #FF0000 !important;
margin: 15px;
padding: 5px 10px 5px 10px;
}
Embora o CSS nos permita alterar propriedade e valores de caixas, elementos sem
definição serão exibidos de acordo com as propriedades padrão de cada
navegador
DISPLAY - LEIAUTE
A propriedade display estabelece a forma de exibição dos elementos HTML
Cada elemento tem um valor padrão para a propriedade display, entretanto, como
em todos os outros valores de propriedade, pode ser alterado
Existem diversos valores para a propriedade display, mas os mais comuns são o
block, inline, inline-block e none
DISPLAY - LEIAUTE
Block
Uma tag que cria um espaço antes e depois dela. A tag em bloco <p>, por
exemplo, cria um bloco que é separado de outras tags acima e abaixo.
Hs, <div>, tabelas e listas são outros exemplos de tags que funcionam por padrão
em bloco
P { display: block; }
DISPLAY - LEIAUTE
O fundo (background) da caixa do elemento se estende até a parte exterior da
borda, preenchendo o conteúdo, padding e áreas de borda
Se a borda possuir partes transparentes (por exemplo, é pontilhada ou tracejada),
o fundo será visível naquela área também. Quaisquer contornos são desenhados na
área de margem e não afetam o layout.
Apenas margens, altura e largura de uma caixa podem ser definidos como auto
Somente às margens podem ser dados a valores negativos
As larguras padrão de padding e borda do elemento caixa são 0 (zero) e
nenhum, respectivamente
DISPLAY - LEIAUTE
Inline
Tags inline não criam quebras antes ou depois deles. Eles aparecem na mesma linha
que o conteúdo e outras tags ao lado deles. A tag <strong>é um exemplo de
etiqueta com valor padrão inline.
Uma palavra formatada com esta tag se coloca ao lado de outro texto — até
mesmo texto envolvido em outras tags inline como <em>.
DISPLAY - LEIAUTE
Inline-block
Usar esse valor permitirá um elemento comportar-se como um elemento de bloco,
aceitando todas as propriedades do Box Model
No entanto, o elemento será exibido em consonância com outros elementos, e não
vai começar em uma nova linha por padrão, como em Block
Uma distinção importante com elementos inline-block é que eles nunca se tocam, ou
são exibidos diretamente ao lado do outro
Geralmente, um pequeno espaço existirá entre dois elementos inline-block.