Trong ví dụ này , hình ảnh không được căn giữa. Tại sao? Trình duyệt của tôi là Google Chrome v10 trên windows 7, không phải IE.
<img src="/img/logo.png" style="margin:0px auto;"/>
Trong ví dụ này , hình ảnh không được căn giữa. Tại sao? Trình duyệt của tôi là Google Chrome v10 trên windows 7, không phải IE.
<img src="/img/logo.png" style="margin:0px auto;"/>
Câu trả lời:
thêm display:block;
và nó sẽ hoạt động. Hình ảnh được in thẳng hàng theo mặc định
Để làm rõ, chiều rộng mặc định cho một block
phần tử auto
, tất nhiên sẽ lấp đầy toàn bộ chiều rộng có sẵn của phần tử chứa.
Bằng cách đặt lề thành auto
, trình duyệt chỉ định một nửa không gian còn lại cho margin-left
và nửa còn lại cho margin-right
.
margin:auto
để căn giữa một mục trong luồng. ( display:block
hoặc display:table
, position:static
hoặc position:relative
, v.v.)
0px auto
để chỉ auto
nó vẫn không làm việc.
Trong một số trường hợp (như phiên bản trước của IE, Gecko, Webkit), thừa kế, các yếu tố với position:relative;
sẽ ngăn chặn margin:0 auto;
từ làm việc, ngay cả khi top
, right
, bottom
, và left
không được thiết lập.
Đặt phần tử thành position:static;
(mặc định) có thể khắc phục sự cố trong những trường hợp này. Nói chung, các phần tử mức khối có chiều rộng được chỉ định sẽ tuân theo margin:0 auto;
việc sử dụng relative
hoặc static
định vị.
margin: 0 auto
chỉ hoạt động tốt trên các yếu tố tương đối vị trí miễn là họ là những yếu tố khối không có phao và chiều rộng quy định ...
float
và display
có thể thay đổi hành vi đó.
Bạn có thể căn giữa chiều rộng tự động div bằng cách sử dụng display:table;
div{
margin: 0px auto;
float: none;
display: table;
}
Trong trường hợp của tôi, vấn đề là tôi đã đặt chiều rộng tối thiểu và tối đa mà không có chiều rộng .
position:static
, có một cố định width:
thiết lập và trở thành một display:block
yếu tố
Bất cứ khi nào chúng tôi không thêm chiều rộng và thêm margin:auto
, tôi đoán nó sẽ không hoạt động. Đó là kinh nghiệm của tôi. Chiều rộng cung cấp ý tưởng nơi chính xác mà nó cần cung cấp biên bằng nhau.
có một giải pháp thay thế cho margin-left:auto; margin-right: auto;
hoặc margin:0 auto;
cho những cái sử dụng position:absolute;
cách này:
bạn đặt vị trí bên trái của phần tử thành 50% ( left:50%;
) nhưng điều đó sẽ không căn giữa nó một cách chính xác để phần tử được căn giữa chính xác, bạn cần đặt nó lề của trừ một nửa chiều rộng của nó, điều đó sẽ căn giữa phần tử của bạn một cách hoàn hảo
đây là một ví dụ: http://jsfiddle.net/35ERq/3/