Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
11
respostas

Parágrafos com relative

Boa noite, consegui executar o exercício com o before, porém não consegui entender porque colocando relative nos parágrafos fez o texto ficar por cima das aspas que esta com absolute. Achei que tivesse que colocar um z-index para esse comportamento.

11 respostas

Olá, Bruno! Tudo bem, cara? =)

De forma bem resumida, esse comportamento se deve à algo chamado de stack level. Mas que raios é esse stack level? Rs.

Podemos traduzi-lo como pilha de níveis, que é a forma como os elementos são "impressos" na tela... E isso acontece na ordem back-to-front.

Para entender isso, vou fazer uma analogia ao z-index, mas é apenas uma analogia... Vamos pensar nos valores 1, 2 e 3... Cada um desses valores corresponde à element:before, element e element:after, respectivamente. Ou seja, se não alterarmos o z-index de cada um desses elementos, o elemento com :before é o primeiro a ser impresso, acima dele ver o próprio elemento e, depois, o elemento com :after, sacou? =)

Espero ter ajudado! Mas (!) já sabe, né? Qualquer dúvida, estamos por aí. Rs...

Abraço e bons estudos,

Fábio

Olá Fábio, vc sempre me ajudando..rsrsrs

Então mas seguindo a sua analogia, os parágrafos deveriam vir já por padrão por cima das aspas, pois primeiro vem o :before(aspas) e depois o elemento (paragrafo), nao seria isso?

Bruno,

Exatamente! Todo elemento com :before deveria estar atrás do elemento, no seu caso, o parágrafo. =)

Fábio

Oi Fábio, mas no exercício , utilizei o :before para criar as apas, os parágrafos já estavam no html, neste caso as aspas devia ter ficado por traz, mas não foi o que ocorreu, ficou o contrario, as aspas é que ficou por cima 0_0

Bruno!

Acabei de dar uma olhada no código e vi que deixei uma coisa passar... O que eu lhe falei continua correto, mas não é o nosso caso. Rs.

Eu estava imaginando um código assim:

p:before {
    position: absolute;
}
p {
    position: relative;
}

Mas o que nós temos é algo assim:

.citacao-bio:before {
    position: absolute;
}
.citacao-bio > p {
    position: relative;
}

Desculpe a falta de atenção aqui... O que está acontecendo é que quando utilizando o posicionamento position:relative, é padrão ele ficar acima dos outros elementos, a menos que você altere o z-index... Era muito mais simples e rápido do que eu estava pensando previamente. Rs.

Desculpe, mesmo, a falta de atenção. Com todo esse rolo que eu devo ter causado na sua cabeça, deu para entender? Rs...

Fábio

Oi Fábio.kkkk fica tranquilo :)

Bom então neste caso, se eu tiver uma div e um paragrafo dentro dele, e eu colocar um position:relative no p ele ficaria por cima da div, seria essa a ideia?

solução!

Bruno,

Mais ou menos. Rs... No seu exemplo, se colocar um <p> dentro de uma <div>, ele já ficará por cima dela. Rs.

Mas podemos pensar assim:

<div>
    <span>"</span>
    <p>Conteúdo do parágrafo</p>
</div>

Dessa forma, o parágrafo estará abaixo, - literalmente, não em profundidade - do <span>. Mas se colocarmos um position: relative nele e alterarmos a posição, você verá que ele ficará acima do <span> - em profundidade. =)

Fábio

Oi Fábio, agora entendi perfeitamente, muito obrigado mais uma vez :)

abs

Bruno,

Perfeito! Qualquer coisa, estamos aí. =)

Abraços e bons estudos,

Fábio

Bom dia pessoal. estou com dúvidas nestas aspas. Gostaria de abrir e fechar ela no

e não no nome de quem citou.

Acabei utilizando o ."citacao-bio > p ::before" e "citacao-bio >p:after". Cosegui assim colocar as aspas no começo e fim do paragrafo, só que acabei perdendo o position absolute, fazendo ela ficar na frente do paragrafo. Além disso gostaria que as aspas do after ficassem para dentro do texto.

Outro detalhe que percebi, é que tanto no hover do odd como no focus do odd, as aspas do even ficam por cima do box-shadow gerado.

.citacao-bio:nth-of-type(odd):hover,
.citacao-bio:nth-of-type(odd):focus {
    transform: scale(1.2) rotate(5deg);
}

.citacao-bio:nth-of-type(even):hover,
.citacao-bio:nth-of-type(even):focus {
    transform: scale(1.2) rotate(-5deg);
}


.citacao-bio > p::before {
    content: '”';
    font-size: 10em;
    color: #bbb;
    line-height: 70%;
    position: absolute;
}

.citacao-bio > p::after {
    content: '”';
    font-size: 10em;
    color: #bbb;
    line-height: 70%;
    position: absolute;
}

.citacao-bio > p{
    position: relative;
}

Boa tarde, Renato! Tudo bem, cara? =)

Uma coisa que você pode tentar fazer é utilizar a propriedade z-index, para alterar a "profundidade" do elemento. Acredito que isso não deva ser difícil. =)

Além disso, tenta usar o position: absolute junto com top e left, ou right, para posicionar de acordo com o que você deseja. =)

Ahh, e só uma atençãozinha... Quando for postar uma dúvida, tenta abrir um novo tópico. Isso evita que as pessoas que estavam na discussão antes recebam um e-mail sobre um tópico que já havia sido resolvido, sacou? =)

Espero ter ajudado!

Abraço e bons estudos,

Fábio