Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Espaços ocultos no html.

Olá pessoal, Considere o cabeçalho a baixo. No bloco nav do menu navegação, representado em azul. existes um espaço entre os elementos li, mesmo com reset.css e sem margem e padding. Em uma aula mais para frente o instrutor explicou que juntando "tirando as quebra de linhas" no Sublime text do código html, limpa esses espaços indesejados.

De fato resolve.

Espaços ocultos no html.

1º - Mas a pergunta é; porque acontece isso? E em quais elementos posso esperar um comportamentos desse tipo?

Outra questão de posicionamento.

2º - Para jogar o menu navegação para o lado direito, eu usei no seletor nav {margin-left: 300px;}, existe uma forma mais elegante de colar o menu no canto inferior direito do nosso header ?

Código html.


<!DOCTYPE html>

<html lang="pt-br">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width">
        <title>Barbearia Alura</title>

        <link rel="stylesheet" href="reset.css">
        <link rel="stylesheet" href="style.css">

        <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500&display=swap" rel="stylesheet">
    </head>

    <body>
        <header>
            <div class="caixa">
                <h1><img src="https://placehold.it/177x250" alt="Logo da Barbearia Alura"></h1>

                <nav>
                    <ul>
                        <li><a href="#">Home</a></li>
                        <li><a href="#">Produtos</a></li>
                        <li><a href="#">Contato</a></li>
                    </ul>
                </nav>
            </div>
        </header>
    </body>
</html>

Código css.

body {
    font-family: 'Montserrat', sans-serif;
    background: #f4f4f4;
}

header {
    background: #bbbbbb;
    padding:20px 0 0;
}

.caixa {
    position: relative;
    width: 940px;
    margin: 0 auto;
}

h1 {
    display: inline;
}

nav {
    display: inline-block;
    margin-left: 300px;

}

nav li {
    display: inline;
}

nav a {
    display: inline-block;
    background: #539be1;
    text-transform: uppercase;
    color: #000000;
    font-weight: bold;
    font-size: 22px;
    text-decoration: none;
    padding: 20px;
    border: 1px solid;
}

nav a:hover {
    color: #c78c19;
    text-decoration: underline;
}

Obrigado.

3 respostas

Fala ai Davilson, tudo bem? Esses espaços ocultos aparecem quando usamos o display: inline-block ou inline. Dai existe o truco de adicionar comentários entre os elementos, assim, a quebra de linha ficara comentada.

Isso porque os espaços são adicionados por conta da quebra de linha, ou seja:

<div class="container">
    <div class="box">1</div>
    <div class="box">2</div>
    <div class="box">3</div>
    <div class="box">4</div>
</div>

Se as box tiverem o display: inline-block vai haver o espaçamento entre eles da quebra de linha, se a gente deixar tudo em linha:

<div class="container">
    <div class="box">1</div><div class="box">2</div><div class="box">3</div><div class="box">4</div>
</div>

Os espaçamentos são removidos.

Uma maneira de não precisar se importar com isso é usar o Flexbox no lugar do display: inline ou display: inline-block.

Espero ter ajudado.

solução!

Oi Matheus Castiglioni,

Legal cara, entendi a questão do, display: inline ou display: inline-block. por essa, muito obrigado.

Se puder dar um dica na minha 2º dúvida, a do margin ...

Obrigado!

Magina Davilson, sempre que precisar não deixe de criar suas dúvidas.

Para jogar o menu navegação para o lado direito, eu usei no seletor nav {margin-left: 300px;}, existe uma forma mais elegante de colar o menu no canto inferior direito do nosso header ?

Teria sim, daria para usar aplicar o display: flex no header e combinar com justify-content: space-between.

Ou você poderia tentar aplicar um margin-right: auto no nav.

Vai depender muito de como está a estrutura do HTML atual e os estilos da página.

Obs: Desculpa não ter respondido, não tinha visto.

Espero ter ajudado.