javascript - 更改innerHTML后 block 位置发生变化

标签 javascript html css

我正在尝试制作一款 X-O 游戏 所以html是这样的:

    const blocks = document.querySelectorAll(".block")
    let turn =  "X"
    for (let i = 0; i < blocks.length; i++) {
        blocks[i].addEventListener("click", function () {
            if (this.innerHTML == "") {
                this.innerHTML = turn
            }}
        )}
    .block {
        width: 100px;
        height: 100px;
        border: 1px solid black;
        text-align: center;
        line-height: 100px;
        font-size: 50px;
        font-weight: bold;
        cursor: pointer;
        padding: 0;
        display: inline-block;
}
    #game{
        max-width: 400px;
        max-height: 400px;
}
<div id="game">
    <div class="block"></div>
    <div class="block"></div>
    <div class="block"></div>
    <div class="block"></div>
    <div class="block"></div>
    <div class="block"></div>
    <div class="block"></div>
    <div class="block"></div>
    <div class="block"></div>
</div>

一切都很好。 但是当我按下一个 block 时,它的位置会发生一点变化: enter image description here

最佳答案

我有一个稍微不同的解决方案,使用行和列结构以及 Flex。

将结构划分为表格结构(例如:行、列)。尝试使用 display:flex 在同一行中显示框。

const blocks = document.querySelectorAll(".col");
let turn =  "X";
for (let i = 0; i < blocks.length; i++) {
    blocks[i].addEventListener("click", function () {
        if (this.innerHTML == "") {
            this.innerHTML = turn;
        }
    });
 }
.row{
    display: flex;
}
.col {
    width: 100px;
    height: 100px;
    border: 1px solid black;
    text-align: center;
    line-height: 100px;
    font-size: 50px;
    font-weight: bold;
    cursor: pointer;
    padding: 0;
}
#game {
    max-width: 400px;
    max-height: 400px;
}
<div id="game">
  <div class="row">
    <div class="col"></div>
    <div class="col"></div>
    <div class="col"></div>
  </div>
  <div class="row">
    <div class="col"></div>
    <div class="col"></div>
    <div class="col"></div>
  </div>
  <div class="row">
    <div class="col"></div>
    <div class="col"></div>
    <div class="col"></div>
  </div>
</div>

关于javascript - 更改innerHTML后 block 位置发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72994466/

相关文章:

javascript - 如何打印单选按钮的选定值?

javascript - Jquery/CSS 以打印类为目标

html - 旋转中间 flex 列效果

javascript - 如何在选中复选框时启用选项卡

javascript - 粒子 JS 问题

javascript - 使用 jQuery 或 CSS 交换列表项——这可能吗?

javascript - 如何用js检查字符串的第n个字符是数字?

javascript - 带有 Bootstrap 模式的 SOFT-KEYBOARD 焦点

javascript - 哪个css参数修改animate ('width' , 'hide' ) 函数

javascript - 只显示一次预加载器而不显示正文内容