gpt4 book ai didi

javascript - 如何通过 getComputedStyle 获取 flexbox 的精确宽度?

转载 作者:行者123 更新时间:2023-11-30 13:14:28 24 4
gpt4 key购买 nike

我在渲染内容后获取 flexbox 的确切宽度时遇到问题。我正在开发 Windows 8 应用程序(指特定于 ie10)。

代码如下:
[HTML]

<html>
<head>
<title>flexbox test</title>
</head>
<body>
<div class='container'>
<div class='viewport'>
<div class='canvas'>
<div class="item"> A </div>
<div class="item"> B </div>
<div class="item"> C </div>
<div class="item"> D </div>
<div class="item"> E </div>
<div class="item"> F </div>
<div class="item"> G </div>
<div class="item"> H </div>
<div class="item"> I </div>
<div class="item"> J </div>
</div>
</div>
</div>
<hr style="width: 600px; text-align: left;">
<div class="outbox"></div>
<script>tester();</script>
</body>
</html>​

[CSS]

.container {
width: 400px;
height: 200px;
border: 1px solid black;
}

.container .viewport {
width: inherit;
height: inherit;
position: absolute;
overflow: auto;
}

.container .viewport .canvas{
display: -ms-flexbox;
-ms-flex: 0 0 auto;
-ms-flex-pack: start;
-ms-flex-flow: row none;
-ms-flex-align: start;
-ms-flex-item-align: start;
-ms-flex-line-pack: start;
position: relative;
}

.container .viewport .canvas .item {
width: 100px; height: 100px;color: #fff;
background-color: black;
margin: 10px;
}

[JavaScript]

(function tester(){
var canvas = document.querySelector('.canvas');
var style = document.defaultView.getComputedStyle(canvas, null);
function addToOutbox(str){
var outbox = document.querySelector('.outbox');
outbox.innerText = 'Width: ' + str;
}
addToOutbox(style.width);
})();

因为有滚动条,我原以为宽度会是别的东西。外层容器宽度为400px,中间容器继承widthheightoverflow: auto最内层可扩展.flexbox 中有八个项目,每个项目的宽度和高度均为 100px。所以我期待 flexbox 宽度 900px(即 100px*8 + 每个项目的 margin-left 和 margin-right) 但仍然只有 400px 是父尺寸。我错过了什么吗?

这是 JS Fiddle 的链接:http://jsfiddle.net/pdMSR/ [只能用ie10打开]

最佳答案

元素确实是 400px。超过 400px 的弹性项目实际上溢出了。

听起来您真正想要获得的是 scrollWidth。如果您将 canvas.scrollWidth 传递给您的 addToOutbox 函数,您将获得所需的内容。

关于javascript - 如何通过 getComputedStyle 获取 flexbox 的精确宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12596523/

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