2012-11-10 16 views
35

Tôi muốn hiển thị một mở rộng div (width: 100%) với lợi nhuận ...Hiển thị một div chiều rộng 100% với lợi nhuận

Đây là mã của tôi:

<div id="page"> 
    <div id="margin"> 
     "some content here" 
    </div> 
</div>​ 

Và đây là mã css của tôi:

#page { 
    background: red; 
    float: left; 
    width: 100%; 
    height: 300px; 
} 

#margin { 
    background: green; 
    float: left; 
    width: 100%; 
    height: 300px; 
    margin: 10px; 
}​ 

LIVE DEMO

Trả lời

12

Bạn có thể sử dụng CSS sau đây để đạt được kết quả mong muốn:

#page { 
    background: red; 
    overflow: auto; 
} 

#margin { 
    background: green; 
    height: 280px; 
    margin: 10px 
} 
+0

Cảm ơn bạn rất nhiều, nó hoạt động hoàn hảo với tất cả các trình duyệt – Random78952

+4

Ah! Bí quyết không có chiều rộng: 100% trên #margin. – MSC

+0

Loại bỏ hoàn toàn chiều rộng dường như không thích hợp để giải quyết vấn đề kết hợp chức năng lề và chiều rộng. – user7733611

55

Bạn có thể sử dụng chức năng css calc() css (browser support).

#page { 
    background: red; 
    float: left; 
    width: 100%; 
    height: 300px; 
} 

#margin { 
    background: green; 
    float: left; 
    width: -moz-calc(100% - 10px); 
    width: -webkit-calc(100% - 10px); 
    width: -o-calc(100% - 10px); 
    width: calc(100% - 10px); 
    height: 300px; 
    margin: 10px; 
}​ 

Ngoài ra, hãy thử sử dụng đệm thay vì lợi nhuận và box-sizing: border-box (browser support):

#page { 
    background: red; 
    width: 100%; 
    height: 300px; 
    padding: 10px; 
} 

#margin { 
    box-sizing: border-box; 
    background: green; 
    width: 100%; 
    height: 300px; 
} 
+0

Đây là một tuyệt vời! Và tôi đã làm điều đó thông qua javascript: ( –

+1

Giải pháp tốt nhất là sử dụng 'calc()' trong các trình duyệt hiện đại và mã JS + Modernizr cho trình duyệt cũ không hỗ trợ hàm 'calc()'. –

+0

Css? thats âm thanh tuyệt vời ... nhưng tôi sử dụng chrome và chrome cho tôi biết "giá trị tài sản không hợp lệ" ... nhưng tại sao? – Random78952

13

Đôi khi nó tốt hơn để làm điều ngược lại và cung cấp cho các đệm mẹ div thay vì:

LIVE DEMO

Tôi đã làm gì như thay đổi CSS của #page tới:

#page { 
    padding: 3%; 
    width: 94%; /* 94% + 3% +3% = 100% */ 

    /* keep the rest of your css */ 
    /* ... */ 
} 

Sau đó xóa các margin từ #margin

Lưu ý: đây cũng cho biết thêm 3% xuống còn trên và dưới (như vậy 6% đến chiều cao) mà làm cho nó một chút cao hơn 300px - vì vậy nếu bạn cần chính xác 300px, bạn có thể làm một cái gì đó như padding:10px 3%; và thay đổi height:280px; để thêm lên đến 300px một lần nữa.

+1

Đây là phương pháp phù hợp để thực hiện các phép tính với CSS ngay bây giờ. Điều này minh họa nguyên tắc cơ bản mà bạn kết thúc với cấu trúc 'div' bắt chước cây phân tích cú pháp của biểu thức mà bạn muốn đánh giá. – eh9

5

Đối với chỉ sử dụng LESS:

Sử dụng giải pháp tốt đẹp của Vukašin Manojlović không làm việc ra khỏi hộp vì LESS thực thi các thao tác + hoặc - trong quá trình biên dịch LESS. Một giải pháp là thoát khỏi LESS để nó không thực hiện thao tác.

Disable LESS-CSS Overwriting calc()

@someMarginVariable = 15px; 

margin: @someMarginVariable; 
width: calc(~"100% - "@someMarginVariable*2); 
width: -moz-calc(~"100% - "@someMarginVariable*2); 
width: -webkit-calc(~"100% - "@someMarginVariable*2); 
width: -o-calc(~"100% - "@someMarginVariable*2); 

hoặc có thể sử dụng một mixin như:

.fullWidthMinusMarginPaddingMixin(@marginSize,@paddingSize) { 
    @minusValue: (@[email protected])*2; 
    padding: @paddingSize; 
    margin: @marginSize; 
    width: calc(~"100% - "@minusValue); 
    width: -moz-calc(~"100% - "@minusValue); 
    width: -webkit-calc(~"100% - "@minusValue); 
    width: -o-calc(~"100% - "@minusValue); 
} 
0

Các cách chính xác để đạt được điều này bằng cách tiêu chuẩn là:

#margin { 
    background: green; 
    height: 280px; 
    margin: 10px; 
    width: auto; 
    display: block; 
}