javascript - 如何使可变数量的 div 100% 填充父容器?

标签 javascript jquery html css

我正在尝试根据用户输入制作一个 div 网格。即 - 用户输入数字 10,我创建一个 10x10 的 div 网格。网格的整体大小,无论其中有多少个正方形,都应该是相同的大小。

我最初使用 1000x1000 像素的 4x4 网格表格开始页面。我遇到的问题是,如果我只设置 divs = 容器 div 的高度/宽度的 25%,它们就不适合(即使弄乱负边距以删除空间)。我假设这是因为父 div 容器有一个边框,每个 div 都有一个边框,它们都占用了可用空间。

我可以轻松地调整尺寸以使其合身。我的问题是我知道一旦我开始改变正方形中的网格数量,这个固定数字将不再有效。我如何设置 div 来填充容器,同时考虑边框大小等等?这是我到目前为止所拥有的:

https://jsfiddle.net/14Lnera5/1/

.wrapper {
margin: auto 50 auto auto;
width: 1000px;
height: 1000px;
border: black 4px solid;
}

.indivCell {
display: inline-block;
border: black 1px solid;
background-color: #E0E0D1;
width: 25%;
height: 25%;  
margin: -1px;
}

我不一定需要答案,但一两个提示会很好。我一直在到处搜索这个,每个人都说只是将大小设置为百分比,但我不认为这会起作用,因为放入更多的 div 会增加它内部的边框数量,因此摆脱可用空间。

谢谢

最佳答案

您可能正在寻找 box-sizing (一旦应用于页面上的每个元素,它就可以成为真正的游戏规则改变者,如下所示):

* {
    box-sizing: border-box;
}

(尽管在您的情况下,仅将其应用于 .indivCell 就可以解决问题)

此外,如果您使用内联 block 元素,则必须将容器上的字体大小设置为 0(否则 html 源代码中的空白也会增加一些空间,您可以随时切换回所需的字体通过将 font-size: somevalue 应用于您的 child 来调整大小,在本例中为 .indivCell):

https://jsfiddle.net/14Lnera5/4/

您还可以像这样修改 HTML 代码以删除空格:

http://jsfiddle.net/14Lnera5/8/

我强烈建议坚持使用内联 block 而不是 float , float 对您的文档流来说简直太糟糕了。

关于javascript - 如何使可变数量的 div 100% 填充父容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28753785/

相关文章:

javascript - Fancybox "open"事件在单击事件上触发,该事件由绑定(bind)到 Fancybox 的元素内部的元素触发

javascript - Jquery 无法正常工作

Javascript 不适用于 ajax 生成的部分

javascript - AngularJS View 不等待 $http.get

javascript - JS 查找丢失的字母(字母表 - 数组)

javascript - 更改 JVectorMap 图例位置

html - chrome 不尊重 flexbox 中的图像纵横比

javascript - 如何调用WCF服务?

2 个输入字段的 Jquery 自动完成(同一类)

html - CSS 未应用于使用 WebView 的 OSX 应用程序