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

Dúvida em relação a utilização do text-indent e dos positions

Bom dia, no exercício 5 da aula 9 do curso "HTML5 e CSS3-2" foi pedido para aparecer uma mensagem quando o mouse ou o foco do teclado estivesse em cima dos ícones das redes sócias, porém com a cor de fundo e a letra personalizada, o que inviabilizava a utilização do atributo title.

Na execução do exercício foi utilizado atributos customizados, o que não foi problema para mim. As ícones das redes sociais foram posicionados colocando imagens pelo CSS e no HTML ficou somente o nome, que foi tirado da tela com o text-indent:-999999px;.

O enunciado desse exercício diz o seguinte: "Observe que, como usamos a propriedade text-indent para fazer o image replacement nos ícones das redes sociais, precisamos desativar esse text-indent no pseudoelemento e tirar o pseudoelemento do fluxo do documento"; eu não entendi o porque que ao retirar o text-indent as palavras que tinham sido retiradas com ele não voltam à tela.

Não entendi também a retirada do pseudoelemento do fluxo do documento, que na resolução foi feita utilizando o position mas não ficou muito claro.

Em relação a essa ultima dúvida, na resolução do professor ele escreveu assim: "O texto ainda não vai aparecer pois precisamos tirá-lo do fluxo do link que o text-indent impõe.

Então definimos o posicionamento do link como relativo, para que ele sirva de referência para o pseudoelemento, e o posicionamento do pseudoelemento como absoluto.", e não ficou claro o que era o "fluxo do link que o text-indent impõe".

Desculpa se minha pergunta ficou muito grande, e que eu tentei ser o mais claro possível.

3 respostas
solução!

Oi Leonardo, tudo bem? Dúvida grande não é um problema, só lembra de dar uns enters para que ela fique separadinha em trechos mais tranquilos de ler, tá bem?

Vamos lá, o pseudo-elemento no geral, obedece as mesmas regras que você aplicar no elemento em si, lembra que ele fica dentro do elemento antes e depois do conteúdo do elemento, Então temos três partes: Pseudo-elemento antes do conteúdo do element, conteúdo do elemento e pseudo-elemento depois do conteúdo. Pegou a ideia?

A propriedade text-indent neste caso, será aplicada tanto para o conteúdo do elemento, quando ao conteúdo do pseudo-elemento. Por isso é preciso remover o text-indent do pseudo-elemento.

Nada disso altera o fluxo dos elementos. No curso 1, você aprendeu que, conforme o browser vai lendo o HTML, ele vai posicionando os elementos na ordem que ele aparece. Elemento abaixo ou ao lado do elemento anterior. Isso é o fluxo.

A propriedade position é uma das propriedades onde é possível mudar o fluxo do elemento. Você move ele pra outro lugar diferente do seu posicionamento natural na página.

Como o pseudo-elemento está dentro do elemento, as regras de posicionamento do elemento impactam no mesmo, text-indent, position, margin, etc. Entende?

Então, o que foi que aconteceu resumidamente?

Você tinha um link com image-replacement. AI você adicionou pseudo-elementos para mostrar conteúdo extra. OK? Só que os pseudo-elementos estão sob regras do image-replacement justamente por que eles ficam dentro dos links, como se fossem tags filhas. Então você desfaz o image-replacement para eles e posiciona fora do seu fluxo natural para que apareçam exatamente onde você quer que apareçam.

Você só os remove do fluxo para posicionar de forma customizada. Exatamente acima do elemento, de forma centralizada por exemplo. Caso você não faça isso, eles vão aparecer naturalmente em dois cantos: Parte superior esquerda ou parte inferior direita (antes ou depois do conteúdo da tag).

O ponto é: A tag não "tem" conteúdo, ele foi movido para longe com o text-indent.

Deu pra entender?

Cara entendi sim. Muito obrigado pela explicação, ficou bem clara e detalhada.

Fico feliz em saber disso Leonardo! Espero poder ajudar nas próximas! Abraço!