javascript - 为什么即使所有网格元素都使用 fr 调整大小,网格的右侧和底部仍有空白?
问题描述
我创建了一个方形容器 div,其中包含可变数量的方形 div 子项。使用网格,这些 div 应该填满整个容器 div,并且使用column-template-columns: repeat(#divs per side of square, 1fr)
and来调整它们的大小grid auto rows: 1fr
,每边有 #divs ^ 2 个 div 子项。
将特定数量的 div 添加到容器时会出现此问题。基本上,容器的右侧和底部出现了一个奇怪的间隙,因此尽管所有内容都使用 fr 单位调整大小,但 div 并未完全填满容器。例如,当有 71 ^ 2 个 div 添加到容器时会发生这种情况。
这是代码:
const INITIAL_SIZE = 71;
const container = document.querySelector(".container");
for (let i = 0; i < INITIAL_SIZE * INITIAL_SIZE; i++) {
const newDiv = document.createElement("div");
newDiv.classList.add("drawing-div");
container.appendChild(newDiv);
}
.container {
display: inline-grid;
grid-template-columns: repeat(71, 1fr);
grid-auto-rows: 1fr;
align-content: stretch;
justify-content: stretch;
width: 10rem;
height: 10rem;
background-color: red;
}
.drawing-div {
box-sizing: border-box;
background-color: gray;
}
<div class="container">
</div>
我已经检查了边距/填充/边框/等:容器中的所有 div 都没有 - 这似乎是一个尺寸问题,所有内部 div 的宽度加在一起不等于宽度某些数量的内部 div 的容器 div。为什么是这样?
解决方案
const INITIAL_SIZE = 71;
const container = document.querySelector(".container");
for (let i = 0; i < INITIAL_SIZE * INITIAL_SIZE; i++) {
const newDiv = document.createElement("div");
newDiv.classList.add("drawing-div");
container.appendChild(newDiv);
}
.container {
display: grid;
grid-template-columns: repeat(71, 1fr);
grid-auto-rows: 1fr;
grid-gap:2px;
align-content: stretch;
justify-content: stretch;
border-radius: 1.5rem;
background-color: RGB(255, 255, 255);
}
.drawing-div {
box-sizing: border-box;
transition: background-color 0.15s;
background:blue;
padding-top:100%;
}
<div class="container">
</div>
推荐阅读
- r - 在 R 中按特定顺序排序数据
- c++ - 序列化人脸特征以在 DLIB 中进行识别
- django - Django:无法解析 /accounts/password_reset/ 上的关键字“is_active”
- javascript - 在渲染方法 [REACT NATIVE] 中访问此变量
- mysql - SQL查询统计图片并获取封面图片
- javascript - 如何以角度调用外部jQuery函数
- caching - Angular 和 ASP .NET MVC 的缓存
- ajax - 如果数据实际上安全地传递到服务器,网站是否需要 SSL?
- android - Android crash on CompletationHintView
- amazon-web-services - 我们可以针对 cloudformation 中的另一个参数禁用参数吗