SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
29.12.2024

Como Usar :before para Imagens em CSS Sem Span?

Resposta Rápida

De fato, aplicar os pseudo-elementos :before e :after diretamente em tags <img> é impossível, pois elas são elementos substituídos no navegador. No entanto, essa limitação pode ser contornada usando um contêiner <div> como envoltório e atribuindo o pseudo-elemento a ele.

<div class="img-before"><img src="imagem.jpg" alt=""></div>
.img-before:before {
  content: "✓"; // Vamos marcar isso!
  position: absolute;
  top: 0; left: 0; // Posicione no canto!
}

.img-before {
  position: relative; // Define o pseudo-elemento relativo a este bloco
}

Além disso, existem outros métodos, como o uso de JavaScript/jQuery e outros elementos HTML para alcançar o resultado desejado.

Trabalhando com JavaScript/jQuery

Para adicionar um pseudo-elemento a uma imagem, você pode usar JavaScript/jQuery, que oferece uma maneira de adicionar um elemento <span> logo após <img>:

$('.target').after('<span class="overlay"></span>'); // Voilà, o elemento está aqui!

Esta é uma maneira simples e eficaz de adicionar conteúdo após a imagem.

Explorando Alternativas em HTML

Usando o Elemento <picture>

Surpreendentemente, o elemento <picture> suporta pseudo-elementos e pode ser uma excelente alternativa para <img>.

<picture> // A escolha é sua!
  <source srcset="imagem.webp" type="image/webp">
  <img src="imagem.jpg" alt="">
</picture>

Você pode aplicar :before e :hover::after ao elemento <picture>, permitindo efeitos de sobreposição elegantes.

Usando Contêineres <div>

Ao envolver <img> em um contêiner <div>, você ganha mais controle sobre conteúdos adicionais. Um contêiner pai pode abrigar tanto a imagem quanto sobreposições, facilitando o posicionamento.

A Propriedade Content em Pseudo-elementos

A propriedade content de um pseudo-elemento amplia o espaço para a sua criatividade, permitindo que você insira imagens e textos, o que é ótimo para adicionar pequenos ícones ou conteúdo multimídia.

Compatibilidade com Diversos Navegadores

Técnicas de Sobreposição

Usar :hover::after permite criar sobreposições de imagem ao passar o cursor, reduzindo a necessidade de adicionar elementos extras no código HTML.

Problemas de Compatibilidade

Não se esqueça das versões mais antigas dos navegadores, como Internet Explorer 8/9, que podem complicar a tarefa. É melhor usar métodos que sejam universais entre diferentes navegadores para garantir ampla compatibilidade.

Recursos e Exemplos Práticos

Exemplo com Sobreposição jQuery

Teste sua solução em diferentes navegadores para garantir que as sobreposições funcionem corretamente.

Recursos Externos Úteis

Explore fontes autorizadas como MDN e CSS-Tricks para dominar as abordagens de implementação e ver exemplos de código.

Visualização em Ação

Demonstrações no jsFiddle fornecerão exemplos em tempo real de como suas sobreposições funcionam, permitindo uma melhor compreensão de seus princípios.

Limitações de Navegadores Antigos

Realize pesquisas para entender as peculiaridades de navegadores mais antigos que podem ter limitações ao usar certas técnicas.

Visualização

Imagine que sua TV (🖥️) simboliza o elemento img.

Você pressiona o botão vermelho do controle remoto (🔴), esperando que a faixa "Próximo Programa" apareça antes do início do show.

Mas, alas!

🖥️ + 🔴 = [(?)] E nada acontece!

Assim como a TV, o img só exibe o que lhe é fornecido, sem capacidade de adicionar conteúdo antes ou depois. Em contraste, o div se comporta como uma tela com um tuner de cabo conectado, capaz de exibir a faixa "Próximo Programa".

Materiais Úteis

  1. ::before - CSS: Cascading Style Sheets | MDN — Seu guia para usar ::before.
  2. Selectores Nível 4 — Os mais recentes padrões do W3C sobre ::before.
  3. ::before / ::after | CSS-Tricks — Aprendendo com exemplos claros de ::before e ::after.
  4. Can I use... Tabelas de suporte para HTML5, CSS3, etc — Tabelas de compatibilidade de navegadores para ::before.
  5. CSS ::before Selector — Um guia introdutório para o seletor ::before.
  6. ::before | Codrops — Uma referência detalhada sobre ::before.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!