gpt4 book ai didi

html - SVG 高度元素不是动态的?

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:44 24 4
gpt4 key购买 nike

我正在尝试根据浏览器大小动态调整 svg 的大小。

<!DOCTYPE html>
<html lang="en">
<head>
<script type= 'text/javascript' src ='../libraries/d3/d3.v3.min.js'> </script>
<meta charset="UTF-8">
<title>CIQ workflow</title>

<style type='text/css'>

svg{
width:80%;
height:80%;
background:green;
}
</style>
</head>
<body>

<script >
var canvas = d3.select('body').append('svg')

</script>
</body>
</html>
  1. 当我在浏览器中查看此特定代码时,它会动态更新宽度,但不会动态更新高度。为什么?

  2. 与此方法相比,使用 View 框然后使这些值动态化有何优势?为什么是正确的做法?

最佳答案

(1)尝试添加

    html{
height:100%;
}

body{
height:100%;
}

您的样式和您的 SVG 现在将适本地设置样式。发生的情况是您页面的 document.body 正在调整大小以适应放置在其中的任何内容。它本质上是这样做的:

    Check inner DOM elements to determine height
--> Sees SVG element and tries to size it based on that.
--> SVG element has no height set so set body to some browser-specified
body min-height
==> Onward to SVG element!
--> SVG height = 80% body min-height.

您还可以将 body 高度设置为其他值,例如 500px(如果您想覆盖最小高度,甚至可以设置为 10px)。

(2) 我不是很熟悉使用 ViewBox 但基于阅读 this w3.org description似乎如果您主要进行变换和缩放,那么使用 ViewBox 会更简单,因为您将复制 ViewBox 的功能。

更新:显然,Safari 和 Chrome 在没有上面的 html{height:100%} 样式的情况下也能正常工作,但 Firefox 不行,所以请确保您也添加了它。

关于html - SVG 高度元素不是动态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21856621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com