【问题标题】:How style an inline SVG within a pseudo-element ::before & ::after?如何在伪元素 ::before 和 ::after 中设置内联 SVG 的样式?
【发布时间】:2021-09-04 00:10:31
【问题描述】:

我正在尝试在伪元素中设置 SVG 样式。

p::before {
  content: url("data:image/svg+xml;charset=UTF-8,<svg xmlns='http://www.w3.org/2000/svg' class='svg-check' viewBox='0 0 20 20'><path fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z' clip-rule='evenodd' /></svg>");
  display: inline-block;
  height: 2rem;
  width: 2rem;
}

.svg-check {
  fill: green;
}
<div>
  <p>First</p>
  <p>Second</p>
</div>

CodePen Sample

我的问题是:

  1. 这可能吗?
  2. 如果是,怎么做?
  3. 如果没有,有没有其他方法 达到同样的效果?

【问题讨论】:

  • 1. No 2. No 3. 为每次更改重新创建内容
  • @Danny'365CSI'Engelman 你能解释一下第三点吗?我对 html、css 很陌生。

标签: html css svg pseudo-element


【解决方案1】:

关闭,为content 分配一个空字符串,然后使用背景图像。看到这个article

p::before {
  content: '';
  display: inline-block;
  height: 2rem;
  width: 2rem;
  margin-right: 1rem;
  vertical-align: middle;
  background: url(https://cdn4.iconfinder.com/data/icons/basic-business-1/36/Checkmark_right_icon-512.svg) no-repeat;
  background-size: contain;
}     
<div>
  <p>First</p>
  <p>Second</p>
</div>

【讨论】:

  • 我可以用 CSS 改变这张图片的颜色吗?我想用主题更改 ::before 元素的颜色。
  • @G_Basak 添加了链接。
  • @G_Basak 使用掩码:stackoverflow.com/a/67027543/8620333
猜你喜欢
  • 2014-01-28
  • 2021-11-03
  • 2017-01-26
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
  • 2018-08-07
  • 2019-05-28
相关资源
最近更新 更多