如何使用JavaScript在HTML中放置SVG图像文件
我有一个SVG图像文件,我想把它作为SVG放到HTML页面中。因此,我仍然利用高分辨率的放大/缩小功能 这是我的密码。我把SVG放在,SVG里面 代码运行正常,但浏览器中未显示SVG 1) 我怎样才能展示它? 2) 有没有办法将SVG作为SVG及其所有功能(我读了一些问题,但其中没有一个适合我) 这段HTML代码是有效的,但当我将其转换为JavaScript时,它就不起作用了如何使用JavaScript在HTML中放置SVG图像文件,javascript,css,html,svg,Javascript,Css,Html,Svg,我有一个SVG图像文件,我想把它作为SVG放到HTML页面中。因此,我仍然利用高分辨率的放大/缩小功能 这是我的密码。我把SVG放在,SVG里面 代码运行正常,但浏览器中未显示SVG 1) 我怎样才能展示它? 2) 有没有办法将SVG作为SVG及其所有功能(我读了一些问题,但其中没有一个适合我) 这段HTML代码是有效的,但当我将其转换为JavaScript时,它就不起作用了 <svg id="svgimg" height="60" width="60" xmlns="http://www
<svg id="svgimg" height="60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
但是当我看到inspect时,它仍然是img标签而不是SVG??我希望它是SVG,这样我就可以更改矩形和线条的颜色。看起来您正在尝试动态创建SVG元素,然后将其显示在浏览器中 这是我过去做这件事的大致情况。此解决方案使用jQuery的函数:
var svgdiv = document.createElement('div');
var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svg.setAttribute('height', heightVar);
svg.setAttribute('width', widthVar);
//Add all your elements to the SVG
svgdiv.appendChild(svg)
//the following shows it in a pop-up window, but the write() and html() functions should be what you need.
window.open().document.write(svgdiv.html());
更准确地说,如果您希望将SVG放置在文档中的特定点,例如divmyDiv
:
$('#myDiv').html(svgdiv.html())代码>在我们在评论中的对话之后,我想我可以给你一些帮助。你需要知道的一切都是关于SVG和开源的
假设您有icon.svg:
<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8">
<path d="M2.47 0l-2.47 3h2v5h1v-5h2l-2.53-3z" transform="translate(1)" />
</svg>
因此,您将被SVG代码取代。
然后,你可以设计它
svg path {
stroke-width: 1px;
stroke: blue;
fill: transparent;
}
这条线不对
var img = document.createElementNS(svg, 'image');
您拥有svg元素的名称空间权限
var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
所以你只需要对图像做同样的处理
var img = document.createElementNS('http://www.w3.org/2000/svg', 'image');
- 使用参数:
- 使用内联CSS:
var s="url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%'><defs><pattern id='grid' width='"+(37+i)+".79527559055' height='37.79527559055' patternUnits='userSpaceOnUse' style=' '><path d='M 50 0 L 0 0 0 40' fill='none' stroke='gray' stroke-width='1'/></pattern></defs><rect width='100%' height='100%' fill='url(#grid)'/></svg>\") no-repeat";
document.getElementsByTagName('HTML')[0].style.background=s;
var s=“url(\”数据:image/svg+xml;utf8,\”)无重复”;
document.getElementsByTagName('HTML')[0].style.background=s;
有人也提到了这一点,但使用encodeURI。。。
我不确定是否能回答这个问题,但这有帮助吗:?这真的很有用,也很有效。它将用一个…hello@Cohars替换您的,当我将图像作为HTML代码放置时,它与我一起工作。。但我想使用javascript,因为我想动态显示许多图像。你说的“图像”是指代码,或者是因为它不同。我真的不明白你到底想做什么。您想使用JS还是使用现有的.SVG文件生成SVG代码?>>>是的,嵌入sag作为img将使SVG在我理解时丢失该功能。是的,我想用JS或使用现有的.SVG文件>>生成SVG代码,因为我想稍后添加单击以显示在新窗口中+我可以更改颜色..谢谢帮助。。但是想知道更改将如何应用于sag图像,因为浏览器上没有任何更改。。副警长(高级警司);我试图附加SVG,但出现了以下错误:NotFoundError:DOM异常8:尝试在不存在节点的上下文中引用节点。SVG注入器正在处理这一问题,这就是我建议使用它的原因。它基本上会发出一个AJAX请求,以获取您在data src
中编写的文件的SVG代码,然后它将删除并替换为SVG,并保留属性(id、class等)。您不需要自己将其附加到DOM中。也许你应该做一个JSFIDLE来看看你的错误是什么。。我将CSS:svg rect{fill:blue;}&&我将其添加到我的代码中:var SVGs=document.queryselectoral('svg');SVG喷射器(SVGs)但是矩形根本没有改变!!好的,您在控制台中是否有任何错误。当您检查SVG时会发生什么,它的大小是否正确,CSS是否应用于SVG rect
,是否加载了CSS?也许你可以做svg{width:100px;height:100px}
No现在我没有错误。。当我检查SVG时,什么都没有发生,CSS也没有应用到SVGthanks,但是我可以将我拥有的图像的源放在哪里(var link='SVGimage.SVG';)!!SVG元素没有此属性!!但问题是,我可以稍后将其作为SVG图像处理>>如果我以这种方式嵌入图像,我可以更改图像中线条的颜色吗?如果您是指SVG本身,是(SVG或图像标记属性),如果您是指SVG图像标记中的数据,例如,SVGImage.svg的内容,那么答案是否定的。svg图像包含许多线条和矩形)是的,我想稍后更改它们的颜色(更改所有矩形颜色)。。我从回答中了解到我可以这样做????
var img = document.createElementNS(svg, 'image');
var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
var img = document.createElementNS('http://www.w3.org/2000/svg', 'image');
var s="url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%'><defs><pattern id='grid' width='"+(37+i)+".79527559055' height='37.79527559055' patternUnits='userSpaceOnUse' style=' '><path d='M 50 0 L 0 0 0 40' fill='none' stroke='gray' stroke-width='1'/></pattern></defs><rect width='100%' height='100%' fill='url(#grid)'/></svg>\") no-repeat";
document.getElementsByTagName('HTML')[0].style.background=s;