SVG元素的CSS背景[重复]

Posted

技术标签:

【中文标题】SVG元素的CSS背景[重复]【英文标题】:CSS background to an SVG element [duplicate] 【发布时间】:2019-10-18 23:18:10 【问题描述】:

我正在尝试创建一个具有内联 SVG 的 html,该内联 SVG 具有一个带有 CSS 背景的元素:

<html>
<body>
<svg>
    <foreignObject  >
        <div style="red; width:50; height:50"></div>
    </foreignObject>
    <rect   transform="translate(100,0)" style="red"/></svg>
</body>
</html>

foreighObject 显示背景,但rect 不显示背景 这是为什么呢? 我最终想要实现的是将精灵图像作为 SVG 中多个图像的背景

编辑:最终我希望填充是一张大图像,而不仅仅是red。看来仅使用 fill 是不可能的

【问题讨论】:

请使用所有相关代码更新您的问题。目前您的问题无法回答,因为不清楚所需的输出是什么,以及是什么阻止它按照您的要求显示。 style="fill: red"似乎更适合rect。对于 div,样式不会做任何事情,因为 red 不是样式属性,而是颜色。 【参考方案1】:

您必须始终为 HTML 元素和 svg 元素使用正确的样式标签,然后才能正常工作

<svg>
    <foreignObject x="0" y="0"  >
        <div style="background: red; width:50px; height:50px"></div>
    </foreignObject>
    <rect   transform="translate(100,0)" style="fill: red"/>
</svg>

【讨论】:

【参考方案2】:

style="red" 看起来不正确,正确的方法是 "fill:red" 或 "fill:#00562";

<!-- Simple rectangle -->
  <rect   fill="red"/>

<svg viewBox="0 0 220 100" xmlns="http://www.w3.org/2000/svg">
  <!-- Simple rectangle -->
  <rect   fill="red"/>
</svg>

供参考 这些是rect常用的属性:-

剪辑路径、剪辑规则、颜色、颜色插值、颜色渲染、光标、显示、填充、填充不透明度、填充规则、过滤器、蒙版、不透明度、指针事件、形状渲染、描边, stroke-dasharray, stroke-dashoffset, stroke-linecap, stroke-linejoin, stroke-miterlimit, stroke-opacity, stroke-width, transform, vector-effect, visibility

【讨论】:

以上是关于SVG元素的CSS背景[重复]的主要内容,如果未能解决你的问题,请参考以下文章

CSS伪元素不显示svg背景图片

从SASS编译时CSS背景网址SVG填充颜色不起作用(不是base64)[重复]

CSS:在一个元素上缩放和旋转多个 SVG 背景图像 - 没有 JS 可能吗?

canvas一段背景色鼠标移入后

是否可以使用 javascript 和/或 css 修改背景 svg 图像?

重启背景SVG动画