CSS和D3 -在FIREFOX中制作响应svg
CSS and D3 - Making Responsive SVGs in FIREFOX
我使用D3.js。我已经成功地让它在元素上附加SVG元素,并开始在主SVG上进行SVG绘图。
我希望SVG元素能够响应,所以我决定将属性width和height都设置为100%。
然后创建一个div:
<div id='divForCharts' class='divCharts'>
</div>
然后通过CSS:
将div设置为RESPONSIVE SQUARE.divCharts{
width: 50%;
height: 0;
padding-bottom: 50%;
background-color: red;
margin: 0 auto;
}
与上面的css一样,我将背景色设置为红色,以确保我可以看到div实际上是一个正方形。在代码中,我确实在SAFARI和FIREFOX中都看到了一个红色方块。
问题可以在我点击按钮后看到,该按钮通过d3代码运行,将SVG元素附加到上面的div并添加其他SVG元素。
在SAFARI上,一切都像我预期的那样工作。可以看到SVG元素和父SVG元素的其他SVG子元素。
在FIREFOX上,什么也没有显示。
然后使用FIREBUG检查div并查看d3是否实际上添加了svg。经过检查,可以确认所有svg都已添加到DOM中,并且它们实际上与SAFARI上的svg相同。不同之处在于,在FIREFOX上,什么都不会出现。然后,我查看了FIREFOX上SVG元素的属性。宽度和高度都是100%,正如我所设置的。
然后,我使用这个方法,而不是设置百分比,我直接将高度和宽度更改为100,然后SVG最终出现。
简而言之,相同的代码可以在SAFARI中工作,但不能在FIREFOX中工作....
是什么阻止了它的出现?我该如何解决这个问题?
JsFiddle在这种情况下会很有帮助。
一般来说,当你做响应式可视化时,你需要更多的控制,不仅是在视窗的大小上,而且在显示的元素上。例如,在较小的屏幕上,你必须减少轴上的刻度数。
为此,您可以监听resize事件并相应地调整图形:
function resize() {
/* Find the new window dimensions */
var width = parseInt(d3.select("#graph").style("width")) - margin*2,
height = parseInt(d3.select("#graph").style("height")) - margin*2;
}
d3.select(window).on('resize', resize);
更多信息:https://www.safaribooksonline.com/blog/2014/02/17/building-responsible-visualizations-d3-js/
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何更改<svg>标记为<img>用js标记
- 如何将getJson的响应保存在全局变量中
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 锚点元素不't使用svg时,请打开EDGE上的href
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 在 xmlhttprequest 响应中使用 svg web
- 使 SVG 映像响应引导容器
- 如何设置响应式 SVG 宽度
- 如何使用Snap.SVG为单个SVG元素做出唯一响应
- 我如何使svg响应
- 响应SVG线形图与Raphaë 1
- CSS和D3 -在FIREFOX中制作响应svg
- D3引导,响应定心svg
- 3d生成的SVG没有响应
- 修改动态生成的SVG,使其响应
- 如何使用d3.js创建响应svg
- 带填充的SVG弧对悬停没有响应