recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment supprimer l'espace sous chaque ligne du tableau Tic-Tac-Toe dans Next.js en utilisant CSS ?

Pourquoi y a-t-il un espace sous chaque ligne ? (CSS)

J'essaie de créer une application Next.js tic-tac-toe pour tester mes compétences. Cependant, j'ai des problèmes avec les CSS. Il semble y avoir un problème de rembourrage sous chaque rangée de planches : il y a un petit espace sous chaque rangée. Ci-joint une photo.

J'ai essayé de définir le remplissage et les marges à 0 presque partout. C'est mon CSS.

body {
    background-color: black;
    height: 100vh;
    width: 100vw;
    margin: 0;
    padding: 0;
}

* {
    box-sizing: border-box;
}

h1, h2, h3, h4, h5, h6, p {
    margin-top: 0;
    padding: 0;
}

.square {
    height: 30vmin;
    width: 30vmin;
    font-size: 25vmin;
    border: 2px solid white;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: black;
    color: white;
    float: left;
    margin-top: -1px;
    margin-right: -1px;
    line-height: 30vmin;
    padding: 0;
}

.squareContainer {
    display: inline-block;
}

.boardContainer {
    border: 2px solid white;
    display: inline-block;
    margin: 0;
}

.container {
    height: 100vh;
    width: 100vw;
    display: flex;
    justify-content: center;
    align-items: center;
}

.boardRow:after {
    clear: both;
    content: '';
    display: table;
    padding: 0;
  }

Voici JSX pour la carte mère :

<div className={styles.boardContainer}>
            <div className={styles.boardRow}>
                <Square value={squares[0]} onSquareClick={() => handleClick(0)}/>
                <Square value={squares[1]} onSquareClick={() => handleClick(1)}/>
                <Square value={squares[2]} onSquareClick={() => handleClick(2)}/>
            </div>
            <div className={styles.boardRow}>
                <Square value={squares[3]} onSquareClick={() => handleClick(3)}/>
                <Square value={squares[4]} onSquareClick={() => handleClick(4)}/>
                <Square value={squares[5]} onSquareClick={() => handleClick(5)}/>
            </div>
            <div className={styles.boardRow}>
                <Square value={squares[6]} onSquareClick={() => handleClick(6)}/>
                <Square value={squares[7]} onSquareClick={() => handleClick(7)}/>
                <Square value={squares[8]} onSquareClick={() => handleClick(8)}/>
            </div>
        </div>

Pour les carrés :

<div className={styles.squareContainer}>
            <button className={styles.square} onClick={onSquareClick}>
                <p>
                    { value }
                </p>
            </button>
        </div>

Je ne sais pas quel est le problème, aidez-moi s'il vous plaît.

P粉004287665P粉004287665272 Il y a quelques jours1634

répondre à tous(1)je répondrai

  • P粉828463673

    P粉8284636732024-04-06 10:55:58

    Je dois deviner le HTML. J'espère que cela correspond au vôtre. Commenter la règle .squareContainerdisplay: inline-block; résout le problème. Pourtant, ce CSS/html est excessif à cet effet. Vous pouvez le simplifier considérablement.

    body {
        background-color: black;
        height: 100vh;
        width: 100vw;
        margin: 0;
        padding: 0;
    }
    
    * {
        box-sizing: border-box;
    }
    
    h1, h2, h3, h4, h5, h6, p {
        margin-top: 0;
        padding: 0;
    }
    
    .square {
        height: 30vmin;
        width: 30vmin;
        font-size: 25vmin;
        border: 2px solid white;
        display: flex;
        justify-content: center;
        align-items: center;
        background-color: black;
        color: white;
        float: left;
        margin-top: -1px;
        margin-right: -1px;
        line-height: 30vmin;
        padding: 0;
    }
    
    .squareContainer {
        /* display: inline-block;  */
    }
    
    .boardContainer {
        border: 2px solid white;
        display: inline-block;
        margin: 0;
    }
    
    .container {
        height: 100vh;
        width: 100vw;
        display: flex;
        justify-content: center;
        align-items: center;
    }
    
    .boardRow:after {
        clear: both;
        content: '';
        display: table;
        
        padding: 0;
      }
    <body>
      <div class="container">
        <div class="boardContainer">
          <div class="boardRow">
            <div class="squareContainer">
              <div class="square"></div>
              <div class="square"></div>
              <div class="square"></div>        
            </div>
          </div>
          <div class="boardRow">
            <div class="squareContainer">
              <div class="square"></div>
              <div class="square"></div>
              <div class="square"></div>        
            </div>
          </div>
          <div class="boardRow">
            <div class="squareContainer">
              <div class="square"></div>
              <div class="square"></div>
              <div class="square"></div>        
            </div>
          </div>
        </div>
      </div>
    </body>

    répondre
    0
  • Annulerrépondre