2012-10-30 14 views
6

Tôi có một <table> nơi tôi muốn biên giới dọc trong <thead>/<th> là của một màu khác với phần còn lại của các đường viền (tất cả các đường viền rộng 1 pixel, không có viền trên đầu bảng). Điều này có vẻ dễ dàng - vấn đề là trong cả Firefox, Safari và Chrome, các đường viền dọc "chảy máu" vào đường viền ngang bên dưới, trông không đẹp lắm. Trong Firefox có vẻ OK nếu hàng bên dưới <thead> chứa cùng một số cột/ô như <thead>, nhưng nếu tôi sử dụng <colspan> tôi sẽ bị "chảy máu".biên giới dọc của <thead> trong màu khác với phần còn lại của <table> biên giới - chảy máu vào biên ngang dưới đây - Firefox colspan vấn đề

Giải pháp rõ ràng là sử dụng "rắn" trên đường viền <th> dọc và "gấp đôi" trên đường viền ngang <td> dưới đây - và điều này thực sự hoạt động trong Safari và Chrome. Tuy nhiên, tôi chưa đưa ra một giải pháp cho Firefox, và tôi nghĩ rằng tôi đã thử mọi thứ. Tôi không thể xóa thu gọn biên giới vì điều đó là cần thiết cho các mục đích khác. (Vâng, theo mặc định có vẻ như tôi muốn trong IE8 và Opera!)

Xem ví dụ: http://jsfiddle.net/7YdCQ/

Mã (một ví dụ rất đơn giản với màu sắc mạnh mẽ) - CSS (tất cả biên giới vững chắc):

table { border-collapse: collapse; } 
thead th { border-left: 1px solid #F00; border-right: 1px solid #F00; } 
tbody th, td { border: 1px solid #0F0; } 

HTML (2 bảng, 1 với colspan):

<table> 
    <thead> 
     <tr> 
      <th>Thead TD 1</th> 
      <th>Thead TD 2</th> 
      <th>Thead TD 3</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <th colspan="3">Tbody TH colspan 3</th> 
     </tr> 
     <tr> 
      <td>Tbody TD</td> 
      <td>Tbody TD</td> 
      <td>Tbody TD</td> 
     </tr> 
    </tbody> 
</table> 
<table> 
    <thead> 
     <tr> 
      <th>Thead TD 1</th> 
      <th>Thead TD 2</th> 
      <th>Thead TD 3</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td>Tbody TD</td> 
      <td>Tbody TD</td> 
      <td>Tbody TD</td> 
     </tr> 
    </tbody> 
</table> 
+0

tôi thể thêm rằng giải pháp Chrome/Đi săn không làm việc rất tốt cho tôi, như tôi muốn thay đổi màu đường viền trên di chuột, điều này là không thể nếu biên giới ban đầu là gấp đôi. Thay vào đó, tôi đã thử với các biến thể khác như inset, nhưng chúng trông khác nhau trong các trình duyệt khác nhau. Có vẻ như giải pháp duy nhất có thể là sử dụng hình nền TH làm đường viền, nhưng vấn đề với đó là phải được đặt ở bên phải của TH trong Firefox và IE, nhưng ở bên trái trong Chrome/Safari/Opera, để phù hợp với biên giới thực của các TD dưới đây. Tôi không muốn sử dụng hack của trình duyệt. –

Trả lời

1

giải pháp là để ghi đè lên phong cách CSS đúng cách. Đã thử nghiệm với colspan trong <th> của cả hai thẻ <thead><tbody>. Ví dụ chỉnh sửa: http://jsfiddle.net/7YdCQ/21/

CSS

table { border-collapse: collapse; } 
tbody th, tbody td { border: 1px solid #0F0; } 
thead td, thead th, tbody th { border-left: 1px solid #F00; border-right: 1px solid #F00; } 

HTML

<table> 
    <thead> 
     <tr> 
      <th>Thead TH 1</th> 
      <td colspan='2'>Thead TD colspan 2</td> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <th colspan='3'>Tbody TH colspan 3</th> 
     </tr> 
     <tr> 
      <td>Tbody TD</td> 
      <td>Tbody TD</td> 
      <td>Tbody TD</td> 
     </tr> 
    </tbody> 
</table> 
<br> 
<table> 
    <thead> 
     <tr> 
      <th>Thead TD 1</th> 
      <th>Thead TD 2</th> 
      <th>Thead TD 3</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td>Tbody TD</td> 
      <td>Tbody TD</td> 
      <td>Tbody TD</td> 
     </tr> 
    </tbody> 
</table> 
+0

Cảm ơn nhưng trông giống như ví dụ của tôi - đường viền dọc màu đỏ "chảy máu" vào đường viền ngang màu xanh lá cây phía trên colspan. Những gì tôi muốn, là biên giới ngang hàng đầu của colspan được tất cả các màu xanh lá cây từ trái sang phải, với các đường viền màu đỏ dọc của thead được chỉ ở hai bên của thứ (vì chúng không có colspan trong ví dụ của tôi). –