Aulas

Área: Web - Seletores CSS


Aula 1 - Trabalhando com Seletores CSS

Estudamos no módulo anterior como devemos utilizar o CSS para estilizar o conteúdo da nossa página. 

Utilizando o CSS em um arquivo separado do HTML, conseguimos alterar a cor de fundo (background), as cores (color) da tag <h2> e também mudar a família (font-family) de todo o conteúdo da página.

Através do CSS podemos realizar mudanças incríveis no layout, e não utilizar torna o projeto pouco atraente, dando um aspecto de não concluído: é como uma casa sem pinturas nas paredes.

Vamos começar a estudar agora sobre os seletores do CSS

Primeiro, qual a finalidade de um seletor CSS?

  • Os seletores CSS apontam qual elemento HTML deverá receber o estilo. É como se fosse o endereço a ser encontrado pelo navegador.
Vamos rever como ficou o nosso arquivo estilo.css

body {
  background: #3B2F2F;
  color:white;
  font-family:tahoma;
}

h2 {
  color:orange;
}
O código CSS sempre precisa de um seletor, não é possível alterar algo visual se não existir um endereço para isso, por exemplo, se o nosso CSS fosse escrito como abaixo, não iria funcionar:

}
  background: #3B2F2F;
  color:white;
  font-family:tahoma;
}{
  color:orange;
}

Se deixarmos assim o navegador não tem como saber qual elemento irá receber qual estilo, por isso utilizamos os seletores CSS.


No primeiro código, o que está correto, estamos utilizando um tipo de seletor: 


  • É chamado por Tipo ou por Tag.

Nele estamos dizendo que a tag <body> e a tag <h2> serão estilizados conforme definido pelo seletor. Toda vez que o navegador encontrar a tag <body> e a tag <h2> ele irá aplicar o estilo.


  • Outro seletor CSS é o seletor por Classe
Quando é necessário aplicar um estilo para vários elementos ao mesmo tempo, independente do tipo ou tag, podemos utilizar o seletor por Classe.

Para utilizar o seletor por classe temos que adicionar o atributo class nos elementos HTML. No nosso código vamos adicionar esse atributo dentro das tags <h1> e <h2>.

...      
  <header>
    <img src='bicicletaria.jpeg'>
    <h1 class='' >Bicicletaria Pedal Forte</h1>
    <p><i>Mais de 20 anos pedalando com você!</i></p>
    <hr>
  </header>
  <main>
    <h2 class='' >Serviços</h2>
    <p>Oferecemos manutenção completa para sua bicicleta:</p>
    <ul>
      <li>Troca de peças</li>
      <li>Ajuste de marchas</li>
      <li>Revisão geral</li>
    </ul>
    <hr>
    <h2 class=''>Produtos</h2>
    <p>Temos uma linha variada de bicicletas e acessórios:</p>
    <p>
      <b>Bicicletas:</b> Mountain Bike, Speed, Urbanas<br>
      <b>Acessórios:</b> Capacetes, Luvas, Luzes
    </p>
    <hr>
  </main>
  <footer>
    <h2 class=''>Contato</h2>
    <p>Endereço: Rua das Flores, 100 – São Paulo - SP<br>       
    Email: contato@pedalforte.com.br
    </p>
    <hr>	
    <p>2025 Bicicletaria Pedal Forte - Todos os direitos reservados.</p>
  </footer>
...

Assim como definimos que as tags <h2> serão apresentadas na cor laranja (orange), vamos dizer que as tags <h1> também serão mostradas nessa mesma cor. 


Utilizando o seletor CSS por tag teremos:


body {
  background: #3B2F2F;
  color:white;
  font-family:tahoma;
}

h1 {
  color:orange;
}

h2 {
  color:orange;
}

Utilizando o nosso CSS dessa maneira vamos obter o resultado que desejamos, mas observe que as duas tags, tanto <h1> quanto <h2> estão recebendo o mesmo estilo?  Porque isso não é uma boa prática de programação? Deixe seu comentário abaixo:


  • Na próxima aula vamos substituir o seletor CSS de tag para classe.




Aula 2 - Utilizando Seletor CSS por Classe

Adicionamos na aula anterior um estilo para tag <h1> e fizemos isso utilizando o seletor CSS por tag, mas já temos o mesmo estilo, a cor da fonte laranja, sendo aplicado também na tag <h2>. O que isso acarreta? 

  • Repetição Desnecessária: temos duas regras que fazem exatamente a mesma coisa.
  • Dificuldade de Reutilização: se quisermos que outras tags, por exemplo: <p> também tenha a cor laranja, temos que escrever a mesma regra novamente.
  • Dificuldade de Manutenção:  mesmas regras escritas várias vezes dificulta a manutenção do código, sempre que possível precisamos reduzir nosso código de maneira inteligente.
Podemos resolver esse problema de duas formas diferentes:

1) Agrupar os seletores:

body {
  background: #3B2F2F;
  color:white;
  font-family:tahoma;
}

h1,h2 {
  color:orange;
}

Isso já resolveria o nosso problema: temos menos código e a regra aparece apenas uma vez para vários elementos HTML.


2) Utilizar seletor de classe:

No seletor de classe nos criamos um nome que identifica os vários elementos que desejamos modificar, por exemplo: se queremos alterar <h1> e <h2> podemos nomear uma classe como titulo, pois essas duas tags são de títulos.

Agora já temos então o nome da nossa classe: titulo. Vamos atribuir esse nome ao nosso atributo class='' que colocamos no HTML anteriormente.

<h1 class='titulo' >Bicicletaria Pedal Forte</h1>
<h2 class='titulo' >Serviços</h2>
<h2 class='titulo'>Produtos</h2>
<h2 class='titulo'>Contato</h2>

Agora temos que adicionar no arquivo estilo.css a classe que acabamos de criar e agora que agrupamos os estilos das tags de estilo dentro de uma classe podemos retirar o seletor de tag que estamos utilizando:


body {
  background: #3B2F2F;
  color:white;
  font-family:tahoma;
}

titulo {
  color:orange;
}

Nosso código dessa maneira não irá funcionar! Desse jeito o navegador vai procurar uma tag chamada titulo e não vai encontrar. Precisamos que ele procure uma classe e não uma tag.


Para resolver isso temos que colocar um ponto "." na frente do nome da classe. Veja como deve ficar:


body {
  background: #3B2F2F;
  color:white;
  font-family:tahoma;
}

.titulo {
  color:orange;
}

Esse ponto na frente do nome da classe é o que identifica que ela é uma classe e não uma tag.


Alguma dúvida ou questão que gostaria de esclarecer sobre os seletores CSS que vimos até esse momento?  Teste o seu código utilizando os dois tipos de seletores ( de tag e de classe ) e observe o resultado: 




Aula 3 - Utilizando Seletor CSS por ID

Vimos até agora dois tipos de seletores CSS, por tag e por classe. Também aprendemos que o ponto (.) na frente do nome do seletor identifica que estamos nos referindo a uma classe.

Além desses dois tipos também temos o seletor CSS por ID. Ele é muito parecido com o seletor por classe porém: 

  • Adiciona o estilo desejado em apenas um elemento HTML, aquele que possui o id (identificador) definido.
  • No lugar do atributo class=' ' é usado o atributo id=' '.
  • No lugar do "." na frente do nome usamos o símbolo "#".
Vamos alterar o parágrafo que está dentro da tag <header> para a cor amarela, fazendo uso do seletor ID. Vamos identificar esse parágrafo com o id = destaque.

...
  <header>
    <img src='bicicletaria.jpeg'>
    <h1 class='titulo'>Bicicletaria Pedal Forte</h1>
    <p id='destaque'><i>Mais de 20 anos pedalando com você!</i></p>
    <hr>
  </header>
...

E no CSS :


body {
  background: #3B2F2F;
  color:white;
  font-family:tahoma;
}

.titulo {
  color:orange;
}

#destaque {
  color:yellow;
}

Importante: ID foi criado para ser único e representar apenas um elemento HTML na sua páginas. Mesmo que você defina outros parágrafos com o mesmo id e observe que o estilo desse parágrafos foram também alterados, isso não significa que seja uma boa prática de programação.


Isso pode acarretar problemas no futuro, principalmente quando estiver utilizando linguagens de programação como Javascript, PHP e outras.


Acrescente seletores CSS por id em seu código e descreva abaixo como está o seu aprendizado:





Aula 4 - Boas práticas ao utilizar Seletores CSS

Nos módulos anteriores, quando abordados sobre como escrever o nome das tags HTML, estudamos que se elas forem escritas com letras maiúsculas ou minúsculas não teríamos nenhum problema com a visualização do conteúdo da página. O HTML não se preocupa como foram escritas.

Com seletores CSS a situação é diferente.

Se nosso CSS estiver escrito como abaixo: 

body {
  background: #3B2F2F;
  color:white;
  font-family:tahoma;
}

.Titulo {
  color:orange;
}

#DESTAQUE {
  color:yellow;
}

E o HTML estiver :


...
  <header>
    <img src='bicicletaria.jpeg'>
    <h1 class='titulo'>Bicicletaria Pedal Forte</h1>
    <p id='destaque'><i>Mais de 20 anos pedalando com você!</i></p>
    <hr>
  </header>
...

Nosso CSS deixa de funcionar! O navegador irá procurar a classe Titulo e o id DESTAQUE e não vai encontrar, porque os nomes dos atributos class e id são é 'case-sensitive', ou seja, maiúsculas e minúsculas importam.


O CSS pode ser escrito da forma como está abaixo que irá funcionar, mas uma boa prática é utilizar o nome das tags, das classes, dos ids e o conteúdo dentro deles sempre com letras minúsculas:


BODY {
  BACKGROUND: #3B2F2F;
  COLOR:WHITE;
  FONT-FAMILY:TAHOMA;
}

.titulo {
  COLOR:ORANGE;
}

#destaque {
  COLOR:YELLOW;
}

Evite o uso de acentuação


Veja que utilizamos o nome titulo e não título para a nossa classe. Não existe nenhum problema em utilizar acentos nos nomes das classes, mas uma prática recomendada é evitá-lo. 


Como nomear um Seletor CSS?


  • Devem refletir a função ou papel do elemento: por exemplo: mensagem, alerta, conteudo, bloco.
  • Utilizar um padrão de linguagem: pode ser português, inglês, ou qualquer outra, porém evite misturá-las. Defina uma e utilize em todo o seu projeto.
  • Deixe o nome mais fácil de ser entendido: pode ser usado mais de um nome utilizando um padrão para separa-los, quase sempre a barra '-' é o mais recomendado, por exemplo: mensagem-alerta, mensagem-erro, mensagem-sucesso.

💡Dica: Como o padrão da maioria das linguagens é o inglês, faça uso dessa linguagem para nomear suas classes: ao invés de escrever :
  • mensagem-alerta: prefira alert-message. 
  • mensagem-erro: prefira error-message.
  • mensagem-sucesso: prefira success-message.
Esse nomes acima seguem a boa prática recomendada para nomear os seletores CSS, são claros, semânticos e descrevem a função do elemento e não apenas a sua aparência.




Aula 5 - Resumo do Módulo

Estudamos nesse módulo como utilizar os seletores de CSS. Aprendemos que existem 3 tipos de seletores:

  • Por Tipo ou Tag,
  • Por Classe e
  • Por ID
Vimos as formas mais simples de utilizar esse seletores no nosso código, por exemplo:

body {

}

.titulo {

}

#destaque {^

}


O aprendizado desse módulo irá facilitar muito o desenvolvimento do nosso código, uma vez que iremos precisar desse seletores, principalmente os seletores por classe, que são os mais utilizados.


Informação Importante: Sempre que possível utilize os seletores CSS, porém evite o uso excessivo dos seletores por ID. 



Aula 6 - Melhorando a tag de imagem

Antes de começarmos um módulo novo, vamos aproveitar e realizar uma pequena alteração na nossa tag de imagem <img>. Hoje estamos utilizando assim: 

<img src='img/bicicletaria.jpeg'>

Vamos adicionar dois atributos para deixar essa tag mais completa:


  • alt : um texto alternativo que é exibido quando a imagem não é carregada.
  • title : um texto explicativo quando o usuário posiciona o cursor do mouse sobre a imagem.
<img src='img/bicicletaria.jpeg' 
alt='Uma bicicleta posiciona a frente de um quadro de uma montanha' 
title='Bicicletaria Pedal Forte'>

Vamos também resolver um problema com a exibição da imagem: Como estamos utilizando as dimensões da imagem (1200x307), sem especificar qual deve ser o tamanho na hora da exibição, temos duas situações: 


  • Se a tela for grande a imagem fica pequena :


  • Se a tela for pequena a imagem não é exibida totalmente:

Vamos adicionar mais um atributo que resolve o nosso problema: 

<img src='img/bicicletaria.jpeg' 
alt='Uma bicicleta posiciona a frente de um quadro de uma montanha'
title='Bicicletaria Pedal Forte'
width='100%'>

Podemos também utilizar o atributo height='' para definir a altura da imagem, porém no nosso caso já temos uma imagem que possui a altura que desejamos, além disso ao definir os dois atributos na mesma imagem podem ocorrer distorções no momento da exibição.


Adicione esses atributos na sua imagem e comente abaixo o resultado obtido:



Aula 7 - Melhorando a tag do corpo

Conseguimos ajustar a imagem para que o tamanho ocupe 100% da largura ( width ) da tela do navegador. Agora, sempre que a tela for aumentada ou diminuída nossa imagem será exibida proporcionalmente ao tamanho da tela. 

Agora precisamos melhorar a nossa tag <body> que não está permitindo que a imagem ocupe totalmente o espaço, ficando uma pequena borda na direita e na esquerda.

Veja a imagem abaixo:


Porque isso ocorre? 

Os navegadores estabelecem uma margem padrão e por isso existe um recou da imagem em ambos os lados. Temos que redefinir esse valor porque não queremos que exista nenhuma margem para  a tag <body>. Vamos então adicionar a margem que queremos agora:

body {
  background: #3b2f2f;
  color:white;
  font-family:tahoma;
  margin:0px;
}

Isso irá resolver o nosso problema, veja como ficou agora nossa página:


Agora temos nosso corpo <body> ocupando todo o espaço disponível no navegador. 

Qual a diferença entre utilizar margin:0px e margin:0 ? Pesquise e responda abaixo:



Aula 8 - Adicionando a tag meta viewport

Com a popularização dos smartphones foi necessário a incorporação de uma tag que renderizasse as páginas web para se obter uma boa experiência quando o usuário estivesse utilizando telas pequenas, principalmente os dispositivos móveis.

Antes do uso dessa tag os navegadores móveis renderizavam as páginas como se fosse desktops, forçando zoom e a rolagem lateral. 

O seu uso melhora a leitura e a navegação sem a necessidade de zoom manual.

Ela é colocada dentro da tag <head>. Veja abaixo os atributos necessários para o seu funcionamento:

<!DOCTYPE html>
<html lang="pt-BR">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Bicicletaria Pedal Forte</title>
    <link rel='stylesheet' href='css/estilo.css'>
  </head>
  <body>
  ..
  </body>
</html>

Os atributos utilizados são name (nome) e content (conteúdo) onde declaramos o nome viewport e o conteúdo com dois valores:


  • width= device-width : ajusta a largura para ser igual a largura da tela do dispositivo.
  • initial-scale = 1.0 : define o nível inicial de zoom (1.0 = sem zoom).
Utilize sempre esse padrão para a tag meta viewport, ela é a mais recomendada e aceita pela maioria dos navegadores.

Descreva abaixo como está o seu aprendizado até esse momento: 

  • Está conseguindo acompanhar os exemplos? 
  • Sua página está abordando todos os assuntos que estudamos até o momento?