2011-10-02 40 views
13

Tôi đã tình cờ gặp một vấn đề mà tôi không hoàn toàn chắc chắn cách giải quyết.Chiều rộng bảng CSS - 100% + trừ lề

Tôi có một trang với một số div, một trong số đó chứa một bảng nhưng có lề là 20px. Tôi cần bảng này để 'mông' chống lại phía bên tay phải của một div khác, mà tôi đã hoàn thành bằng cách sử dụng lề của -20px - hoạt động như tôi hy vọng. Vì div này (bao gồm toàn bộ bên phải của trang) là chất lỏng, bảng có chiều rộng là 100%.

Trong khi phía bên tay trái của bảng là nơi tôi muốn, mặt bên phải bây giờ là 20px ngắn của tất cả mọi thứ khác.

Có cách nào tôi có thể giữ lề âm ở bên phải, mà không cần di chuyển bảng 20px từ bên phải không? Tôi đã thử một vài điều mà không thành công. CSS bảng của tôi được dán bên dưới.

.pricetable { 
    width:100%; 
    margin-left: -20px; 
    padding: 5px; 
} 
+0

thể trùng lặp của [Div chiều rộng 100% trừ đi số tiền cố định của pixel] (http://stackoverflow.com/questions/651317/div- width-100-minus-fixed-of-pixel) – Gajus

Trả lời

2

Bạn hoàn toàn có thể định vị bảng của mình để bảng được căn chỉnh ở bên phải.

position: absolute; 
right: 0; 

Không có cách nào để thêm lề trái mà không di chuyển bảng vì bảng bù được tính theo cách này: margin + padding + width = offset width.

Khi bạn đặt chiều rộng là 100%, lề và phần đệm làm cho phần tử mở rộng.

  • Padding (trái) X, (bên phải) y + width = over 100%
  • over 100% + chiều rộng tiêu cực (X + y) = 100%.

Định nghĩa đầu tiên thêm một số phần đệm ở mỗi bên của bảng. Định nghĩa thứ hai chuyển bảng sang bên trái, bởi vì nó là một lề âm.

+0

Cảm ơn Rob - đã phân loại ra phía bên tay phải, nhưng dường như tạo ra tất cả các vấn đề ở bên trái. Tôi nghi ngờ mình đang chiến đấu với trận thua. Tuy nhiên nó đã xảy ra với tôi rằng một giải pháp đơn giản hơn là thêm lề các phần tử khác để đưa chúng vào nội tuyến với bảng. – Lee

+0

BTW - cảm ơn cũng vì lời giải thích, làm cho cảm giác hoàn toàn theo cách bạn giải thích nó. – Lee

+0

Cảm ơn bạn đã chỉ ra rằng Rob - đã không nhận thấy tính năng Chấp nhận trước đây. – Lee

3

thử cho bảng bố trí: cố định và xem

7

Bạn cũng có thể thiết lập độ rộng đến dưới 100% và thiết lập tự động margin:

.pricetable { 
    width:90%; 
    margin: auto; 
} 

Hy vọng nó giúp.

+0

Không thể tin rằng không có giải pháp nào tốt hơn, nhưng ít nhất giải pháp này có tỷ suất lợi nhuận bằng nhau ở cả hai bên. – ColinM

13

Giải pháp của tôi là bọc bảng bên trong div với lề âm.

<div style="margin-right:-20px"> 
    <table style="width:100%"> 
    ... 
    </table> 
</div> 
+0

Đã từ bỏ việc sử dụng div để tự động thay đổi kích thước và định vị các thành phần của trang của tôi. Làm một bảng với chiều rộng 100% và sau đó có các tế bào chiếm chiều cao và chiều rộng của lề sẽ thực sự làm công việc độc đáo với div con của tôi. – Jonats

5

bây giờ có thể với CSS calc:

.pricetable { 
    width: calc(100% - 20px); 
    margin-left: -20px; 
    padding: 5px; 
} 
Các vấn đề liên quan