Maison > Questions et réponses > le corps du texte
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粉8284636732024-04-06 10:55:58
Je dois deviner le HTML. J'espère que cela correspond au vôtre. Commenter la règle .squareContainer
的 display: 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>