2009-04-25 60 views
5

Tôi có một yêu cầu thiết kế web để có một tiêu đề như thế này:Cách tạo "tràn văn bản: dấu ba chấm" cho cả hai "float: left" và "float: right" div?

+-------------------------------------------------------------+ 
| +---------------------+ +-------++------------------------+| 
| | float left DIV A | | DIV C || float right DIV B  || 
| +---------------------+ +-------++------------------------+| 
+-------------------------------------------------------------+ 

Tiêu đề có 3 phần: Div A, B, C. Các DIV A là float sang trái, trong khi DIV B và C là phao sang phải. DIV A và DIV B có thể chứa văn bản dài. Vì vậy, văn bản tràn-ed được cắt ngắn như dấu ba chấm. DIV C có văn bản ngắn, nội dung của nó không được cắt ngắn.

tôi đã cố gắng để làm cho HTML như dưới đây:

<html> 
    <head> 
     <style> 
      .header 
      { 
       width: 100%; 
       border: 2px red; 
       overflow: hidden; 
      } 
      .DivA 
      { 
       float: left; 
      } 
      .DivC 
      { 
       float: right; 
       white-space:nowrap; 
      } 
      .DivB 
      { 
       float: right; 
      } 
      .clear 
      { 
       clear: both; 
      } 
      .DivA, .DivB 
      { 
       width: 40%; 
       overflow: hidden; 
       text-overflow: ellipsis; 
       white-space: nowrap; 
      } 
     </style> 
    </head> 
    <body> 
     <div class="header"> 
      <div class="DivA"> 
       Hello world 1 Hello world 2 Hello world 3 
       Hello world 1 Hello world 2 Hello world 3 
       Hello world 1 Hello world 2 Hello world 3 
      </div> 
      <div class="DivB"> 
       Good bye Good bye 
       Good bye Good bye 
       Good bye Good bye 
      </div> 
      <div class="DivC"> 
       No Ellipsis 
      </div> 
      <div class="clear"> 
      </div> 
     </div> 
    </body> 
</html> 

Các text-overflow: ellipsis chỉ hoạt động nếu DIV A và DIV B có chiều rộng (trong trường hợp của tôi, tôi đặt chúng vào được 45%).

Tuy nhiên, có một vấn đề về DIV C. Vì chiều rộng của DIV C có thể khác nhau về bản địa hóa khác nhau, chúng tôi không thể đặt chiều rộng của nó một cách rõ ràng. Khi thu hẹp cửa sổ trình duyệt, div C có thể được bao bọc thành dòng tiếp theo. Điều này có vẻ xấu.

Có cách nào để biến DIV A và DIV B sang trái và phải tương ứng với dấu chấm lửng tràn, đồng thời DIV C có thể thích ứng với chiều rộng tốt nhất của nó?

Trả lời

2

Những gì bạn cần làm ở đây là để áp dụng một lề để div # c mà phù hợp với độ rộng của div # a và div # b

Lấy dưới đây ví dụ;

<style> 
.DivA {width:250px; float:left;} 
.DivB {width:150px; float:right;} 
.DivC {margin-left:260px; margin-right:160px;} 
</style> 

<div class="DivA" /> 
<div class="DivB" /> 
<div class="DivC" /> 

Bạn sẽ nhận thấy rằng tôi đã bổ sung thêm 10px cho mỗi chiều rộng, đây là chỉ để cho phép nhiều cách nhau giữa các yếu tố, tất nhiên bạn cũng cần phải rõ ràng những lý tưởng cũng có.

Điều này sau đó sẽ cung cấp cho bạn hai cột cố định ở hai bên và một phần tử trung tâm sẽ chiếm bất kỳ dung lượng trống nào.

+0

Bằng cách này, các "trung tâm" được đẩy xuống tiếp theo nếu cửa sổ trình duyệt bị thu hẹp. –

+0

Thật vậy, điều đó rất đúng để sử dụng chiều rộng tối thiểu trên thùng chứa hoặc .DivC sẽ được khuyến nghị. Khi bao giờ bạn sử dụng phao, bạn sẽ luôn có thể thay đổi kích thước trình duyệt đến một điểm mà nó sẽ phá vỡ bố cục, trừ khi bạn sử dụng độ rộng cố định tại một số điểm. – Phunky

0

Cái này rất cũ (09 ') nhưng tôi sẽ trả lời cho những người đến từ tìm kiếm như tôi đã làm.

Vì A và B là 40% mỗi, C tối đa sẽ có là 20%, vì tiêu đề là 100%. Vì vậy, hãy thêm max-width:20%; vào nó và C sẽ không đột nhập vào dòng tiếp theo. Nhưng sau đó, khi cửa sổ trình duyệt bị thu hẹp, văn bản sẽ bao trùm khi cần.

NẾU bạn không muốn hành vi này, bạn có thể thêm white-space: nowrap; mà sẽ làm cho C văn bản chồng chéo một trong B.

Xem http://jsfiddle.net/fxLVQ/

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