Как установить размер SVG-изображения в: перед псевдо-классом?

Я хочу отобразить изображение в CSS :before элемент.

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

проблема в том, что height и width применяются к элементу, но SVG не масштабируется. Как применить размеры к фактическому элементу, созданному ранее?

Plnkr пример:https://plnkr.co/edit/UgryaObojs6PCU579oGY

2 ответов


вы можете использовать svg в качестве фона-image:

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

здесь пример

Также вы можете попробовать использовать этот:

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

большинство браузеров не поддерживают :after,:before на тегах img, но вы можете создать div С высотой и шириной и дать ему background

редактировать вы 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;
}