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

Nao entendi como o meu funcionou sem o display:none

O meu codigo funcionou sem eu utilizar o display:none, mas nao entendi como. O que aconteceu?

HTML

<section class="secao-inicio blog">
            <h2>Blog</h2>
            <small>Últimos posts</small>
            <ol>
                <li>
                    <a href="blog.html">O essencial de design responsivo</a>
                    <p class="inicio-post">Design responsivo tem ganho cada vez mais atenção como técnica de desenvolvimento de páginas web para dispositivos móveis. Mas como começar?</p>
                </li>
                <li>
                    <a href="blog.html">Por que fazer páginas acessíveis?</a>
                    <p class="inicio-post">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Nostrum nobis eaque magnam molestias quae animi obcaecati ullam alias nisi. At, accusamus quaerat fugit excepturi accusantium omnis vero? Praesentium, quidem nobis.</p>
                </li>
                <li>
                    <a href="blog.html">JavaScript não obstrusivo</a>
                    <p class="inicio-post">Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam corrupti minima culpa voluptatem iusto, ut debitis laboriosam, aliquam, unde veniam voluptates. Nostrum, maxime id ducimus quod labore vero sunt necessitatibus.</p>
                </li>
            </ol>
            <a class="botao-index" href="blog.html">Veja mais</a>
        </section>

CSS

/* post recente */

.blog li:hover {
    position: relative;
    background-color: #fff;
    display: inline-block;
    width: 50ch;
    height: 1rem;
}

.blog a:hover,
.blog a:focus {
    background-color: #F2FFFC;
    color: #F26;
}

.inicio-post {
    width: 60ch;
    height: 9rem;
    position: absolute;
    background-color: #fff;
    color: #000;
    top: -200%;
    left: 100%;
    padding: 2rem;
    box-sizing: border-box;
}
6 respostas

Fala aí Tiago, tudo bem? O código funcionou por causa do position: absolute, top: -200% e left: 100%, dessa maneira, eles tiraram o elemento da tela.

Espero ter ajudado.

Certo, Matheus. Mas, que propriedade no .blog li:hover faz com que ele posicione automaticamente ao lado do elemento <a>?

Matheus, tava aqui vendo e testando meu codigo. O position: absolute, top: -200% e left: 100% seria para posicionar o elemento <p class="inicio-post"> de forma que fique alinhado com o background-color: #fff e width: 50ch do seletor .blog. li:hover para o elemento <a href="blog.html"> e nao para ocultar. O display: none que seria de fato para ocultar, mas nao esta sendo necessario no meu codigo e eu nao entendo como isso ocorre.

solução!

Fala aí Tiago, tudo bem? Vamos por partes:

Certo, Matheus. Mas, que propriedade no .blog li:hover faz com que ele posicione automaticamente ao lado do elemento ?

Acredito que seja o position: relative, pois, antes o position: absolute era calculado em relação a página e não ao seu elemento pai, com o relative ele muda essa base de cálculo para o pai.

O position: absolute, top: -200% e left: 100% seria para posicionar o elemento

de forma que fique alinhado com o background-color: #fff e width: 50ch do seletor .blog. li:hover para o elemento e nao para ocultar.

Exatamente, mas, ele não está ocultando, ele está retirando o elemento da página.

Imagine que você tem uma quadrado de 400x400.

Tudo que estiver dentro dessa dimensão será visualizado na tela, se por acaso a gente posicionar um elemento X na posição 450, ele vai estar fora da tela, se ele esta fora da tela o mesmo não pode ser visto.

É mais ou menos isso que esta acontecendo, claro que foi apenas um exemplo, mas, a ideia é mais ou menos essa.

Espero ter ajudado.

Se eu entendi corretamente, o elemento <p class="inicio-post"> com a propriedade position: absolute tem como referencia a pagina e por isso ele fica fora do campo de visao do monitor devido ao posicionamento dado no top: -200% e left: 100%. Mas, quando eu coloco a seta do mouse em cima dele, o elemento <p class="inicio-post"> passa ter como referencia o <a href="blog.html"> devido a propriedade position: relative no seletor .blog li:hover, certo? Desta forma, o elemento <p class="inicio-post"> aparece quando eu coloco o mouse sobre o elemento <a href="blog.html">.

Exatamente Tiago.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software