对于大量的元素,行内块元素之间的垂直间距
Vertical gaps between inline-block elements for big amounts of elements
我目前正在为Odin项目做JS/jQuery项目,我认为我的解决方案执行得非常好。
我有它的问题,是对于更大量的元素(在JSFiddle它开始打破每行约40-45个元素,在我的Chrome浏览器约50-52),将有两个相邻行的元素之间的垂直差距。我最初设置vertical-align: top
以删除间隙,这可以达到每行40-50个元素。
这是JSFiddle。
如果您提高JS文件中每行元素的数量(将其设置为50或更高),您将看到我的意思。
这不是我想要的行为。我想要一个连接的网格,两边的细胞之间没有间隙。你知道是什么破坏了vertical-align: top
吗?
编辑:我认为这与percentage-width/height有关,因为如果除法的结果是一个"困难的分数",它也会在低于40的数字上中断。
内嵌框从它们的块父框继承可继承属性。因此你的网格取.container
中的line-height
。当.container
溢出时,vertical-align: top;
停止工作,因此最好使用line-height:0;
作为父元素(.container
)。
来源:https://www.w3.org/TR/CSS2/visuren.html inline-boxes
$(document).ready(function() {
createGrid(48);
$(".cell").mouseenter(function() {
$(this).css("background-color", "green");
});
$(".cell").mouseleave(function() {
$(this).css("background-color", "white");
});
});
function createGrid(n) {
var container = $(".container");
container.empty();
var sizeP = 100 / n;
var cell = $('<div/>', {
class: 'cell',
style: 'width: ' + sizeP + '%; height: ' + sizeP + '%;'
});
for(i = 0; i < n*n; i++) {
container.append(cell.clone());
}
}
.container {
border: 5px solid black;
border-radius: 5px;
padding: 10px;
margin: 10px;
width: 800px;
height: 800px;
line-height:0;
}
.cell {
display: inline-block;
box-sizing: border-box;
border: 1px solid black;
vertical-align: top;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<body>
<div class="container"></div>
</body>
相关文章:
- 操作放置在画布上的元素之间的连接
- DOM元素和angular元素之间的主要区别是什么
- 在 JavaScript 数组中的所有元素之间穿插元素的简洁方法
- JS get元素之间的差异's属性与elem.getAttribute(attr)和elem[attr]
- Javascript集:任何覆盖元素之间比较的方法
- jqmobile列表视图中元素之间的间距相等
- 如何在两个动画画布元素之间进行通信
- 第一个元素和最后一个元素之间的连续循环
- 在元素之间导航的Javascript
- 在照片库中的两个元素之间切换样式会发生变化
- 计数元素之间的语法混淆
- jquery多次在元素之间插入html
- javascript,两个数组的相同元素之间的比较
- 3个元素之间的自动切换
- 如何使用jQuery在两个元素之间切换类
- 自定义元素之间的聚合物双向结合[包括示例]
- 使用setTimeout在创建新元素之间强制延迟
- 在javascript数组元素之间添加换行符
- 获取2个元素之间的元素
- 如何不断检查页面元素之间的冲突