如何设置容器宽度计算其子女的宽度

问题描述:

我有一个容器,里面有n个div。我需要容器根据它的孩子调整大小。我知道这可以使用jQuery库如下完成。如何设置容器宽度计算其子女的宽度

JQuery的

$(document).ready(function(){ 
    setContainerWidth(); 
}); 

$(window).resize(function(){ 
    setContainerWidth(); 
}); 

function setContainerWidth() 
{ 
    $('.container').css('width', 'auto'); //reset 
    var windowWidth = $(document).width(); 
    var blockWidth = $('.block').outerWidth(true); 
    var maxBoxPerRow = Math.floor(windowWidth/blockWidth); 
    $('.container').width(maxBoxPerRow * blockWidth); 
} 

这个时候我需要一些插件的问题的纯JavaScript来做到这一点。我打破了代码,直到如下,并坚持在中间任何帮助将不胜感激。

的Javascript

function setContainerWidth(){ 
    var container_width = document.getElementById('container').offsetWidth; 
    var width = document.body.clientWidth 
    var block_width = document.getElementsByClassName("block").offsetWidth; 

    container.style.width = "auto" 
    var maxBoxPerRow = Math.floor(width/block_width) 
    container.offsetWidth(maxBoxPerRow * block_width) 
} 

Example one using jquery

Example two using javascript

+0

'document.getElementsByClassName()'返回是一系列元素。你想要使用'document.getElementsByClassName('block')[0]' – Matt 2014-10-16 14:47:23

+0

我以前试过它,但它没有工作在ma case – Benji 2014-10-16 15:22:29

+0

即使尝试'id'而不是'class' for box仍然没有成功 – Benji 2014-10-16 15:26:13

你缺少从纯JavaScript翻译的几件事情:

function setContainerWidth() 
{ 
    var container = document.getElementById('container'); 
    container.style.width = "auto"; 
    var window_width = window.innerWidth; 
    var block_width = document.getElementsByClassName("block")[0].offsetWidth; 
    var maxBoxPerRow = Math.floor(window_width/block_width); 
    container.style.width = (maxBoxPerRow * block_width) + 'px'; 
} 
+0

我该如何使用这个窗口调整大小使用纯js – Benji 2014-10-17 08:15:27

+1

像这样'window.onresize = function(event){...};' – Matt 2014-10-17 08:38:29

+0

谢谢老兄:)你是真正的问题解决者 – Benji 2014-10-17 13:01:49