2009-03-05 58 views
6

Tôi đang sử dụng thủ thuật CSS chiều cao bằng nhau như được nêu trên page này.Tránh phần tử bị cắt khi chúng ở bên trong phần tử "tràn: ẩn"

Mọi thứ đều hoạt động tốt cho đến hôm nay khi tôi cần thêm hộp thoại bên trong một trong các cột, được đặt hoàn toàn để đưa nó ra khỏi luồng. Vấn đề là vì container có "overflow: hidden" trên đó, đối thoại đang bị cắt bỏ khi nó tràn.

Ngoài việc đưa đối thoại ra bên ngoài phần tử vùng chứa, có cách nào có thể làm cho nó hiển thị qua CSS không?

Dưới đây là một ví dụ nhỏ minh họa những gì tôi đã đề cập.

<style> 
.container { overflow: hidden; margin-top: 30px } 
.col { 
    float: left; 
    padding-bottom: 2000px; 
    margin-bottom: -2000px; 
    border-right: 1px solid black; 
    width: 100px; 
    background-color: grey; 
} 
.col.third { border-right: none } 

#div-a { position: relative } 
#div-b { 
    position: absolute; 
    background-color: red; 
    width: 35px; 
    height: 350px; 
    bottom: 0; 
    right: 0; 
    margin: 5px; 
    border: 2px solid black; 
} 
</style> 

<div class="container"> 
    <div class="col first"> 
     <p style="height: 100px">One</p> 
    </div> 
    <div class="col second"> 
     <p style="height: 300px">Two</p> 
     <div id="div-a"> 
      <!-- this gets cut off by the "overflow: hidden" on div.container --> 
      <div id="div-b"> 
       Foo 
      </div> 
     </div> 
    </div> 
    <div class="col third"> 
     <p style="height: 200px">Three</p> 
    </div> 
</div> 

Bạn thấy rằng div#div-b bị cắt ở phía trên khi nó tràn trong các yếu tố div.container.

Trả lời

3

Thật không may những gì bạn muốn làm là không thể mà không cần đưa đối thoại ra ngoài phần tử vùng chứa.

Đặt cược tốt nhất của bạn là làm cho phần tử hộp thoại là anh chị em của vùng chứa và định vị nó theo cách đó.

1

Thật không may ... Tôi không nghĩ rằng có một cách để phá vỡ tràn: ẩn với vị trí tuyệt đối. Bạn có thể thử nghiệm với vị trí: cố định, nhưng bạn sẽ không được định vị trong các điều kiện tương tự nếu bạn sử dụng nó.

1

Một tùy chọn sẽ là đặt nội dung tràn của bạn: vùng chứa ẩn vào vùng chứa phụ (có thể là div con). Sau đó, làm cho vùng chứa phụ khớp với kích thước của vùng chứa và di chuyển tràn: ẩn từ vùng chứa đến vùng chứa phụ.

Sau đó, bạn có thể đặt hộp thoại là con của vùng chứa (một anh chị em của vùng chứa phụ) và giờ đây nó sẽ tồn tại trong một phần tử KHÔNG có tràn: bị ẩn.

Tôi chưa thử nghiệm điều này và xóa phần thừa: bị ẩn khỏi vùng chứa có thể làm hỏng thiết kế của bạn. Nếu đúng như vậy, tôi sẽ đề nghị làm như những người khác có và di chuyển hộp thoại ra khỏi thùng chứa hoàn toàn. Điều này thậm chí có thể được thực hiện thông qua Javascript nếu bạn không có tùy chọn để đặt mã của hộp thoại ở bất cứ nơi nào khác. (Javascript có thể làm cho hộp thoại là con của BODY hoặc một số thẻ khác, khi bạn cần nó hiển thị)

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