2010-07-12 53 views
15

Tôi muốn một thành phần giữ trung tâm nằm ngang của trang (hai cột) và tôi có một thành phần phụ (cột bên phải) mà tôi muốn vị trí của nó được cố định, vì vậy phụ vị trí của thành phần được cố định, nhưng toàn bộ hai cột sẽ được căn giữa.CSS Vị trí cố định với Ký tự tự động

#content { 
    width: 1200px; 
    height:auto !important; 
    height:100%; 
    min-height:100%; 
    padding-top: 42px; 
    padding-bottom: 100px; 
    margin-auto: 0 auto; 
    position: relative; 
} 

#left { 
    width: 700px; 
    float: left; 
} 

#right { 
     width: 500px; 
     position: fixed; 
     top: 0px; 
} 

Trả lời

33

Bạn không thể làm điều đó với margin:auto, nhưng bạn có thể làm điều gì đó như thế này:

#CSS-SELECTOR-YOU-ARE-USING{ 
    background:#FF0000; // Just so you can see whats going on 
    position:fixed; // Position the element 
    right:50%; // Move it to the right for 50% of parent element 
    margin-right:-250px; // You need here to put 1/2 of what you have below in width 
    width:500px; 
} 

Bằng cách này bạn di chuyển yếu tố bên phải 50%, và sau đó di chuyển nó trở lại cho một nửa của mình chiều rộng. Bằng cách đó, bạn có được yếu tố trung tâm với position:fixed.

+1

Đợi đã! Nếu bạn có các phần tử khác với 'margin: auto' và' position: relative', khi bạn cố gắng thay đổi kích thước chiều rộng của trình duyệt, bạn sẽ thấy hai lớp không được căn chỉnh chính xác. Đây là một lỗi phổ biến của CSS. – Raptor

+0

Câu trả lời này đúng nếu bạn có chiều rộng cố định. Đối với chiều rộng chất lỏng (tức là 1,00%), hãy xem xét câu trả lời của pstenstrm được hiển thị bên dưới "Bạn có thể sử dụng lề: 0 tự động với vị trí: cố định nếu bạn đặt trái và phải." –

+0

Đối với những người mới đến chủ đề này: sử dụng giải pháp được đăng bên dưới –

0

Tôi thích sử dụng một wrapper như asolution cho vấn đề này:

.wrapper { 
    position: fixed; 
    width: 100%; 
    top: 0px; 
} 
.wrapper .right { 
    width: 500px; 
    margin: auto; 
} 
42

Bạn có thể sử dụng margin: 0 auto với position: fixed nếu bạn thiết lập leftright.

.wrapper { 
    position:fixed; 
    top: 0; 
    left: 0; 
    right: 0; 
    width: 500px; 
    margin: 0 auto; 
} 

Điều này cũng hoạt động với position: absolute; và theo chiều dọc.

Bản trình diễn: http://codepen.io/pstenstrm/pen/myaWVJ

+3

Câu trả lời gần đây hơn này đơn giản và đáng tin cậy hơn nhiều so với câu trả lời được chấp nhận (trong đó, trong tất cả sự công bằng, là từ bốn năm trước.) – BFWebAdmin

+0

thật đẹp! Cảm ơn. – gdaniel

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