Sto provando a creare una semplice griglia 3x3 (utilizzando <table>
) con tutte le celle con un bordo 1px
. Se uso semplicemente i CSS per assegnare a tutti gli elementi <td>
un bordo 1px
, i bordi interni si impilano e creano il bordo 2px
, quindi sto trattando ogni <td>
in modo diverso. Sono riuscito a farlo in questo modo e ho usato il bambino nth
per ridurre il CSS. Tuttavia, la mia domanda è perché un certo modo logico che utilizza anche meno selettori CSS non funziona.CSS nested nth-child() sta agendo strano
Ecco il mio HTML
<!DOCTYPE html>
<html>
<head>
<title>3x3 grid</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<table>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
</table>
</body>
</html>
Ecco il CSS che funziona:
td{
border: 1px #000;
width:30px;
height: 30px;
text-align: center;
border-style: solid;
}
tr:nth-child(2) td{
border-top: 0px;
}
tr:nth-child(3) td{
border-top: 0px
}
td:nth-child(1){
border-right: 0px;
}
td:nth-child(3){
border-left: 0px;
}
table{
border-spacing: 0px;
border-collapse: separate;
}
Ecco il CSS che utilizza uno meno del selettore e dovrebbe funzionare ma in qualche modo tutte le cellule superiori finire con nessun fronti superiori.
td{
border: 1px #000;
border-top: 0px;
width:30px;
height: 30px;
text-align: center;
border-style: solid;
}
tr:nth-child(1) td{
border-top: 1px;
}
td:nth-child(1){
border-right: 0px;
}
td:nth-child(3){
border-left: 0px;
}
table{
border-spacing: 0px;
border-collapse: separate;
}
L'ho provato con Safari e Firefox. Per favore, dimmi se c'è un modo migliore per farlo.