需要以DIV的像素百分比与JS

Need with in pixel of a DIV in percentage with JS

我有 PHP 创建的盒子。它们的宽度设置为 CSS 中容器的 100%。我需要找到那个盒子的等效像素...

HTML

<div class="masonry" >
<? while($row = $stmt->fetch()){    ?>

     <div class="item" id="needwidth" >
            <a href="#"><img src="..."></a>
     </div>
   <? } ?>
</div>

CSS(masonry 将根据可用的屏幕宽度添加列)

.item{width: 100%;}
.masonry { column-count: 4;}

@media only screen and (min-width: 400px) {
    .masonry { column-count: 2;}
}

@media only screen and (min-width: 700px) {
    .masonry {column-count: 3; }
}

@media only screen and (min-width: 900px) {
    .masonry {column-count: 4;}
}

@media only screen and (min-width: 1100px) {
    .masonry {column-count: 5;  }
}

我在 header:

中试过这个 JS
<script>var width = document.getElementById('needwidth').offsetWidth;</script>

在我的 HTML 中,我稍后用这个测试它:

<script>document.write(width);</script>

但它说:

undefined

您可以使用 clientWidth 来获取您想要的值。但是您必须将代码从 header 移动到页面末尾或 运行 由 onLoad 事件调用的函数中的代码,因为当您尝试获取属性 值。

<!-- It may not work -->
<script>alert(document.getElementById('needwidth').clientWidth);</script>
<div class="item" id="needwidth" ></div>

...

<!-- It works -->
<div class="item" id="needwidth" ></div>
<script>alert(document.getElementById('needwidth').clientWidth);</script>

如果你可以在你的项目中使用jQuery。您可以使用下面描述的一些方法:

$('#needwidth').width();
$('#needwidth').outerWidth();
$('#needwidth').prop('clientWidth');

查看这个 JSFIDDLE:http://jsfiddle.net/nanndoj/gjtkvrsy/3/