Suponha que eu queira decorar links para certos tipos de arquivo usando uma imagem. Eu poderia declarar meus links como
<a href='foo.pdf' class='pdflink'>A File!</a>
então tem CSS como
.pdflink:after { content: url('/images/pdf.png') }
Agora, isso funciona muito bem, exceto se pdf.png
não for do tamanho certo para o texto do meu link.
Gostaria de poder dizer ao navegador para dimensionar a :after
imagem, mas não consigo encontrar a sintaxe certa. Ou é como imagens de fundo, onde o redimensionamento simplesmente não é possível?
ETA: Estou inclinado a: a) redimensionar a imagem de origem para o tamanho "correto", do lado do servidor e / ou b) alterar a marcação para simplesmente fornecer uma tag IMG em linha. Eu estava tentando evitar essas duas coisas, mas elas parecem ser mais compatíveis do que tentar fazer coisas puramente com CSS. A resposta à minha pergunta inicial parece ser "você pode classificar de fazê-lo, às vezes".
fonte
Respostas:
O ajuste
background-size
é permitido. No entanto, você ainda precisa especificar a largura e a altura do bloco.Veja a tabela de compatibilidade completa no MDN .
fonte
:after
nada. Não é suportado abaixo do IE8.width: 10px; height: 20px;
para ver a imagem.background-image
propriedade específica , o simplesbackground
não funcionará.:before
) eu também precisavaposition: absolute
, eleft: -10px
.Observe que o
:after
pseudoelemento é uma caixa que, por sua vez, contém a imagem gerada. Não há como estilizar a imagem, mas você pode estilizar a caixa.A seguir, é apenas uma idéia, e a solução acima é mais prática.
http://jsfiddle.net/Nwupm/
Desvantagens: você precisa conhecer as dimensões intrínsecas da imagem e isso deixa um espaço em branco, que não consigo me livrar do caixa eletrônico.
fonte
position: absolute
paratransform: scale(0.5)
poder realmente trabalhar. Eu também tive que colocarposition: relative
o elemento "pai" (o dono do:after
pseudo) por sanidade. Além disso, tive que adicionartranslate(-16px, -16px)
à minha transformação para posicionar o ícone 16x16 corretamente. Issoposition: absolute
também tem o benefício de eliminar o problema de espaço em branco.Como minha outra resposta obviamente não foi bem compreendida, aqui está uma segunda tentativa:
Existem duas abordagens para responder à pergunta.
Prático (apenas me mostre a maldita foto!)
Esqueça o
:after
pseudo-seletor e escolha algo comoTeórico
A pergunta é: você pode estilizar o conteúdo gerado ? A resposta é: não, você não pode. Houve uma longa discussão na lista de discussão do W3C sobre esse assunto, mas nenhuma solução até agora.
O conteúdo gerado é renderizado em uma caixa gerada e você pode estilizar essa caixa, mas não o conteúdo como tal . Navegadores diferentes mostram um comportamento muito diferente
(em http://lists.w3.org/Archives/Public/www-style/2011Nov/0451.html )
Da mesma forma, os navegadores mostram resultados muito diferentes em coisas como http://jsfiddle.net/Nwupm/1/ , onde mais de um elemento é gerado. Lembre-se de que o CSS3 ainda está no estágio inicial de desenvolvimento e esse problema ainda não foi resolvido.
fonte
Você deve usar o fundo em vez da imagem.
fonte
diplay: block;
não tem nenhum efeitopositionin também funciona de maneira muito estranha para os fundamentos de front-end, portanto, tenha cuidado
fonte
Aqui está outra solução (funcional): redimensione suas imagens para o tamanho desejado :)
você precisa que pdf.png tenha 20px * 10px para que isso funcione. Os 20px / 10px no css estão aqui para fornecer o tamanho do bloco, de modo que os elementos que vêm depois do bloco não sejam todos bagunçados com a imagem
Não se esqueça de manter uma cópia da imagem não processada no tamanho original
fonte
fonte
Você pode usar a
zoom
propriedade Verifique este jsfiddlefonte
Você pode alterar a altura ou a largura do elemento Antes ou Depois da seguinte maneira:
fonte
Eu usei essa largura de controle de tamanho de fonte
fonte
Atualmente, com o flexbox, você pode simplificar bastante seu código e ajustar apenas 1 parâmetro conforme necessário:
Agora você pode simplesmente ajustar a largura do elemento e a altura será ajustada automaticamente, aumentar / diminuir a largura até que a altura do elemento esteja no número necessário.
fonte
url(//placeimg.com/800/200/arch)
fonte