【问题标题】:How to assign css background image from existing svg object?如何从现有的 svg 对象分配 css 背景图像?
【发布时间】:2015-05-23 02:55:11
【问题描述】:

我尝试根据

处的示例从现有 SVG 对象分配背景图像

http://codepen.io/progers/pen/CAEks

// Short script to encode our SVG in base64
// This can be reversed using window.atob('base64')
var code = document.getElementById('code');
var demo = document.getElementById('demo');
var svg = document.getElementsByTagName('svg')[0];

// Convert the SVG node to HTML.
var div = document.createElement('div');
div.appendChild(svg.cloneNode(true));

// Encode the SVG as base64
var b64 = 'data:image/svg+xml;base64,'+window.btoa(div.innerHTML);
var url = 'url("' + b64 + '")';
code.innerHTML = 'Base64 CSS (for cross-browser compatibility)\n\nbackground-image: ' + url + ';';
demo.style.backgroundImage = url;

我创造了这个

http://jsfiddle.net/bj0e063q/1/jsfiddle。

不同之处在于,在 codepen 使用静态 svg 而我想通过代码动态创建它。为什么我的例子不起作用?

【问题讨论】:

    标签: javascript css svg background-image


    【解决方案1】:

    您的代码有效,只是没有运行,因为小提琴已经在窗口加载时执行,并且您需要在设置 svg 之前定义 window.socialSharing

    编辑:

    显然,为了让它工作,你需要在 div 上设置背景图像,并在 svg 上设置 xmlns 属性(虽然在 IE 中这个属性是自动添加的,所以你必须检查它的存在):

    svg.setAttribute("xmlns", "http://www.w3.org/2000/svg");    
    

    查看此更新的fiddle

    【讨论】:

    • 是的,这是一个错误。但它应该设置背景图片
    • 我不明白为什么设置 xmlns 属性会做任何事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 2018-02-22
    • 2014-08-07
    • 2017-05-15
    • 2015-03-13
    • 2022-06-10
    相关资源
    最近更新 更多