繁体   English   中英

调整网格大小的问题 - JavaScript CSS HTML,Odin 项目的 etch-a-sketch

Problem with resizing of a grid - JavaScript CSS HTML, etch-a-sketch for The Odin Project

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想问一下如何让我的网格始终保持不变(一个大正方形,里面只有不同数量的小正方形)。 您可以通过在提示中输入数字来更改小方块的数量。 例如,将其从默认的 16 更改为 64 会以一种可怕的方式调整其大小。 我认为它可能与 CSS 相关,但我在这里迷路了。 请参阅此 JSFiddle 并指导我。

关联。

<script async src="//jsfiddle.net/MicSparrow/0q8ycvgr/embed/"></script>

在此先感谢您的帮助。

2 个回复

如果你想保持盒子的宽度和高度现在: 25px ,你可以考虑任何方法来防止行断线,

例如:通过添加white-space: pre; .row

在这种方法中,内容可能会超过文档宽度,并且页面可以水平滚动


如果您希望根据大小动态设置宽度和高度,您可以更新代码,因此在选择网格大小后,您需要通过除以容器宽度/网格大小来计算宽度/高度值

第一个问题是 HTML 不包括边框作为框的整体宽度和高度。 因此,要在 CSS 中覆盖它,我们可以进行box-sizing: border-box参见示例。
另一个小的 CSS 技巧是边框在网格中间是双的,在外面是单的。 为了解决这个问题,我们可以为所有的盒子添加border-left和border-bottom,并在每行的第一行添加border-top,在最后一个盒子添加border-right
现在,一切就绪,让我们在 Javascript 中将最大宽度(如果您想改变高度,则将高度)设置为 400。
我们可以根据容器中盒子的数量来设置盒子的宽度和高度,这样总共是 400 个。

祝你好运

 const gridContainer = document.querySelector("#grid-container"); const magicButton = document.querySelector("#magic-button"); const gameReset = document.querySelector("#game-reset"); const maxWidth = 400; window.addEventListener('load', makeBlocks); let size = 16; function makeBlocks() { for (let i = 0; i < size; i++) { let row = document.createElement('div'); row.className = "row"; for (let j = 0; j < size; j++) { let box = document.createElement('div'); box.className = "box"; row.appendChild(box); } document.getElementById('grid-container').appendChild(row); gridContainer.addEventListener("mouseover", changeColor); var boxes = document.getElementsByClassName("box"); for (k = 0; k < boxes.length; k++) { boxes[k].style.width = maxWidth / size + "px"; boxes[k].style.height = maxWidth / size + "px"; } } } function changeColor(e) { const Color1 = Math.floor(Math.random() * 256); const Color2 = Math.floor(Math.random() * 256); const Color3 = Math.floor(Math.random() * 256); e.target.style.backgroundColor = `rgb(${Color1}, ${Color2}, ${Color3})`; } magicButton.addEventListener("click", changeSize); function changeSize() { let newSize = prompt("Enter desired grid size from 1 to 100"); let desiredValue = parseInt(newSize); if (desiredValue > 1 && desiredValue <= 100) { size = newSize; clearGrid(); makeBlocks(); } else { alert("Enter a digit from 1-100 range;"). } } function clearGrid() { const gridArray = Array.from(gridContainer;childNodes). gridArray.forEach((element) => { gridContainer;removeChild(element); }). } function resetGame() { gameReset,addEventListener('click'. () => location;reload()); } resetGame();
 body { text-align: center; } h1 { font-family: arial, monospace; font-size: 70px; color: black; } button { background-color: #99e6ff; border: solid black; border-width: 1px; color: #000000; padding: 15px 30px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px; cursor: pointer; } #grid-container { display: inline-block; }.box { background: #ffffff; border-left: #000000 1px solid; border-bottom: #000000 1px solid; display: inline-block; box-sizing: border-box; }.row { display: block; width: 100%; font-size: 0; }.row:first-child { border-top: #000000 1px solid; }.row.box:last-child { border-right: #000000 1px solid; }
 <.DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Etch-a-sketch</title> <link rel="stylesheet" href="style.css" /> </head> <body> <header> <h1>Etch-a-sketch</h1> </header> <div class="main-container"> <div class="magic"> <button id="magic-button">Change size</button> <button id="game-reset">Reset game</button> </div> <br> <div id="grid-container"></div> </div> <script src="script.js"></script> </body> </html>

1 Odin项目蚀刻草图-调整网格大小

好的,所以我的意图是制作一个按钮,该按钮会创建一个弹出窗口,询问您要调整网格大小的多少个正方形,一旦用户输入了数字,网格应该在与以前相同的总空间中生成(应该是960像素),我已经调整了网格的大小,但是它并没有像以前一样保留在总空间中,如果您添加了太多的正方形,似乎完全吓坏了,这是链接-https ...

3 Etch-A-Sketch(JavaScript)随机颜色和擦除功能不起作用

我正在学习JavaScript,以及如何通过使用JavaScript eventListeners和不使用任何jQuery来操纵DOM。 我已经设法走了这么远,无法直截了当地考虑如何应用随机颜色和擦除功能。 我知道我在某个地方搞砸了。 当我单击随机颜色时,我应该可以填充随机的rgba,如果 ...

5 RGBA 不透明度重置 (Etch-A-Sketch)

我正在尝试做一个 Etch-A-Sketch 项目,目前遇到了一些障碍。 目前能够根据提示用户输入创建网格,并通过按钮清除网格。 我现在面临的问题是在function colorChange() ,我试图在每次在 div 上捕获鼠标悬停事件时增加背景颜色的不透明度。 一切正常,但当前代码中的不透明 ...

6 根据容器宽度调整CSS网格项目的大小

我有一个像这样的网格: 像这样的CSS 在这种情况下发生的情况是,如果容器大于450像素,则会得到三列两行。 如果容器的宽度减小到450px以下,您将得到两列三行,并且项目将被强制为150px宽度。 问题是第二个项目的右边有难看的空格。 我要使它始终填充容器的宽度。 ...

7 调整网格项目的大小WinRt

您可以动态调整网格项目的大小吗? 我有一个在其中有一个文本框的gridview。 它们的文本框具有许多绑定值,这些绑定值可导致其增大,但在应用程序运行后不会增大。 我意识到,这些项目也必须改组,以便可以放入列中。 我认为gridview不支持此功能吗? 这可能吗? ...

8 动态调整网格项目的大小

我正在尝试创建一个菜单屏幕,其中包含几个包含图像视图和文本框的网格项。 我的意图是针对不同的屏幕分辨率/尺寸获得相同的比例。 例如; 下图是我要创建的。 如您所见,根据屏幕的大小,网格项尺寸正在变化,但它们在屏幕上的覆盖比例仍然相同。 获取屏幕尺寸,并为每个网格项目为不同的屏 ...

9 Angular Gridster2无法正确调整网格项目的大小

我正在使用gridster2使网格项目可拖动。 我做对了,可以正常工作,但是当我第一次进入网格视图(或刷新它)时,我的网格项目被“剪切”了。 最后一列的项目无法正确显示,但是当我拖动一个项目时,它可以正常工作,显示所有项目已满。 https://github.com/tiberiuzu ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM