javascript - How to Prevent Elements from Wrapping with DOM
问题描述
I can't seem to stop these blocks from wrapping. The grid seems to work fine for inputs less than 50.
This is my HTML but there's not much too it, even tried the whitespace property, inline. The CSS, which I have made a parent div and it seems to work for the colour, however not for turning off the wrap.
How can I get the rows of boxes to continue?
let makeGrid = function(numberOfRows) {
let y = 0;
let x = 0;
while (y < numberOfRows) {
x = 0;
let makeBox = function(_parentBox, _sizeOfBox) {
let box = document.createElement('div');
document.body.appendChild(box);
box.style.width = '28px';
box.style.height = '28px';
box.style.border = '1px solid white';
box.style.display = 'inline-block';
return box;
};
let makeRowBox = function(parentBox) {
let box = document.createElement('div');
parentBox.appendChild(box);
//box.style.border = '1px solid black';
return box;
};
rowBox = makeRowBox(document.body);
while (x < numberOfRows) {
makeBox(rowBox, 400);
x = x + 1;
}
y = y + 1;
}
};
makeGrid(50);
div {
background-color: rgb(68, 157, 230);
white-space: nowrap;
overflow: hidden;
}
div>div {
display: inline-block;
border: 2px solid white;
border: '1px solid black';
margin-right: 4px;
}
<div style="white-space: nowrap;"></div>
解决方案
You can style the boxRows using display: inline-flex
, so the rows will expand to fit their contents.
I removed all the inline CSS that were set in javascript. Instead, I added a class to the boxes.
You also added all the blue boxes to body
instead of .row
(rowBox).
I needed the combination of float
and clear
to make smaller grids row break.
let makeGrid = function(numberOfRows) {
let y = 0;
let x = 0;
while (y < numberOfRows) {
x = 0;
let makeBox = function(_parentBox) {
let box = document.createElement('div');
box.classList.add("box");
//document.body.appendChild(box);
_parentBox.appendChild(box); /* added */
//return box;
};
let makeRowBox = function(parentBox) {
let box = document.createElement('div');
box.classList.add("row");
parentBox.appendChild(box);
return box;
};
rowBox = makeRowBox(document.body);
while (x < numberOfRows) {
makeBox(rowBox, 400);
x = x + 1;
}
y = y + 1;
}
};
makeGrid(30);
.row {
display: inline-flex;
border: 1px solid black;
clear: both;
float: left;
}
.box {
--box-spacing: 2px;
width: 28px;
height: 28px;
background-color: rgb(68, 157, 230);
border: var(--box-spacing) solid white;
flex-basis: 100%;
}
推荐阅读
- c# - 如何从 DATABASE C# 在表中填充 DATASET
- tensorflow - RealSense ROS 上的点云和 RGB 图像对齐
- ionic-framework - 是否有错误运行 ionic serve 错误:无法清理到目录 Eperm :www\build\15.js 中不允许操作
- ruby-on-rails - 未为子模型保存关联记录
- terraform - Terraform 删除旧的 AWS Lambda 层版本而不是创建新版本
- css - 在 react.js 中单击按钮时如何更改按钮图标
- angular - 单击任何产品时在网格内插入其他产品
- machine-learning - 在 mlr 中调整分类阈值
- java - Grails/GORM 动态查找器通过其关系 ID 而不是关系对象本身获取域
- ios - iPhone XR 和 iPhone XS 的 Peek and Pop