Làm thế nào để ngăn văn bản trong một ô bảng


285

Có ai biết làm thế nào tôi có thể ngăn văn bản trong một ô bảng không? Cái này dành cho tiêu đề của một bảng và tiêu đề dài hơn nhiều so với dữ liệu bên dưới nó, nhưng tôi cần nó chỉ hiển thị trên một dòng. Không sao nếu cột rất rộng.

HTML của bảng (đơn giản hóa) của tôi trông như thế này:

<table>
  <thead>
    <tr>
      <th>
        <div>Really long column heading</div>
      </th>
      <th>
        <div>Really long column heading</div>
      </th>
      <th>
        <div>Really long column heading</div>
      </th>
      <th>
        <div>Really long column heading</div>
      </th>
      <th>
        <div>Really long column heading</div>
      </th>
      <th>
        <div>Really long column heading</div>
      </th>
      <th>
        <div>Really long column heading</div>
      </th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
        <div>data</div>
      </td>
      <td>
        <div>data</div>
      </td>
      <td>
        <div>data</div>
      </td>
      <td>
        <div>data</div>
      </td>
      <td>
        <div>data</div>
      </td>
      <td>
        <div>data</div>
      </td>
      <td>
        <div>data</div>
      </td>
    </tr>
  </tbody>
</table>

Bản thân tiêu đề được gói trong một div bên trong ththẻ vì lý do liên quan đến javascript trên trang.

Bảng sắp ra với các tiêu đề gói vào nhiều dòng. Điều này dường như chỉ xảy ra khi bảng đủ rộng, vì trình duyệt đang cố gắng tránh cuộn ngang. Trong trường hợp của tôi, mặc dù, tôi muốn cuộn ngang.

Có ý kiến ​​gì không?

Câu trả lời:


485

Có một cái nhìn vào white-space tài sản, được sử dụng như thế này:

th {
    white-space: nowrap;
}

Điều này sẽ buộc các nội dung <th>hiển thị trên một dòng.

Từ trang được liên kết, đây là các tùy chọn khác nhau cho white-space :

bình thường
Giá trị này chỉ đạo các tác nhân người dùng thu gọn các chuỗi khoảng trắng và ngắt các dòng khi cần thiết để điền vào các ô dòng.

trước
Giá trị này ngăn tác nhân người dùng thu gọn các chuỗi khoảng trắng. Các dòng chỉ bị hỏng ở các ký tự dòng mới được bảo tồn.

bây giờ
Giá trị này thu gọn khoảng trắng như đối với 'bình thường', nhưng triệt tiêu ngắt dòng trong văn bản.

bọc trước
Giá trị này ngăn các tác nhân người dùng thu gọn các chuỗi khoảng trắng. Các dòng bị phá vỡ tại các ký tự dòng mới được bảo tồn và khi cần thiết để điền vào các hộp dòng.

tiền dòng
Giá trị này hướng các tác nhân người dùng thu gọn các chuỗi khoảng trắng. Các dòng bị phá vỡ tại các ký tự dòng mới được bảo tồn và khi cần thiết để điền vào các hộp dòng.


8
không hoạt động cho trường đầu vào và nút trong cùng một ô. địa điểm ngẫu nhiên dưới đây.
Doomsknight

16
Tableyếu tố phải có table-layout:fixed;để làm việc này.
daniloquio

@Doomsknight Bạn có tìm thấy cách để đạt được nó với một trường đầu vào và một yếu tố khác trong cùng một ô không?
tình yêu Không có

khoảng trắng: trước; là những gì tôi cần vì -28.04 được gói giữa - và 28.04
Brent

1
@Doomsknight Tôi gặp vấn đề tương tự với một hộp kiểm và giải quyết nó bằng cách cập nhật CSS vớiinput { display: inline; }
Chương trình

66
<th nowrap="nowrap">

hoặc là

<th style="white-space:nowrap;">

hoặc là

<th class="nowrap">
<style type="text/css">
.nowrap { white-space: nowrap; }
</style>

6
Lưu ý rằng nowrapđã được phản đối. w3.org/TR/html401/struct/tables.html#h-11.2.6 . Sử dụng tờ phong cách thay thế.
wvducky

Ghi chú. nếu sử dụng bất cẩn, thuộc tính này có thể dẫn đến các ô quá rộng.
ArifMustafa

1
@wvducky Làm thế nào để một "sử dụng biểu định kiểu"?
rogerdpack

22

Có ít nhất hai cách để làm điều đó:

Sử dụng thuộc tính nowrap bên trong thẻ "td":

<th nowrap="nowrap">Really long column heading</th>

Sử dụng khoảng trắng không thể phá vỡ giữa các từ của bạn:

<th>Really&nbsp;long&nbsp;column&nbsp;heading</th>

6
Lưu ý rằng nowrapđã được phản đối. w3.org/TR/html401/struct/tables.html#h-11.2.6 . Sử dụng tờ phong cách thay thế.
wvducky

6

Tôi đến với câu hỏi này cần phải ngăn chặn gói văn bản ở dấu gạch nối.

Đây là cách tôi đã làm nó:

<td><nobr>Table Text</nobr></td>

Tài liệu tham khảo:

Làm cách nào để ngăn chặn ngắt dòng ở dấu gạch nối trên tất cả các trình duyệt


Điều đáng chú ý là nobrthẻ không chuẩn, như được chỉ ra trong câu trả lời được chấp nhận được liên kết trong câu trả lời này: stackoverflow.com/a/8755071/4257
pkating

Khá đúng. Quan điểm của bạn được đón nhận. Tôi đọc tất cả những bình luận đó, ghi nhận kinh nghiệm của những người bình luận tương ứng và thực hiện một cuộc gọi phán xét. Dấu gạch nối là một chút khó khăn. (Lưu ý: câu hỏi bạn liên kết trong nhận xét của bạn giống với câu hỏi tôi đã liên kết trong câu trả lời của mình)
cssyphus

Vâng, nó có nghĩa là cùng một câu hỏi. Tôi chỉ muốn chắc chắn rằng cảnh báo đã được đăng ở đây trong trường hợp ai đó tìm thấy câu trả lời này trong tương lai, và không buồn đọc tài liệu tham khảo được liên kết.
pkaeding

1

Để sử dụng với UI React / Material

Trong trường hợp bạn ở đây tự hỏi làm thế nào điều này hoạt động cho UI UI khi xây dựng trong React, đây là cách bạn thêm phần này vào <TableHead>Thành phần của mình :

<TableHead style={{ whiteSpace: 'nowrap'}}>
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.