E que tal um desafio? Que tal aplicar o que você já viu aqui, de novo na nossa página inicia? Para começar, tente importar o nosso cabeçalho e rodapé para a página inicial, alguns conflitos vão aparecer e a melhor forma de aprender é lidando com eles.
Eu topei o desafio e a minha estratégia para não quebrar a página inicial foi simples.
No arquivo index.html, dentro do body:
- agrupei todo conteúdo existente dentro de um elemento main (apenas removi o elemento
<header></header>
, mas mantive oh1
que estava dentro). - inseri o conteúdo do header, copiado do arquivo produtos.html, acima de
<main>
. - inseri o conteúdo do footer, copiado do arquivo produtos.html, abaixo de
</main>
.
- agrupei todo conteúdo existente dentro de um elemento main (apenas removi o elemento
No arquivo index.html, dentro do head, eu incluí as referências aos arquivos reset.css e produtos.css, para a formatação do cabeçalho e do rodapé. Além disso, eu movi a referência ao arquivo CSS específico da Home (o arquivo style.css) para que ficasse por último, logo abaixo das referências aos outros dois arquivos CSS citados. Levando-se em consideração que a ordem importa, o último arquivo referenciado, style.css, que é específico da Home, poderia sobrescrever o que fosse necessário.
Para desabilitar as alterações impostas pelo reset.css e pelo produtos.css apenas no conteúdo principal, ou seja, no conteúdo do
<main>
, eu fui ao style.css, usei um seletor para o elemento main e incluí uma regra para reverter toda alteração que eventualmente pudesse ter sido herdada dos outros arquivos CSS – reset.css produtos.css – como, por exemplo, o tamanho da fonte no elemento<h1>
.
main {
all: revert;
}
Achei que tudo funcionaria, mas o conteúdo dentro do main permaneceu quebrado, diferente da formatação original provida apenas pelo arquivo style.css. Percebi que o all: revert
não funcionou.Então, pesquisei um pouco mais e quando usei um seletor com * em conjunto com main, consegui resolver o problema: a formatação original dos elementos foi restabelecida (o par propriedade/valor all: revert
foi aplicado, funcionou) e a formatação do conteúdo do main foi dada apenas pelas regras contidas no style.css.
main * {
all: revert;
}
A minha dúvida é: se o CSS tem efeito cascata, os elementos dentro da tag main (os elementos filhos) não deveriam ter seus estilos revertidos ao original apenas com o seletor main {}
? Por que foi necessário o seletor main * {}
para que isso ocorresse?
O meu index.html (funcionando) ficou assim:
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Barbearia Alura</title>
<link rel="stylesheet" href="reset.css">
<link rel="stylesheet" href="produtos.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<div class="caixa">
<h1><img src="logo.png"></h1>
<nav>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="produtos.html">Produtos</a></li>
<li><a href="contato.html">Contato</a></li>
</ul>
</nav>
</div>
</header>
<main>
<h1 class="titulo-principal">Barbearia Alura</h1>
<img id="banner" src="banner.jpg">
<div class="principal">
<h2 class="titulo-centralizado">Sobre a Barbearia Alura</h2>
<p>Localizada no coração da cidade a <strong>Barbearia Alura</strong> traz para o mercado o que há de melhor
para o seu cabelo e barba. Fundada em 2019, a Barbearia Alura já é destaque na cidade e conquista novos
clientes a cada dia.</p>
<p id="missao"><em>Nossa missão é: <strong>"Proporcionar auto-estima e qualidade de vida aos
clientes"</strong>.</em></p>
<p>Oferecemos profissionais experientes e antenados às mudanças no mundo da moda. O atendimento possui
padrão de excelência e agilidade, garantindo qualidade e satisfação dos nossos clientes.</p>
</div>
<div class="beneficios">
<h3 class="titulo-centralizado">Benefícios</h3>
<ul>
<li class="itens">Atendimento aos Clientes</li>
<li class="itens">Espaço diferenciado</li>
<li class="itens">Localização</li>
<li class="itens">Profissionais Qualificados</li>
</ul>
<img src="beneficios.jpg" class="imagembeneficios">
</div>
</main>
<footer>
<img src="logo-branco.png">
<p class="copyright">© Copyright Barbearia Alura - 2019</p>
</footer>
</body>
</html>
O meu style.css (funcionando) ficou assim:
main * {
all: revert;
}
#banner {
width:100%;
}
.principal{
background: #CCCCCC;
padding: 30px;
}
.titulo-principal {
padding-left: 20px;
}
.titulo-centralizado {
text-align: center
}
p {
text-align: center;
}
#missao {
font-size: 20px
}
em strong {
color: #FF0000;
}
.itens {
font-style: italic
}
.beneficios {
background: #FFFFFF;
padding: 20px;
}
ul {
display: inline-block;
vertical-align: top;
width: 20%;
margin-right: 15%;
}
.imagembeneficios {
width: 50%;
}