【问题标题】:Can you modify a loaded SVG background-image with CSS?你能用 CSS 修改加载的 SVG 背景图像吗?
【发布时间】:2012-11-03 17:16:00
【问题描述】:

我们首次将 SVG 用于基于 HTML5 的移动应用精灵文件(它们使处理视网膜和其他屏幕尺寸差异变得容易)。

我知道生成的 SVG 可以直接操作(因为它们是文本文件),但可以通过 CSS 或脚本修改 SVG 资产(在这种情况下,是通过 CSS 加载的背景图像)吗?

例如,我们可以加载一个全黑的 SVG 对象,然后将其更改为白色吗?

【问题讨论】:

标签: css svg background-image


【解决方案1】:

如果 SVG 文件作为图像加载(通过imgbackground-image),您将无法访问它的 DOM。你也不能通过 CSS 设置样式。

如果您打算进行此类操作,您应该将 SVG 附加到 div。您仍然应该能够对该 div 执行类似精灵的操作。您将能够通过 CSS 或 javascript 设置样式。


SVG 应该是内联的。您可以将 SVG 复制并粘贴到曾经包含 background-image 的 div 中,或通过 ajax 请求将其加载到那里。

您可以使用left-webkit-transform: translate(...) 设置动画,而不是为background-position 设置动画。

【讨论】:

  • 你能解释一下第二部分吗?将它附加到 div 是什么意思?
  • 谢谢!但是,当内联时,如何将它用作精灵表?你能屏蔽内联 SVG 的一部分吗?
  • 只需添加一个带有overflow: hidden的父div
  • 谢谢,Duopixel。这对于精灵的使用非常有意义。我仍然对如何将 SVG 添加到 DOM 感到有些困惑。 “内联”是指我应该在 HTML 本身中使用实际的 SVG 标记吗?我认为这在技术上是可行的,但对于我们的需求来说有点不切实际。那好吧。值得尝试一下!
猜你喜欢
  • 2017-06-10
  • 2011-11-03
  • 2015-02-02
  • 1970-01-01
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 2017-06-15
相关资源
最近更新 更多