2011-11-08 40 views
5

Tôi biết điều này có thể là một vấn đề bình thường nhưng tôi đã không tìm thấy một giải pháp trong trang web này cũng không phải những người khác.Bên trong div 100% chiều rộng của div cha vượt quá giới hạn

tôi đã fiddle này: http://jsfiddle.net/xzdead/jxsYx/3/

Nội div 'div_mainPanel' là 100% chiều rộng, nhưng nếu bạn nhìn vào góc bên phải phía dưới nó trên div cha mẹ.

Tôi haver đã cố gắng xóa chiều rộng: 100 cho vấn đề div và chiều rộng bên trong được giải quyết nhưng không phải chiều cao. Dù sao tại sao nó phát triển ra khỏi div cha mẹ nếu tôi đã thiết lập wodth đến 100% và margin-padding được thiết lập để 0px?

Cảm ơn trước

+0

Cảm ơn mọi người vì đã dành thời gian của bạn! – xzdead

Trả lời

9

Số đếm biên để tính toán kích thước. Div bên trong của bạn chọn 100% chiều cao/chiều rộng của bố mẹ, vì vậy nó sẽ trở thành 500x300, nhưng sau đó thêm 2px xung quanh cho đường viền, vì vậy nó thực sự 502x302 và rò rỉ trên đường viền của phụ huynh ở cạnh phải/dưới.

+0

Cảm ơn câu trả lời nhanh của bạn – xzdead

+1

Một quan sát nhỏ: Nếu nó thêm đường viền 2px, kích thước sẽ trở thành 504x304. :) – P5Coder

0

thats vì thuộc tính border vượt quá 100% ... giống như giá trị padding.

đó là lý do tại sao 2px của nó ra.

3

Đây là hành vi đúng. Div bên trong được đặt thành 100% chiều rộng của cha mẹ, nhưng điều này không bao gồm đường viền trên đó, vì vậy nó là 100% + 2px.

Để ngăn chặn các div bên trong được hiển thị bên ngoài bờ cõi của các phụ huynh, thêm box-sizing: border-box cho cả phụ huynh và trẻ em:

#div_mainContainer { 
 
    width: 500px; 
 
    height: 300px; 
 
    background-color: #f8f8f8; 
 
    border: 1px solid red; 
 
    margin: 0px; 
 
    padding: 0px; 
 
    box-sizing: border-box; 
 
} 
 

 
#div_mainPanel { 
 
    width: 100%; 
 
    height: 100%; 
 
    margin: 0px; 
 
    border: 1px solid yellow; 
 
    box-sizing: border-box; 
 
}
<div id="div_mainContainer"> 
 
    <div id="div_mainPanel"></div> 
 
</div>

0

Thuộc tính biên giới không được tính bằng chiều rộng của hộp hoặc. Vì vậy, hộp của bạn thực sự được tính là 100% + 2px cho đường viền. Đối với chiều rộng, chỉ cần xóa width: 100% vì bộ phận (phần tử cấp khối) sẽ tự động mở rộng để lấp đầy chiều rộng của vùng chứa, tốt hơn chiều rộng 100% có thể làm (vì nó sẽ xem xét đệm, đường viền và lề).

Nếu bạn luôn sử dụng chiều cao chính xác trên vùng chứa chính, tại sao không chỉ sử dụng chiều cao chính xác 498px trên con, sẽ tính tổng chiều cao 500px cho trẻ.

5

Hiện nay, một cách tốt hơn để giải quyết vấn đề này: sử dụng border-box kích thước cho CSS của bạn:

http://paulirish.com/2012/box-sizing-border-box-ftw/

Bây giờ 100% sẽ là một cách tự nhiên nhiều hơn nữa để thiết lập kích thước của phần tử con.

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