javascript - 具有 d3.js 和高度属性的响应式 SVG

标签 javascript d3.js svg

我有两个并排的 div 元素。在第一个 div(称为 #scatterplot)中,有一个自动渲染的图。 SVG 容器大小是使用 d3.js 中的以下代码自动设置的:

var vis = d3.select("#scatterplot")
   //container class to make it responsive
   .classed("svg-container", true)
   .append("svg")
   //responsive SVG needs these 2 attributes and no width and height attr
   .attr("preserveAspectRatio", "xMinYMin meet")
   .attr("viewBox", "0 0 700 700")
   //class to make it responsive
   .classed("svg-content-responsive", true)
   .append("g")
   .attr("transform", "translate(" + margin.left + "," + margin.top + ")");

对应的CSS代码如下:

.svg-container {
    display: inline-block;
    position: relative;
    width: 100%;
    padding-bottom: 100%; /* aspect ratio */
    vertical-align: top;
    overflow: hidden;
}
.svg-content-responsive {
    display: inline-block;
    position: absolute;
    top: 10px;
    left: 0;
}

问题:第二个 div 名为 #wordcloud。我需要根据#scatterplot div调整#wordcloud的高度。有什么建议如何实现这一点吗?

最佳答案

您可以使用d3.style()在内联样式中设置 #wordcloud 高度的方法。例如:

var height = d3.select('#scatterplot').node().getBoundingClientRect().height;
d3.select('#wordcloud').style('height', height + 'px');
div {
  width: 50%;
  float: left;
}

#scatterplot {
  background: #f00;
}

#wordcloud {
  background: #0f0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<div id="scatterplot">
  <p>The text is used<br/>to change height<br/>of red div.</p>
</div>
<div id="wordcloud">
  <p>The heights of red and green divs are same.</p>
</div>

关于javascript - 具有 d3.js 和高度属性的响应式 SVG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50186386/

相关文章:

javascript - 我想在 D3.js TreeMap 中的链接上添加文本

canvas - Raphael js使用canvas还是svg?

django - 如何在 django 模板中嵌入 SVG 图像

javascript - 如何修复 TypeError : browser. storage is undefined in chrome/firefox web extension?

javascript - 在 d3.js 中将标签放置在节点的中心

javascript - 无法正确地动态加载脚本和样式

javascript - attrTween 函数未被调用

jquery - 添加到 HTML 时 SVG 不显示

javascript - 有没有一种简单的方法可以使嵌套数组变平?

javascript - 不要打开OGG文件