2012-04-17 41 views
7

Có cách nào, CSS hoặc JavaScript để cho phép tràn của một phần tử trong DIV, ngay cả khi tràn phụ huynh bị ẩn.tràn chỉ một phần tử trong DIV

Tôi đã viết thanh trượt jQuery ẩn trang trình bày bằng cách sử dụng overflow: hidden.

<div class="container"> 
    <img src="image.jpg" /> 
    <div class="text"> 
     THIS TEXT IS HIDDEN WHEN POSITIONED OUTSIDE OF .container 
    </div> 
</div> 

CSS:

.container{ 
    overflow:hidden; 
    position: relative; 
    width: 500px; height: 250px; 
} 

tôi cần những hình ảnh tràn một cách tự nhiên mặc dù.

+0

tôi nghĩ rằng điều đó là không thể trừ khi bạn thay đổi điều gì đó trong đánh dấu của mình. Thiết lập một fiddle cho thấy hiệu ứng mong muốn. – fcalderan

+0

bạn có thể sử dụng javascript để đặt chiều rộng của vùng chứa bằng với chiều rộng của hình ảnh không? – vol7ron

+0

Không thể. CSS không có "overflow: hidden ngoại trừ img". Bạn sẽ phải sửa lại đánh dấu và thêm các vùng chứa bổ sung. –

Trả lời

8

Bạn nên xóa position: relative;. Nếu bạn đặt nó trên cùng một phần tử như overflow: hidden;, nó sẽ ẩn phần tử. Nếu bạn thực sự cần nó, hãy thử đặt nó trên bố mẹ của .container (cao hơn trong cây so với phần tử có overflow: hidden).

jsFiddle Demo
Explanatory article

#wrap { position: relative; } 
 

 
.container{ 
 
    overflow:hidden; 
 
    width: 300px; height: 200px; 
 
    padding: 10px; 
 
    background-color: cyan; 
 
} 
 

 
.text { 
 
    position: absolute; 
 
    top: 280px; left: 0; 
 
    border: 1px solid red; 
 
}
<div id="wrap"> 
 
    <div class="container"> 
 
    Container 
 
    <div class="text">Not hidden anymore when positioned outside of .container</div> 
 
    </div> 
 
</div>

+1

Và đây là câu trả lời ... làm thế nào? loại bỏ vị trí: tương đối sẽ phá vỡ thanh trượt của OP. –

+0

@MarcB Bạn có thể chưa đọc phiên bản mở rộng của câu trả lời của tôi. – kapa

0

jQuery Ví dụ

$('.text').each(function(){ 
    var t = $(this);     // text div 
    var c = t.closest('.container'); // container parent 
    var i = c.children('img:first'); // container image 
    t.width(c.width());    // set text width = to container width 
    c.width(i.width());    // set container width = to text width 
}); 

Lưu ý:

  1. Điều này không làm ảnh hưởng đến lề/lề/đường viền, mà là logic cơ bản bạn có thể sử dụng.
  2. Thiết lập chiều rộng văn bản tương đương với chiều rộng chứa chỉ mang đến cho nó sự xuất hiện rằng tràn được áp dụng (bạn cũng có thể chỉ cần đặt chiều rộng văn bản div để 500px)
0

với tuyên bố z-index trong css bạn có thể sử dụng vị trí tuyệt đối để làm điều này.

.container{ 
    z-index:900; 
    overflow:hidden; 
    width: 500px; 
    height: 250px; 
} 

.container img{ 
    z-index:920; 
    position:absolute; 
} 

bạn có thể đặt lề cho hình nếu vị trí của nó không đúng;

+0

Chiến lược này sẽ chỉ hoạt động trong một số trình duyệt;) – DrewT

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