2012-09-29 32 views
5

Tôi có một số <dl> chứa văn bản ngắn <dt> và có thể dài <dd> văn bản. Trong cách bố trí nơi tôi đang sử dụng chúng tôi muốn họ xuất hiện side-by-side:Định nghĩa danh sách song song mà không cần gói các dòng quá dài

/==============\ 
|DT DD........| 
|DT DD........| 
|DT DD........| 
\==============/ 

Tuy nhiên, trong trường hợp nội dung của DD quá dài tôi chỉ muốn nó được rút ngắn (overflow: hidden trên DL). Một cách dễ dàng sẽ cho DD một chiều rộng tối đa để tránh nó quá lớn để vừa với một đường thẳng với DT có kích thước cố định. Tuy nhiên, kể từ khi chiều rộng của container đã được cố định và thay đổi thông qua các truy vấn phương tiện truyền thông tôi muốn một giải pháp mà tôi không phải chỉ định một chiều rộng cố định dot DD. Sử dụng tỷ lệ phần trăm cho cả DT và DD cũng không phải là một giải pháp vì điều đó sẽ lãng phí không gian trong DT trong trường hợp thùng chứa lớn.

Fiddle cho thấy vấn đề: http://jsfiddle.net/ThiefMaster/fXr9Q/4/

CSS hiện tại:

dl { border: 1px solid #000; margin: 2em; width: 200px; overflow: hidden; } 
dt { float: left; clear: left; width: 50px; color: #f00; } 
dd { float: left; color: #0a0; white-space: nowrap; } 
+0

Sử dụng

Enve

+2

Vâng, từ ngữ nghĩa của nội dung một danh sách định nghĩa sẽ thích hợp hơn. – ThiefMaster

Trả lời

8

Cập nhật: Lẽ ra tôi nên đọc toàn bộ câu hỏi của bạn đầu tiên.

Tháo float:left; vào vấn đề <dd>

http://jsfiddle.net/fXr9Q/26/

Một nhất có thể cho người mới bắt đầu sử dụng tài sản này (như tôi đã nhắc đến ở trên) là họ giả định rằng cài đặt khoảng trắng: nowrap trên một yếu tố sẽ ngăn chặn phần tử đó rơi xuống dòng tiếp theo nếu nó là một phần của một nhóm các hộp nổi. Tuy nhiên, thuộc tính không gian trắng sẽ chỉ áp dụng cho các phần tử nội tuyến bên trong phần tử được áp dụng cho nó và sẽ không ảnh hưởng đến các phần tử khối hoặc khoảng cách của chính phần tử đó.

http://www.impressivewebs.com/css-white-space/


Như bạn đã thiết lập độ rộng trên dldt, thêm này đến dd:

dd{ 
    overflow: hidden; 
    text-overflow: ellipsis; 
    width: 150px; 
} 

http://jsfiddle.net/fXr9Q/15/Hãy chú ý - đây là CSS3 - sẽ không hoạt động trên các trình duyệt cũ hơn - nó là dành cho bạn để đánh giá xem đây có phải là vấn đề hay không - phần lớn thời gian tôi không quan tâm đến các trình duyệt cũ có một kiểu chọn hơi tồi tệ hơn một chút .

+0

Cảm ơn, nhưng trong trường hợp này, bạn chỉ định chiều rộng cố định của 'dd' mà tôi đã tuyên bố rõ ràng không phải là giải pháp mà tôi đang tìm kiếm. – ThiefMaster

+0

Tôi đã cập nhật câu trả lời của mình – Harry

+0

Cảm ơn bạn rất nhiều! Tôi cũng đã có một vấn đề mà các yếu tố dt và dd đều trôi nổi bên trái, nhưng vì lý do nào đó họ đã tràn div khi làm như vậy. Điều này cố định nó. Cảm ơn! –

1

Bạn không cần đặt độ rộng cả trên DT và DD.

Chỉ cần cung cấp cho DT chiều rộng và phao sang trái. Đặt thuộc tính tràn của DD thành ẩn, sẽ cho phép nó phù hợp với tất cả dung lượng còn lại.

Sau đó, không gian trắng: bẻ cong; và tràn văn bản: dấu chấm lửng; sẽ làm cho nó ưa thích thêm dấu ba chấm bất cứ khi nào văn bản quá dài.

Đây là con đường để đi: http://jsfiddle.net/fLPej/

Các vấn đề liên quan