css 为什么单元格之间有间隙?[duplicate]

qni6mghb  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(146)

此问题在此处已有答案

Vertical space between two inline-block and a block element(5个答案)
3天前关闭。
我试图使一个可定制的网格(默认16x16),但当它的创建有细胞之间的差距。
CSS:

#container{
    position: relative;
    margin: auto;
    width: 800px;
    height: 800px;
    border: none;
    outline: 2px solid red;
    padding: 0;
}

.grid{
    margin: 0;
    padding: 0;
    outline: 1px solid black;
    border: none;
    display: inline-block;
}

JavaScript语言:

let gridSize = 0;

const btn = document.querySelector("#btn");
btn.addEventListener("click", function(){
    let input = prompt("Enter a grid size (100 or lower):");
    createGrid(input);
});

const container = document.querySelector("#container");

createGrid(16);

function createGrid(rows){

    rows = parseInt(rows);
    gridSize = rows * rows;
    container.innerHTML = "";

    for(let i = 0; i < gridSize; i++){
        const div = document.createElement("div");
        div.className = `grid`;
        container.appendChild(div);
    }

    const style = document.createElement("style");
    style.innerText = `  
    .grid{
        height: ${800/rows}px;
        width: ${800/rows}px;
    }`;
    const body = document.head.appendChild(style);
}

总之,网格是用Javascript制作的,方法是将其附加到html中的容器。我将其包括在内是为了以防相关,因为样式有一些变化,我想这与此有关。

rsaldnfx

rsaldnfx1#

我怀疑是使用默认显示块的div #容器造成的。您可以使用flexbox通过添加以下内容来修复它:

display: flex;
flex-flow: row wrap;

到您的#container css

twh00eeo

twh00eeo2#

似乎是由于containerline-height造成的。
一个快速的解决办法是在container上设置一个line-height: 0来消除差距。
示例:

#container {
  /*   Add 👇 */
  line-height: 0;

  position: relative;
  margin: auto;
  width: 800px;
  height: 800px;
  border: none;
  outline: 2px solid red;
  padding: 0;
}

希望这会有所帮助。

相关问题