css 如何在:before伪类中设置SVG图像的大小?

ygya80vv  于 2023-04-01  发布在  其他
关注(0)|答案(5)|浏览(226)

我想在CSS :before元素中显示一个图像。

.withimage:before {
  content: url(path/to/image.svg);
  display: block;
  height: 20px;
  width: 20px;
}

问题是,heightwidth应用于元素,但SVG没有缩小。我如何将大小应用于之前创建的实际元素?
计划示例:https://plnkr.co/edit/UgryaObojs6PCU579oGY

inn6fuwd

inn6fuwd1#

您可以使用svg作为background-image:

.withimage:before {
  content: "";
  display:block;
  height:125px;
  width:125px;
  background-size: 125px 125px;
  background-image: url(test.svg);
  background-repeat: no-repeat;
}

这里是example
你也可以尝试使用这一个:

.withimage:before {
  content: url("data:image/svg+xml; utf8, <svg.. code here</svg>");
    display:block;
    height:20px;
    width:20px;
}
w7t8yxp5

w7t8yxp52#

Scale transform对我很有用:

::before {
    content: url(path/to/image.svg); // source image is 24px wide
    transform: scale(0.5);           // will be rendered 12px wide
  }
cyvaqqii

cyvaqqii3#

有时候我们出于某些原因不想使用背景图像。我遇到了和你一样的问题,无论SVG的宽度和高度如何,它都不会生效。原因是SVG缺少一个viewBox。
我只是添加了viewBox ='0 0 16 16'在内容和violá!

kmb7vmvb

kmb7vmvb4#

大多数浏览器不支持:after:before的img标签,但你可以创建一个div的高度和宽度,并给予它一个background
Edit you Plunker

/* Styles go here */
.withimage:before {
  content:"";
  background: url(test.svg);
  background-size: cover;
  display: block;
  width:20px;
  height: 10px;
}
.withimage{
  background: pink;
  height: 100px;
  width: 100px;
}
qojgxg4l

qojgxg4l5#

您可以直接编辑SVG:
〈svg width=“20px”height=“20px”

相关问题