1
resposta

[Dúvida] Minha estilização possui algum problema que não consigo identificar.

Ao definir um padding para uma ancora dentro de uma div, percebi que ela passou um pouco da margem, como se estivesse sobrepondo o elemento pai, algo estranho pois defini o box-sizing como border-box.

Meu HTML:

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <!-- FONTES DO GOOGLE -->
    <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;500;600;700&display=swap" rel="stylesheet">

    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">

    <title>OptimusTech</title>
</head>
<body>
    <header class="header">
        <nav class="navbar">
            <div class="navbar__">
                <img src="assets/logo.png" alt="Logo OptimusTech" class="navbar__logo">
                <h1 class="navbar__title">OptimusTech</h1>
            </div>

            <div class="navbar__menu">
                <ul class="navbar__menu__list">
                    <li class="navbar__menu__list__item"><a href="#" class="navbar__menu__list__item__btn">Home</a></li>
                    <li class="navbar__menu__list__item"><a href="#" class="navbar__menu__list__item__btn">Produtos</a></li>
                    <li class="navbar__menu__list__item"><a href="#" class="navbar__menu__list__item__btn">Recursos</a></li>
                    <li class="navbar__menu__list__item"><a href="#" class="navbar__menu__list__item__btn">Sobre nós</a></li>
                </ul>
            </div>

            <!-- NO FIGMA APARECE UMA LOGO POREM O EXPORT NÃO FUNCIONA.
            DEFINI APENAS UMA DIV COM AS MESMAS PROPORÇÕES DA LOGO! -->
            <div class="navbar__logo2"></div> 

            <div class="navbar__btn">
                <a href="#" class="navbar__btn__btn">Entrar</a>
                <a href="#" class="navbar__btn__btn2">Cadastrar</a>
            </div>
        </nav>
    </header>
    
</body>
</html>

Meu CSS Global:

@import url('components/navbar.css');

:root {
    --primary-color: #3A404E;
    --secondary-color: #667085;

    --white: #FFFFFF;

    --bg-btn: #8E2424;
}

* {
    font-family: 'Inter', sans-serif;
    font-size: 16px;
    font-weight: 400;

    margin: 0;
    padding: 0;

    box-sizing: border-box;
}

Meu CSS do navbar:

.header {
    padding: 1.125rem 5rem;
    border: 1px solid blue;
}

.navbar {
    display: flex;
    align-items: center;

    padding: 0 2rem;

    width: 100%;
    height: 100%;
    border: 1px solid red;
}

.navbar__ {
    display: flex;
    align-items: center;
}

.navbar__logo {
    width: 27px;
    height: 27px;
}

.navbar__title {
    padding-left: .5rem;
    font-size: 18px;
    font-weight: 500;
    color: var(--primary-color);
}

.navbar__menu {
    margin-left: auto;
}

.navbar__menu__list {
    display: flex;
    list-style-type: none;
}

.navbar__menu__list__item__btn {
    text-decoration: none;
    font-weight: 500;
    color: var(--secondary-color);

    padding-right: 2rem;
}

.navbar__logo2 {
    width: 142px;
    height: 32px;
    margin: 0 auto;
}

.navbar__btn {
    margin-left: auto;
    gap: .5rem;
}

.navbar__btn__btn {
    color: var(--secondary-color);
    font-weight: 500;
    text-decoration: none;

    padding: .625rem 1.125rem;
}

.navbar__btn__btn2 {
    color: var(--white);
    font-weight: 500;
    text-decoration: none;

    background-color: var(--bg-btn);
    box-shadow: 0px 1px 2px 0px rgba(16, 24, 40, 0.05);
    border-radius: 8px;

    padding: 2.625rem 1.125rem;
}

Percebi o problema quando coloquei o ultimo padding do meu codigo CSS do navbar. Era pra ser apenas .625rem em vez de 2.625rem, porém fiquei intrigado com essa situação e estava tentando resolver, porém sem sucesso.

As bordas coloquei para me auxiliar visualmente.

Detalhe: os códigos CSS estão em arquivos diferentes porém importei no meu arquivo global. A titulo de teste também tentei definir um seletor global contendo apenas o box-sizing como border box no meu arquivo CSS do navbar mas sem sucesso.

1 resposta

Olá Caio! Tudo ok contigo?

Eu testei aqui o seu projeto e consegui ver o comportamento mencionado na descrição do seu tópico, o último botão, realmente estava saindo dos limites. Isso aconteceu devido ao valor alto do padding que você adicionou, e mesmo com a adição do box-size: border-box, o tamanho de um componente filho pode ultrapassar o de um elemento pai, visto que quem está controlando isso é o desenvolvedor. E como você já mencionou, uma solução para esse caso é ajustar o padding da âncora para não ultrapassar a margem da div. No seu código CSS do navbar, você definiu o padding da classe .navbar__btn__btn2 como padding: 2.625rem 1.125rem;, mas o valor correto deveria ser padding: .625rem 1.125rem;. Como já mencionado. Portanto, a solução é mudar padding: 2.625rem 1.125rem; para padding: .625rem 1.125rem;. Após fazer essa correção, o padding da âncora não irá ultrapassar a margem da div.

Se precisar de algo, conte com a comunidade de fórum!

E eu estarei por aqui também, dificuldades, é só me dizer.

Abraços e bons estudos!