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

[Dúvida] Dúvida sobre posicionamento dos itens de uma página

Fala galera... como estou iniciando em programação, tenho muitas dúvidas. Então lá vai uma.

Estou usando os conhecimentos dessas aulas iniciais para praticar o html criando uma página de apresentação minha. Está bem no início mesmo.

No caso, estou usando o layout da página de produtos da Barbearia Alura como exemplo para formatar para minha página.

Estou utilizando os link para redirecionar quem acessar a página para minhas redes sociais e agora vem a minha dificuldade.

Quero por meu nome no centro da página em forma de título

, no caso é uma adição ao html da aula e estou testando alguns parâmetros no css, mas ainda não consegui por no centro da página.

Segue o meu código html e css e um print de como está a páginae espero que possam me orientar.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

<header>
            <!--<img src="/imagens/topo.jpg" alt="Topo do site">-->
            <div class="topo">
                <img src="imagens/celo.jpg" alt="Minha foto">
                <h1>Marcelo da Costa Lemos - Profissional de T.I</h1>
                <nav>                   
                    <ul>
                        <li><a href="curriculo.html">Currículo</a></li>
                        <li><a href="https://www.linkedin.com/in/marcelo-lemos-353598240/">Linked In</a></li>
                        <li><a href="https://github.com/lemoscelo86">GitHub</a></li>
                    </ul>
                </nav>
            <div>

        </header>
header{
    background: #BBB;
    padding: 20px 20px;
}

.topo{
    position: relative;
    margin: 0 auto;
}

nav{
    position: absolute;
    bottom: 0;
    right: 5%;
}

h1{
    display: inline;
    font-size: 30px;
}

nav li{
    display: inline;
    margin: 0 0 0 20px;
}

nav a {
    text-transform: uppercase;
    color: #000;
    font-weight: bold;
    font-size: 22px;
    text-decoration: none;
}

nav a:hover{
   color: #C78C19;
}
3 respostas

Oii Marcelo, tudo certo?

A primeira dica que gostaria de te dar é que percebi que faltou a / no fechamento da sua div class="topo". É sempre bom se atentar ao fechamento das tags porque muitas vezes perdemos um bom tempo “apanhando” com algo que não está funcionando e acabamos descobrindo que na verdade foi um fechamento de tag que faltou.

Já para posicionarmos o seu nome no centro: existem muitas formas de se posicionar elementos com CSS, por exemplo, utilizar a propriedade margin, empurrando o elemento até centralizar. Esse método funciona, mas não é tão recomendável, por não ser tão flexível. Já existem maneiras mais eficientes de posicionar elementos, como o Flexbox, uma das formas mais práticas e fáceis de alinhar elementos que temos atualmente e que acredito que se encaixa bem na sua situação.

Para que funcione, começamos colocando todos os elementos do seu header que você quer que fiquem lado a lado dentro de divs individuais, desse jeito:

<div class="topo">

        <div><img src="imagens/celo.jpg" alt="Minha foto"></div>

        <div><h1>Marcelo da Costa Lemos - Profissional de T.I</h1></div>

        <div>
            <nav>                   
                <ul>
                    <li><a href="curriculo.html">Currículo</a></li>
                    <li><a href="https://www.linkedin.com/in/marcelo-lemos-353598240/">Linked In</a></li>
                    <li><a href="https://github.com/lemoscelo86">GitHub</a></li>
                </ul>
            </nav>
        </div>

    </div>

Perceba que eu coloquei tanto sua imagem, como seu nome e a barra de navegação dentro de divs separadas.

Agora no arquivo .css, começo alterando a div class="topo", que é a “mãe” das divs que separamos anteriormente para cada elemento, portando o que alteramos nela vai determinar como cada um dos elementos vai se posicionar:

.topo{
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: relative;
    margin: 0 auto;
}
nav{
    bottom: 0;
    right: 5%;
}

Aqui eu adicionei um display:flex, justamente para manipularmos o posicionamento do que está dentro da div topo e em seguida coloquei um justify-content: space-between;, que vai alinhar os 3 elementos: imagem, título e barra de navegação para que fiquem distribuídos com uma distância entre eles no header. Depois coloquei um align-items:center; que posiciona todos os elementos na mesma linha horizontal. Por fim eu retirei o position:absolute da nav, pois estava impedindo que ela se alinhasse. E com isso todos os seus elementos do header vão ficar alinhados e o título centralizado.

Caso você queira explorar mais as opções de alinhamento com CSS, deixo as seguintes recomendações de conteúdo:

Espero ter solucionado sua questão.

Caso ainda tenha alguma dúvida, me coloco à disposição!

Um abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Obrigado... vou estudar atentamente isso que você explicou e testar!!!

solução!

Perfeito Marcelo, qualquer dúvida estamos à disposição!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!