我正在尝试绘制一个isoceles三角形,它的顶部顶点位于屏幕中间。
我想使用JavaScript,因为不同用户的屏幕尺寸可能不同,因此必须首先找到屏幕的中心。
这是我的代码:
function drawRect(){
var w = $(document).width();
var h = $(window).height();
var halfh = h/2;
var halfw = w/2;
var svg = document.createElement("svg");
var poly = document.createElement("polygon");
svg.setAttribute("style", "position: fixed;");
svg.setAttribute("height", ""+h);
svg.setAttribute("width", ""+w);
poly.setAttribute("points", ""+halfw+","+halfh+" 0,"+h+" "+w+","+h);
poly.setAttribute("style", "fill:lime;stroke:purple;stroke-width:1");
svg.appendChild(poly);
var svgplace = document.getElementById("carpet");
svgplace.appendChild(svg);
}
屏幕上没有三角形。但是,如果我在chrome上打开'Inspect Element'控制台,并且我稍微修改了创建的html元素,它就会出现! (任何一种小模型。就像在中间某处添加空间一样)
请帮忙!
提前致谢
答案 0 :(得分:2)
您需要使用
document.createElementNS("http://www.w3.org/2000/svg", "polygon");
除了SVG
之外, HTML
位于自己的命名空间中。因此,您需要使用createElementNS
创建SVG
命名空间中的元素。
请考虑以下适用于Chrome
和Firefox
var newItem = document.createElementNS("http://www.w3.org/2000/svg", "circle");
newItem.setAttribute("cx", ((16 * 1) + 8));
newItem.setAttribute("cy", "50%");
newItem.setAttribute("r", 4);
newItem.setAttribute("fill", "#333333");
document.getElementById("target").appendChild(newItem);
<svg id="target">
</svg>