Thêm đường viền dưới cùng vào hàng bảng <tr>


386

Tôi có một bảng 3 trên 3. Tôi cần một cách để thêm một đường viền cho dưới cùng của mỗi hàng trvà cung cấp cho nó một màu cụ thể.

Đầu tiên tôi đã thử cách trực tiếp, tức là:

<tr style="border-bottom:1pt solid black;">

Nhưng điều đó đã không làm việc. Vì vậy, tôi đã thêm CSS như thế này:

tr {
border-bottom: 1pt solid black;
}

Điều đó vẫn không hiệu quả.

Tôi thích sử dụng CSS hơn vì sau đó tôi không cần thêm stylethuộc tính cho mỗi hàng. Tôi đã không thêm một borderthuộc tính cho <table>. Tôi hy vọng điều đó không ảnh hưởng đến CSS của tôi.


Như một lưu ý phụ, nếu kiểu dáng nội tuyến (ví dụ đầu tiên trong câu hỏi của bạn) không hoạt động thì không chắc kiểu tạo nhúng (ví dụ thứ hai) sẽ hoạt động. Bạn cũng nên nghiên cứu tính khả dụng của các thuộc tính cho thành phần bạn đang cố gắng tạo kiểu: w3.org/TR/html-markup/tr.html
Tass

Nếu bạn muốn có đáy viền cho bảng tr, bạn có thể theo dõi jsfiddle.net/7awN4
AllenC

6
Chỉ là một lưu ý để khuyến khích những người tìm kiếm trong tương lai cuộn xuống câu trả lời của @Nathan Manousos, bên dưới - đó có thể là giải pháp bạn đang tìm kiếm
henry

Câu trả lời:


400

Tôi đã có một vấn đề như thế này trước đây. Tôi không nghĩ trcó thể lấy kiểu dáng đường viền trực tiếp. Cách giải quyết của tôi là tạo kiểu cho tdcác hàng:

<tr class="border_bottom">

CSS:

tr.border_bottom td {
  border-bottom:1pt solid black;
}

27
Lưu ý rằng sử dụng giải pháp này rất có thể bạn sẽ có một khoảng cách trong đường viền giữa các td. Câu trả lời của simoncereska quan tâm đến vấn đề này nhưng lưu ý rằng nó có thể trông không đẹp bằng các loại đường viền chấm hoặc nét đứt (vì chúng không liên tục)
Griddo

24
Bạn cũng có thể khắc phục điều này bằng cách thêm cellspacing="0"dưới dạng một thuộc tính vào <table>(xem câu hỏi này ). Mặc dù vậy, không biết cái này sẽ trông như thế nào với các đường viền chấm hoặc nét đứt.
Stefan van den Akker

5
trcó thể lấy kiểu dáng đường viền trong mô hình đường viền sụp đổ. @Sangram, xem xét chấp nhận một câu trả lời có tính đến điều đó thay vì câu trả lời này không?
Robert Siemer

Điều này sẽ không hoạt động nếu có phần đệm giữa các ô của bảng. Nếu có phần đệm thì đường viền rõ ràng sẽ được chia thành các phần int.
Timothy Gonzalez

và bảng của bạn cần kiểu này <table style = "Border-sụp đổ: sụp đổ">
Oguz

511

Thêm vào border-collapse:collapsequy tắc bảng của bạn:

table { 
    border-collapse: collapse; 
}

Liên kết


2
Điều này không hoạt động của chính nó. Bạn vẫn không thể tạo kiểu cho hàng, nhưng bạn có thể tạo kiểu cho các ô.
Renan

49
Bạn sai rồi, @Renan. Mô hình đường viền sụp đổ chính xác là những gì làm cho đường viền hàng có thể tạo kiểu. Theo CSS sectoin 17.6 : Trong mô hình viền riêng biệt Rows, [...] không thể có viền (nghĩa là các tác nhân người dùng phải bỏ qua các thuộc tính viền cho các phần tử đó). Trong mô hình đường viền bị sập, có thể chỉ định các đường viền bao quanh tất cả hoặc một phần của một ô, hàng [và] nhóm hàng [...] và nhân tiện: nó hoạt động trong trình duyệt của tôi (Chromium 37).
Robert Siemer

12
Tôi nghĩ rằng một số người có thể bị nhầm lẫn (như tôi đã làm) và không nhận thấy rằng phong cách sụp đổ biên giới cần phải được đặt trên bàn, không phải là hàng.
Porlune

Có vẻ như Chrome không có tính năng này, mặc dù nó hỗ trợ các tính năng thu gọn biên giới khác.
Sunn

72

Sử dụng border-collapse:collapsetrên bàn và border-bottom: 1pt solid black;trên tr


6
thiết lập đường viền trên tr là vô ích ngay cả với đường viền bị sụp đổ. bạn phải đặt nó trên tds của tr
Radu Simionescu

9
@RaduSimionescu Sai, nó hoạt động hoàn toàn tốt trvới biên giới bị sụp đổ.
Styphon

Không có hiệu lực trong FF 45.0.1.
imrek

41

Sử dụng

border-collapse:collapse như Nathan đã viết và bạn cần phải thiết lập

td { border-bottom: 1px solid #000; }


Đó cũng là cách tôi sẽ làm! Thêm đường viền trên td và sử dụng thu gọn đường viền trên bàn
Sayan

30

Có rất nhiều câu trả lời không đầy đủ ở đây. Vì bạn không thể áp dụng đường viền cho trthẻ, bạn cần áp dụng nó cho tdhoặc thcác thẻ như vậy:

td {
  border-bottom: 1pt solid black;
}

Làm điều này sẽ để lại một khoảng trống nhỏ giữa mỗi cái td, điều này có thể không được mong muốn nếu bạn muốn đường viền xuất hiện như thể đó là trthẻ. Để "điền vào các khoảng trống" để nói, bạn cần sử dụng thuộc border-collapsetính trên tablephần tử và đặt giá trị của nó thành collapse, như vậy:

table {
  border-collapse: collapse;
}

8

Sử dụng

table{border-collapse:collapse}
tr{border-top:thin solid}

Thay thế "solid solid" bằng các thuộc tính CSS.


7

Hiển thị hàng dưới dạng một khối.

tr {
    display: block;
    border-bottom: 1px solid #000;
}

và để hiển thị màu thay thế đơn giản:

tr.oddrow {
    display: block;
    border-bottom: 1px solid #F00;
}

11
Không phải là một ý tưởng tốt để thiết lậpdisplay: blockchotr. Sử dụngtr td { border-bottom: ... }quảng cáotr.oddrow td { border-bottom: ... }thay thế
vladr

4
khối hiển thị có thể phá hủy bố cục bảng.border-sụp đổ: sụp đổ trên chính bảng chắc chắn là giải pháp tốt nhất
N4ppeL

7

Bạn có thể sử dụng box-shadowtài sản để giả đường viền của một tryếu tố. Điều chỉnh vị trí Y của box-shadow(bên dưới được biểu thị là 2px) để điều chỉnh độ dày.

tr {
  -webkit-box-shadow: 0px 2px 0px 0px rgba(0,0,0,0.99);
  -moz-box-shadow: 0px 2px 0px 0px rgba(0,0,0,0.99);
  box-shadow: 0px 2px 0px 0px rgba(0,0,0,0.99);
}

6

Tôi đã thử thêm

    table {
      border-collapse: collapse;
    }   

bên cạnh

    tr {
      bottom-border: 2pt solid #color;
    }

và sau đó nhận xét về sự sụp đổ biên giới để xem những gì đã làm việc. Chỉ cần có bộ chọn tr với thuộc tính biên giới dưới cùng làm việc cho tôi!

Không có CSS ​​CSS cũ.

Không có CSS ​​CSS cũ.

Không có ảnh biên giới trực tiếp

Không có ảnh biên giới trực tiếp

CSS Border cũ.

CSS Border cũ.

Bảng có viền ảnh trực tiếp

Bảng có viền ảnh trực tiếp


2

Tôi thấy rằng khi sử dụng phương pháp này, khoảng cách giữa các phần tử td đã tạo ra một khoảng cách hình thành trong đường viền, nhưng không sợ hãi ...

Một cách xung quanh này:

<tr>
    <td>
        Example of normal table data
    </td>

    <td class="end" colspan="/* total number of columns in entire table*/">
        /* insert nothing in here */ 
    </td>
</tr>

Với CSS:

td.end{
    border:2px solid black;
}

2

<td style="border-bottom-style: solid; border-bottom: thick dotted #ff0000; ">

Bạn có thể làm tương tự cho toàn bộ hàng là tốt.

border-bottom-style, border-top-style, border-left-style, border-right-style. Hoặc đơn giảnborder-style là áp dụng cho tất cả bốn biên giới cùng một lúc.

Bạn có thể xem (và THỬ BẠN trực tuyến) chi tiết hơn tại đây


2

Một số câu trả lời thú vị. Vì bạn chỉ muốn một đáy biên (hoặc trên cùng) ở đây là hai nữa. Giả sử bạn muốn có viền màu xanh dày 3px. Trong phần kiểu bạn có thể thêm

.blueB {background-color:blue; height:3px} or
hr {background-color:blue; color:blue height:3px}

Trong mã bảng

<tr><td colspan='3' class='blueB></td></tr> or
<tr><td colspan='3'><hr></td></tr>


1

Không có viền CSS phía dưới:

<table>
    <thead>
        <tr>
            <th>Title</th>
        </tr>
        <tr>
            <th>
                <hr>
            </th>
        </tr>
    </thead>
</table>

0

Bạn không thể đặt đường viền trên phần tử tr. Điều này làm việc cho tôi trong firefox và IE 11:

<td style='border-bottom:1pt solid black'>

bạn không thể đặt một đường viền trên một tr. Chỉnh sửa câu trả lời để làm rõ điều này.
Decko

Đó là câu trả lời đơn giản và chính xác nhất.
JamesC

-3

HTML

<tr class="bottom-border">
</tr>

CSS

tr.bottom-border {
  border-bottom: 1px solid #222;
}

2
vô dụng mà không sụp đổ biên giới: sụp đổ;
m1crdy
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.