假设我想用图像装饰指向某些文件类型的链接。我可以声明我的链接为

<a href='foo.pdf' class='pdflink'>A File!</a>

然后有CSS

.pdflink:after { content: url('/images/pdf.png') }

现在,这工作得很好,除非pdf.png的大小不适合我的链接文本。

我希望能够告诉浏览器缩放:after图像,但我无法找到正确的语法。或者这就像背景图像一样,无法调整大小?

ETA:我倾向于a)将源图像大小调整为“正确的”大小,服务器端和/或b)更改标记,简单地内联提供IMG标记。我试图避免这两件事,但他们听起来会更兼容,而不是试图做纯粹的CSS的东西。我最初的问题的答案似乎是“你有时可以做到”。


当前回答

是的,最初的问题是八年前提出的,但它实际上与今天有关,因为它一直都是。现在,关于这个问题,我已经从一个柱子到一个柱子,大约一个星期了::之后,它把我逼疯了。

从这个页面,以及其他关于这个主题的页面,我终于把它放在一起,并在伪标签中缩小了图像的大小。

colnav只是我的容器类,它拥有一个< UL >和< LI >的标签集,里面有一组< a hrefs。

下面是代码(完整)

.colnav李。连接按钮a:悬停:前{ 背景图片:url(/图片/ fleur-de-lis.png); Background-size: 90px 20px; 平铺方式:不再重演; 宽度:130 px; 高度:20 px; margin-left: -120 px; margin-top: 3 px; 变换:规模(1.5); 内容:“”; 位置:绝对的; }

图像文件是120 x 80,而图片被压缩到90x 20,然后它非常适合html href标签后面,所有这些都与最后的绝对语句位置结合在一起。

其他回答

你应该使用背景而不是图像。

.pdflink:after {
  content: "";
  background-image:url(your-image-url.png);
  background-size: 100% 100%;
  display: inline-block;

  /*size of your image*/
  height: 25px;
  width:25px;

  /*if you want to change the position you can use margins or:*/
  position:relative;
  top:5px;

}

现在有了flexbox,你可以大大简化你的代码,只需要调整1个参数:

.pdflink:after {
    content: url('/images/pdf.png');
    display: inline-flex;
    width: 10px;
}

现在你可以调整元素的宽度,高度会自动调整,增加/减少宽度,直到元素的高度是你需要的数字。

你可以像这样改变Before或After元素的高度或宽度:

.element:after {
  display: block;
  content: url('your-image.png');
  height: 50px; //add any value you need for height or width
  width: 50px;
}

允许调整背景尺寸。但是,您仍然需要指定块的宽度和高度。

.pdflink:after {
    background-image: url('/images/pdf.png');
    background-size: 10px 20px;
    display: inline-block;
    width: 10px; 
    height: 20px;
    content:"";
}

请参见MDN上的完整兼容性表。

还:块;没有任何影响

根据前端的基本原理,Positionin也会非常奇怪,所以要小心

body:before{ 
    content:url(https://i.imgur.com/LJvMTyw.png);
    transform: scale(.3);
    position: fixed;
    left: 50%;
    top: -6%;
    background: white;
}