javascript - 使用视图框的响应式 SVG
问题描述
我已经设法通过使用这样的视图框使 SVG 响应:
var svg = d3.select("#vis").append("svg")
.attr("width", "100%")
.attr("height", "100%")
.attr("viewBox", "0 0 960 500")
.attr("preserveAspectRatio", "none");
它具有响应性并且随着屏幕尺寸变小而变小。唯一的问题是 SVG 在最大屏幕中加载时太大。我可以设置最大尺寸吗?因此,即使屏幕很大,一旦达到最大尺寸,它也不会变得太大。
解决方案
为什么不使用 CSS 为容器提供最大宽度?
var svg = d3.select("#vis").append("svg")
.attr("width", "100%")
.attr("height", "100%")
.attr("viewBox", "0 0 960 500")
.attr("preserveAspectRatio", "none");
svg.append('circle')
.attr('r', 100)
.attr('cx', 300)
.attr('cy', 300)
#vis {
max-width: 960px;
margin: 0 auto;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<div id="vis"></div>
推荐阅读
- python - 如何检查特定熊猫数据框列中的值是否唯一
- asp.net-core-mvc - 使用 iis 托管在 localhost 机器上的 mvc 站点的重定向 url 是什么
- javascript - firebase web - Google 身份验证域未授权
- c# - 如何从 XSD 文件中检索命名空间?
- perl - !~ 在 perl 中是什么意思
- geomesa - 如何在 Geomesa 中摄取 geojson?
- javascript - 按组为对象数组创建索引列
- flutter - 在进行小部件测试时是否可以渲染颤振小部件?
- python - Python asn.1 DER 编码序列 NamedTypes 只能转换标量值
- keycloak - 将 Keycloak 与 icCube 一起使用 - 如何使其工作(缺少 Keycloak 上下文令牌)?