Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Por que de classes diferentes para aparente mesma coisa

no projeto da aula da professora temos um html:

<html>

<head>
    <title>Alura Plus</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="styles.css">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap" rel="stylesheet">
</head>

<body>
    <section class="principal container">
        <div class="container__caixa">
            <h1 class="container__titulo">Com o Combo+, você pode aproveitar a Alura+ e o Alura Língua por um preço
                único.</h1>
            <img src="img/Combo.png" alt="O combo+ é a junção do alura+ e o alura língua" class="container__imagem">
            <a href="www.alura.com.br" class="container__botao">Assine por 12x de R$ 120,00*</a>
            <a href="www.alura.com.br" class="container__botao botao_secundario">Assinar somente o Alura+</a>
            <p class="container__aviso">*O preço pode variar caso a assinatura seja feita em outros planos.</p>
        </div>
    </section>
</body>

</html>

E um CSS:

:root {
    --branco-principal: #FFFFFF;
    --cinza-secundario: #C0C0C0;
    --botao-azul: #167BF7;
    --cor-de-fundo: #00030C;
    --fonte-principal: 'Inter';
}

body {
    background-color: var(--cor-de-fundo);
    color: var(--branco-principal);
    font-family: var(--fonte-principal);
    font-size: 16px;
    font-weight: 400;
}

* {
    margin: 0;
    padding: 0;
}

.principal {
    background-image: url("img/Background.png");
    background-repeat: no-repeat;
    background-size: contain;
    align-items: center;
    text-align: center;
}

.container {
    height: 100vh;
    display: grid;
    grid-template-columns: 50% 50%;
}

.container__botao {
    background-color: var(--botao-azul);
    border-radius: 5px;
    padding: 1em;
    color: var(--branco-principal);
    display: block;
    text-decoration: none;
    margin-bottom: 1em;
}

.botao_secundario {
    background-color: transparent;
    border: 2px solid var(--branco-principal)
}

.container__aviso {
    font-size: 12px;
    color: var(--cinza-secundario);
}

.container__titulo {
    font-size: 28px;
    font-weight: 700;
}

.container__imagem {
    margin: 1em 0 2em 0;
}

.container__caixa {
    margin: 0 6em;
}

Ao que me parece a classe principal e container poderiam ser uma só abrangindo todas as propriedades e valores CSS, gostaraia de saber porque não é assim, tem algum propósito melhor para outro momento?

1 resposta
solução!

Oi, Rafael, tudo bem?

Essa é uma excelente pergunta! As classes principal e container estão no mesmo elemento <section>. Tecnicamente, você poderia colocar todas as propriedades do .container dentro da classe .principal e funcionaria igual.

A separação acontece por um motivo bem prático: reaproveitamento de código.

Pense assim, a classe .principal define o estilo único dessa seção específica, como a imagem de fundo e o alinhamento do texto.

Já a classe .container define um padrão de layout que pode ser útil em outras partes do site (100% da altura com um grid de duas colunas).

Imagine que, mais para frente, você queira criar outra seção com esse mesmo layout de duas colunas. Em vez de ter que reescrever o display: grid, height: 100vh, etc., em uma nova classe, você simplesmente adiciona a classe container no seu HTML, tipo: <section class="nova-secao container">.

Separar dessa forma deixa seu CSS mais limpo e muito mais fácil de dar manutenção. Se você decidir que todo container deve ter 3 colunas, você muda em um só lugar, e todas as seções que usam essa classe são atualizadas!

Fez sentido para você? É uma prática muito comum e que ajuda demais a organizar o projeto.

Espero ter ajudado! Bons estudos!

Bons estudos!

Sucesso

Imagem da comunidade