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

Palavras pela página e "position: relative" no header

Boa tarde,

tinha feito o exercício de outra maneira, e quando fui replicar a resposta apresentada na solução, as palavras ficaram espalhadas por toda a página, pois na solução foi colocado o absoluto na classe "palavra-home".

Para resolver isso, retirei o position da classe "palavra-home" e coloquei um "position: relative" no header, e funcionou.

Deixei passar alguma coisa na solução? ou é isso mesmo?

Solução apresentada do Exercício

.palavra-home {
    font-family: "Shadows Into Light", cursive;
    font-weight: bold;
    color: #D5447E;
    position: absolute;
}

.eficiencia {
    top: 20%;
    left: 75%;
}

.boas-praticas {
    top: 70%;
    left: 20%;
}

.codigo-limpo {
    top: 45%;
    left: 10%;
}

.css3 {
    top: 50%;
    left: 30%;
}

.html5 {
    top: 40%;
    left: 80%;
}

.javascript {
    top: 10%;
    left: 60%;
}

.acessibilidade {
    top: 30%;
    left: 25%;
}

.responsivo {
    top: 15%;
    left: 15%;
}

.otimizacoes {
    top: 60%;
    left: 70%;
}

.agilidade {
    top: 10%;
    left: 30%;
}

.design {
    top: 35%;
    left: 65%;
}

Minhas alterações na solução do exercício:

header{
    position: relative;
}

.palavra-home{
    font-family: "Shadows Into Light", cursive;
    color: #D5447E;
}
2 respostas
solução!

Opa Daniel, tudo blz?

Então, esse esquema de position as vezes pode ser meio complicado mesmo, o que acontece é o seguinte, dá uma olhada no seguinte código que peguei do curso mesmo.

<header class="titulo-principal">
        <img class="foto-home" src="imagens/eu.jpg" alt="Foto de João da Silva">
        <h1>João da Silva</h1>
        <p class="subtitulo-principal">Desenvolvedor web</p>
        <ul class="palavras-home">
            <li class="palavra-home eficiencia">Eficiência</li>
            <li class="palavra-home boas-praticas">Boas práticas</li>
            <li class="palavra-home codigo-limpo">Código limpo</li>
            <li class="palavra-home css3">CSS3</li>
            <li class="palavra-home html5">HTML5</li>
            <li class="palavra-home javascript">JavaScript</li>
            <li class="palavra-home acessibilidade">Acessibilidade</li>
            <li class="palavra-home responsivo">Responsivo</li>
            <li class="palavra-home otimizacoes">Otimizações</li>
            <li class="palavra-home agilidade">Agilidade</li>
            <li class="palavra-home design">Design</li>
        </ul>
        <a class="banner-twitter" href="http://twitter.com/joaodasilva">Siga-me no Twitter</a>
    </header>

Aqui a gente tem que pensar o seguinte:

Nossas palavras ( as tags com a classe .palavra-home ) são filhas de qual tag?

São filhas tanto da tag

<ul class="palavras-home">

quanto da tag

<header>

Beleza, agora a gente quer que as nossas palavras se posicionem com relação à quem? ul ou header?

No caso, o header.

Então a gente faz o seguinte, coloca

.palavra-home {
    position: absolute;
}

Assim as nossas palavras ficam procurando algum pai pra se posicionar, como a gente quer posicionar elas com relação ao <header> a gente coloca

header {
    position: relative;
}

Pronto.

A ideia é a seguinte. Quando a gente elementos que estão com

position: absolute;

Eles procuram algum pai pra se posicionar. O primeiro pai que tiver com position relative ou absolute o nosso elemento se posiciona.

Nesse caso todos as nossas palavras estão com absolute e se posicionam com relação ao pai <header> que está com relative!

Bom, tendo tudo isso em mente no seu código final vc deveria ter:

.palavra-home {
    position: absolute;
    /* outras propriedades a mais aqui */
}
header {
    position: relative;
}

Pelo que eu vi na sua solução vc tirou o position: absolute; do .palavra-home. Isso é estranho, em algum lugar deve ter algum seletor CSS colocando position: absolute nas suas .palavra-home não?

Espero ter ajudado, qualquer coisa só dar um toque, abraços!

Entendi. Na verdade funcionou porque coloquei o absolute nas classes de cada palavra.

Obrigado.