Estou iniciando um aplicativo de teste simples usando NextJS/React.
Abaixo está o código:
O conteúdo do arquivo Board.tsx:
import './Board.css';
export default function Board() {
return <div className="board">
<Row/>
<Row/>
<Row/>
</div>
} /* End of Board */
function Row() {
return <div className="row">
<Cell/>
<Cell/>
<Cell/>
</div>
} /* End of Row */
function Cell() {
return <div className="cell"/>
} /* End of Cell */
E o conteúdo do arquivo Board.css:
.cell {
width: 3rem;
height: 3rem;
background-color: rgb(255, 255, 0);
border-width: 2px;
border-color: rgb(55, 55, 55);
margin: 11%;
}
.row {
display: flex;
flex-direction: row;
}
.board {
display: flex;
flex-direction: column;
}
No topo está o arquivo app/page.tsx:
import Image from 'next/image'
import Board from './components/Board'
export default function Home() {
return (
<main className="flex min-h-screen flex-col items-center justify-between p-24">
X4C APP
<Board/>
</main>
)
}
Aqui está o que aparece no navegador da web ao executar o aplicativo:
Finalmente tenho uma pergunta. Por que não vemos quadrados amarelos perfeitos, quando o CSS indica uma largura e altura fixas para o componente da célula?
Posso ver, experimentando, que se eu remover os dois blocos
.row {...}
.board {...}
do arquivo Board.css, obtenho quadrados perfeitos.
Então, o que está causando esse problema nesses dois blocos?
É porque você está dando margem em porcentagem aqui (
margin: 11%;
) para oCell
. se você alterá-lo para algum valor absoluto como 10px/10rem, verá quadrados perfeitos.Como o valor padrão
flex-shrink
para suas células é1
, suas células tentarão diminuir se não tiverem espaço suficiente. Dar uma margem%
consumirá o espaço disponível em sua célula e, portanto, a célula diminuirá.Se você ainda quiser manter a margem
%
, poderá definirflex-shrink: 0;
sua célula, o que impedirá que suas células diminuam