Tôi đang cố gắng tạo lưới 3x3 đơn giản (sử dụng <table>
) với tất cả các ô có đường viền 1px
. Nếu tôi chỉ sử dụng CSS để cung cấp cho tất cả các thành phần <td>
một đường viền 1px
thì đường viền bên trong sẽ chồng lên nhau và tạo ra biên giới 2px
để tôi xử lý từng khác nhau <td>
. Tôi đã thành công trong việc làm theo cách đó và đã sử dụng con số nth
để giảm CSS. Tuy nhiên, câu hỏi của tôi là tại sao một cách hợp lý nhất định sử dụng bộ chọn CSS thậm chí ít hơn không hoạt động.CSS lồng nhau nth-child() đang hoạt động lạ
Đây là HTML của tôi
<!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>
Đây là CSS mà hoạt động:
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;
}
Đây là CSS mà sử dụng một selector ít hơn và nên làm việc nhưng không hiểu sao tất cả các tế bào trên kết thúc với không đường viền trên cùng.
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;
}
Tôi đã thử nghiệm với cả Safari và Firefox. Ngoài ra xin vui lòng cho tôi biết nếu có một cách tốt hơn để làm điều đó.