Cách xóa hoàn toàn viền khỏi bảng HTML


141

Mục tiêu của tôi là tạo một trang HTML tương tự như "khung ảnh". Nói cách khác, tôi muốn tạo một trang trống được bao quanh bởi 4 hình ảnh.

Đây là mã của tôi:

<table>
    <tr>
        <td class="bTop" colspan="3">
        </td>
    </tr>
    <tr>
        <td class="bLeft">
        </td>
        <td class="middle">
        </td>
        <td class="bRight">
        </td>
    </tr>
    <tr>
        <td class="bBottom" colspan="3">
        </td>
    </tr>                                                    
</table>

Và các lớp CSS như sau:

.bTop
{
    width: 960px;
    height: 111px;
    background-image: url('../Images/BackTop.jpg');
}
.bLeft
{
    width: 212px;
    height: 280px;
    background-image: url('../Images/BackLeft.jpg');    

}

.middle
{
    width: 536px;
    height: 280px;
}

.bRight
{
    width: 212px;
    height: 280px;
    background-image: url('../Images/BackRight.jpg');    
}

.bBottom
{        
    width: 960px;
    height: 111px;
    background-image: url('../Images/BackBottom.jpg');       
}

Vấn đề của tôi là tôi nhận được các đường trắng mỏng giữa các ô của bảng, ý tôi là đường viền của hình ảnh không liên tục. Làm thế nào tôi có thể tránh những khoảng trắng này?

Câu trả lời:


179
<table cellspacing="0" cellpadding="0">

Và trong css:

table {border: none;}

EDIT: Như iGEL đã lưu ý, giải pháp này không còn chính thức (mặc dù vẫn hoạt động), vì vậy nếu bạn đang bắt đầu từ đầu, bạn nên đi với giải pháp thu gọn biên giới của jnpcl.

Tôi thực sự khá không thích sự thay đổi này cho đến nay (không thường xuyên làm việc với các bảng). Nó làm cho một số nhiệm vụ phức tạp hơn một chút. Ví dụ: khi bạn muốn bao gồm hai đường viền khác nhau ở cùng một nơi (trực quan), trong khi một đường viền là TOP cho một hàng và thứ hai là BOTTOM cho hàng khác. Họ sẽ sụp đổ (= chỉ một trong số họ sẽ được hiển thị). Sau đó, bạn phải nghiên cứu cách tính "ưu tiên" của đường viền và kiểu đường viền nào "mạnh hơn" (gấp đôi so với khối, v.v.).

Tôi đã làm như thế này:

<table cellspacing="0" cellpadding="0">
  <tr>
    <td class="first">first row</td>
  </tr>
  <tr>
    <td class="second">second row</td>
  </tr>
</table>

----------

.first {border-bottom:1px solid #EEE;}
.second {border-top:1px solid #CCC;}

Bây giờ, với sự sụp đổ biên giới, điều này sẽ không hoạt động vì luôn có một đường viền bị xóa. Tôi phải làm điều đó theo một số cách khác (có nhiều giải pháp hơn). Một khả năng là sử dụng CSS3 với bóng hộp:

<table class="tab">
  <tr>
    <td class="first">first row</td>
  </tr>
  <tr>
    <td class="second">second row</td>
  </tr>
</table>​​​

<style>
.tab {border-collapse:collapse;}
.tab .first {border-bottom:1px solid #EEE;}
.tab .second {border-top:1px solid #CCC;box-shadow: inset 0 1px 0 #CCC;}​
</style>

Bạn cũng có thể sử dụng một cái gì đó như kiểu đường viền "groove | ridge | inset | outset" chỉ với một đường viền duy nhất. Nhưng đối với tôi, điều này không tối ưu, vì tôi không thể kiểm soát cả hai màu.

Có thể có một số giải pháp đơn giản và tốt đẹp cho việc thu gọn biên giới, nhưng tôi chưa thấy nó và tôi thực sự đã không dành nhiều thời gian cho nó. Có lẽ ai đó ở đây sẽ có thể chỉ cho tôi / chúng tôi;)


7
không gian di động & di động không được chấp nhận từ năm 1999, xem developer.mozilla.org/en-US/docs/HTML/Euity/table - Bạn nên đi với giải pháp @jnpcl.
iGEL

iGEL đã đúng, tôi đã chỉnh sửa câu trả lời của mình. Thành thật mà nói, tôi đã rất ngạc nhiên, rằng nó đã bị từ chối trong một thời gian dài như vậy và tôi vẫn đang sử dụng nó mà không gặp vấn đề gì :)
Damb


19

Đối với tôi, tôi cần phải làm một cái gì đó như thế này để loại bỏ hoàn toàn các đường viền khỏi bảng và tất cả các ô. Điều này không yêu cầu sửa đổi HTML, điều này rất hữu ích trong trường hợp của tôi.

table, tr, td {
    border: none;
}

3
Đã thử mọi đề nghị cho đến đây, và cuối cùng đã border: noneáp dụng để tdjekyll bị thuyết phục để tạo ra một bảng không biên giới:<td markdown="span" style="padding: 0.5vw; border: none; max-width:100%; max-height:10%; background: transparent;">
Avio

16

Trong môi trường bootstrap, không có câu trả lời hàng đầu nào có ích, nhưng áp dụng những điều sau đây đã loại bỏ tất cả các đường viền:

.noBorder {
    border:none !important;
}

Áp dụng như:

<td class="noBorder">

1
Đề nghị này đã làm việc cho tôi trong Wordpress. Tôi đã gặp khó khăn để không có biên giới được thực thi.
robbpriestley

7

Trong môi trường bootstrap, đây là giải pháp của tôi:

    <table style="border-collapse: collapse; border: none;">
        <tr style="border: none;">
            <td style="border: none;">
            </td>
        </tr>
    </table>    

4

Đây là những gì đã giải quyết vấn đề cho tôi:

Trong thẻ tr HTML của bạn, thêm điều này:

style="border-collapse: collapse; border: none;"

Điều đó đã loại bỏ tất cả các đường viền được hiển thị trên hàng của bảng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.