コンテンツをレンダリングした後、フレックスボックスの正確な幅を取得するのに問題があります。私は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
、中間のものは継承width
さheight
れoverflow: auto
、最も内側は拡張可能です。フレックスボックスには、それぞれ幅と高さを持つ 8 つの項目があります100px
。だから私はフレックスボックスの幅を期待していました900px (i.e. 100px*8 + margin-left and margin-right for each item)
が、それでも400px
親の寸法だけを取得しています。何か不足していますか?
JS Fiddle へのリンクは次のとおりです: http://jsfiddle.net/pdMSR/ [ie10 でのみ開く]