Javascript SVG元素没有响应-调整屏幕大小时

Javascript SVG元素没有响应-调整屏幕大小时,javascript,css,angularjs,d3.js,svg,Javascript,Css,Angularjs,D3.js,Svg,我有一个地图容器,显示世界地图,这应该是响应,但它不工作,当我运行它和调整页面大小,我找不到什么问题。调整屏幕大小时的预期效果。这是我的密码 var tooltipMap=d3.选择(“主体”) .附加(“div”) .attr(“类”,“贴图工具提示阴影”) .样式(“不透明度”,0); var projection=d3.geo.mercator() .center([0,62]) .比例尺(150) .旋转([0,0]); var svg=d3.选择(“映射容器”).追加(“svg”)

我有一个地图容器,显示世界地图,这应该是响应,但它不工作,当我运行它和调整页面大小,我找不到什么问题。调整屏幕大小时的预期效果。这是我的密码

var tooltipMap=d3.选择(“主体”)
.附加(“div”)
.attr(“类”,“贴图工具提示阴影”)
.样式(“不透明度”,0);
var projection=d3.geo.mercator()
.center([0,62])
.比例尺(150)
.旋转([0,0]);
var svg=d3.选择(“映射容器”).追加(“svg”)
.attr(“宽度”,宽度)
.attr(“高度”,高度)
.attr('viewBox',“0”+(宽度)+“+(高度))
.attr('preserveAspectRatio','xMinYMid')
.attr(“类别”、“图表”);
var path=d3.geo.path()
.投影(投影);
var defs=svg.append('svg:defs');
defs.append(“svg:pattern”)
.attr(“id”、“bgImg”)
.attr(“宽度”,6)
.attr(“高度”,6)
.attr(“patternUnits”、“userSpaceOnUse”)
.append(“svg:image”)
.attr(“xlink:href”,“../assets/img/map tile.png”)
.attr(“宽度”,6)
.attr(“高度”,6)
.attr(“x”,0)
.attr(“y”,0);
var g=svg.append(“g”)
.attr(“宽度”,宽度+160)
.attr(“高度”,高度);
//加载并显示世界
d3.json(“om.json”,函数(错误,拓扑){
g、 选择全部(“路径”)
.data(topojson.object(拓扑、拓扑、对象、国家).geometrics)
.输入()
.append(“路径”)
.attr(“填充”、“url(#bgImg)”)
.attr(“d”,路径);
});

您正在根据像素大小设置所有SVG元素的大小,这可能会使整个SVG响应,但该SVG元素内的元素实际上是根据像素大小调整大小的,这将使它们根据屏幕像素密度调整大小。但即使您说只有SVG响应,也不会显示,我看不出有什么区别。如果SVG是有响应的,但不是它的元素,那么您会得到一个SVG代码容器,它可以很好地调整大小,但是SVG容器中的元素/代码对窗口大小的响应方式可能不同。我的建议是在窗口调整大小时完全重新计算所有内容。你能用代码解释一下你的建议吗?我是d3和svg的新手@SimonhyllCourse我和我乐于助人的天性,我要去睡觉了。。。1分钟(摆弄一些代码),现在开始:尝试设置SVG元素的宽度和高度。请注意,即使调整SVG元素的大小,实际形状的大小也不会改变?这是因为尽管SVG容器根据周围的元素调整大小,但它内部的实际代码却没有。因此,如果不添加onWindowResize事件侦听器并使用它重新计算SVG中元素的大小,那么无论SVG的大小如何,它们都将永远保持相同的大小。