Tự động làm gì trong margin: 0 auto?


126

Làm gì autotrong margin:0 auto;?

Tôi dường như không thể hiểu những gì autolàm. Tôi biết nó đôi khi có tác dụng căn giữa các đối tượng. Cảm ơn.

Câu trả lời:


189

Khi bạn đã chỉ định một widthđối tượng mà bạn đã áp dụng margin: 0 auto, đối tượng sẽ nằm ở trung tâm trong vùng chứa mẹ của nó.

Việc chỉ định autolàm tham số thứ hai về cơ bản cho trình duyệt tự động xác định lề trái và lề phải bằng cách đặt chúng bằng nhau. Nó đảm bảo rằng lề trái và lề phải sẽ được đặt ở cùng một kích thước. Tham số đầu tiên 0 chỉ ra rằng lợi nhuận trên cùng và dưới cùng sẽ được đặt thành 0.

margin-top:0;
margin-bottom:0;
margin-left:auto;
margin-right:auto;

Do đó, để cung cấp cho bạn một ví dụ , nếu nguồn gốc là 100px và vùng con là 50px, thì thuộc autotính sẽ xác định rằng có 50px không gian trống để chia sẻ giữa margin-leftmargin-right:

var freeSpace = 100 - 50;
var equalShare = freeSpace / 2;

Cái nào sẽ cho:

margin-left:25;
margin-right:25;

Hãy xem jsFiddle này . Bạn không phải chỉ định chiều rộng cha, chỉ có chiều rộng của đối tượng con.


nhưng chúng tôi không bao giờ xác định bất kỳ chiều rộng để bodyvà chúng tôi luôn cung cấp cho widthmargin:0 autođể#wrapper
Jitendra Vyas

ok thì lề giữa nội dung và đối tượng sẽ được trình duyệt tính toán tự động.
Jitendra Vyas

Có bất kỳ giá trị tương tự trong %? Ý tôi là có bất kỳ tài sản khác trong css mà có thể cho kết quả tương tự như trái và phảiauto
Jitendra Vyas

@GenericTypeTea - và điều gì xảy ra trong margin:auto 0điều kiện?
Jitendra Vyas

Tuy nhiên, tại sao khi tôi sử dụng margin: 20 tự động, điều đó dường như ảnh hưởng đến định vị trái-phải? Dường như tất cả những gì đã làm là add trên / lề dưới ...
pitosalas

13

auto: Trình duyệt đặt lề. Kết quả của việc này phụ thuộc vào trình duyệt

margin: 0 tự động chỉ định

* top and bottom margins are 0
* right and left margins are auto

9

Từ đặc tả CSS về Tính toán chiều rộng và lề cho các phần tử cấp khối, không được thay thế trong luồng thông thường :

Nếu cả 'margin-left' và 'margin-right' đều là 'auto', các giá trị được sử dụng của chúng bằng nhau. Điều này làm căn giữa phần tử theo chiều ngang đối với các cạnh của khối chứa.


"giá trị được sử dụng của chúng là như nhau" nghĩa là gì?
Jitendra Vyas

3
@ metal-gear-solid - Nếu chiều rộng của trang gốc (xác định bởi trình duyệt hoặc theo chiều rộng được chỉ định) là 100px và chiều rộng của div con của bạn là 50px. Sau đó, margin: 0 auto sẽ xác định rằng có 50px dung lượng trống. Sau đó, nó sẽ chia nó cho 2, cho 25. Lề trái và phải sau đó đều được đặt thành 25, tức là các giá trị được đặt bằng nhau.
djdd87

1
Các giá trị đã sử dụng đề cập đến các giá trị được sử dụng thực sự tùy thuộc vào các thuộc tính trực quan thực tế của phần tử sử dụng thuộc tính này và khối chứa nó. Phần được liên kết có một công thức được sử dụng để tính toán sự khác biệt theo chiều ngang giữa một phần tử và khối chứa nó. Sự khác biệt đó sau đó được chia đều và được sử dụng làm giá trị lề ngang thực tế.
Gumbo

6
margin:0 auto;

0là trên-dưới và autotrái-phải. Có nghĩa là lề trái và lề phải sẽ tự động lấy lề theo chiều rộng của phần tử và chiều rộng của vùng chứa.

Nói chung, nếu bạn muốn đặt bất kỳ phần tử nào ở vị trí trung tâm thì nó margin:autohoạt động hoàn hảo. Nhưng nó chỉ hoạt động trong các phần tử khối.


1
margin-top:0;
margin-bottom:0;
margin-left:auto;
margin-right:auto;

0 dành cho trên-dưới và tự động cho trái-phải. Trình duyệt đặt lề.


1

Nó trở nên rõ ràng hơn với một số giải thích về cách hoạt động của hai giá trị.

Thuộc tính ký quỹ là viết tắt của:

margin-top
margin-right
margin-bottom
margin-left

Vậy làm thế nào chỉ có hai giá trị?

Vâng, bạn có thể biểu thị lợi nhuận với bốn giá trị như sau:

margin: 10px, 20px, 15px, 5px;

có nghĩa là 10px trên cùng, 20px bên phải, 15px dưới cùng, 5px bên trái

Tương tự như vậy, bạn cũng có thể biểu thị bằng hai giá trị như sau:

margin: 20px 10px;

Điều này sẽ cung cấp cho bạn một lề 20px trên và dưới và 10px trái và phải.

Và nếu bạn đặt:

margin: 20px auto;

Sau đó, điều đó có nghĩa là lề trên và dưới 20px và lề trái và phải của tự động. Và tự động có nghĩa là lề trái / phải được đặt tự động dựa trên vùng chứa. Nếu phần tử của bạn là phần tử kiểu khối, nghĩa là nó là một hộp và chiếm toàn bộ chiều rộng của chế độ xem, thì tự động đặt lề trái và lề phải giống nhau và do đó phần tử được căn giữa.


-3

Nó là một thẻ bị hỏng / rất khó sử dụng thay thế cho thẻ "center". Nó rất hữu ích khi bạn cần các bảng bị hỏng và căn giữa không hoạt động cho các khối và văn bản.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.