javascript - 如何将此文本的背景图像设置为 svg?

标签 javascript jquery html css svg

fiddle可以看出,我有一些代码将两个跨度的背景设置为用 svg 绘制的图像。我想在带有类“help”的跨度上使用 javascript(jquery 或 raw)动态地执行此操作,但代码不起作用。如何修复 javascript 以正确呈现 svg 图像作为该跨度的背景?

这是js代码:

$('span.help').css( {
  'background-image': 
  "url(data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='10'>"+
    "  <path d='M3,2 A25,25 0 0,1 25,2' style='stroke:#660000; stroke-width: 1; fill: none'/></svg>)",
  "font-size": "30px"
});

和 html:

<span class="works">ok</span>
<span class="help">nok</span>

这个相同但静态的 css 应用于类为“works”的跨度,它在 chrome 中有效,但在 firefox 中无效。

span.works {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='10'><path d='M3,2 A25,25 0 0,1 25,2' style='stroke:#660000; stroke-width: 1; fill: none'/></svg>");
  font-size: 30px;
});

最佳答案

就未编码的 DATA URI 完全有效而言(一些浏览器坚持使用 Base-64 编码),您仍然需要引用 url() 的内容,尽管使用转义引号:

$('span').css( {
  'background-image': 
  "url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='10'>"+
    "  <path d='M3,2 A25,25 0 0,1 25,2' style='stroke:#660000; stroke-width: 1; fill: none'/></svg>\")",
  "font-size": "30px"
});

示例:http://jsfiddle.net/SJjJb/1427/

关于javascript - 如何将此文本的背景图像设置为 svg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25024404/

相关文章:

javascript - 复选框值 0 或 1

javascript - 创建可在制表符中直接单击的复选框

php - 如何让js代码不可见?

javascript - 使用 queue.js 将 HTTP header 添加到 d3.json

javascript - 将选定的选项添加到 TEXTAREA,以逗号分隔

javascript - JQuery 移动自定义水平单选按钮在实际设备中不起作用

javascript - 了解angular2中的依赖注入(inject)

javascript - 文本框上的 Jquery 更改事件

html - 用html、css制作硬图

javascript - 使用Angular的jqlite选择相同类型的元素