sự khác biệt giữa chiều rộng tự động và chiều rộng 100 phần trăm


98

Trước đây giả định của tôi về width: auto là chiều rộng được đặt thành chiều rộng của nội dung. Bây giờ tôi thấy rằng nó chiếm toàn bộ chiều rộng của cha mẹ.

Bất cứ ai có thể vui lòng mô tả sự khác biệt giữa chúng?



Tóm lại: 1) auto, chiều rộng / chiều cao của div cha sẽ là tổng các con của nó. 2) 100 phần trăm, chiều rộng / chiều cao của nó sẽ là của cha mẹ nó. Xem bài viết tại đây
Alan Dong

Câu trả lời:


141

Chiều rộng tự động

Chiều rộng ban đầu của phần tử cấp khối như div hoặc p là tự động. Điều này làm cho nó mở rộng để chiếm tất cả không gian ngang có sẵn trong khối chứa nó. Nếu nó có bất kỳ phần đệm hoặc đường viền ngang nào, chiều rộng của những phần đó không cộng vào tổng chiều rộng của phần tử.

Chiều rộng 100%

Mặt khác, nếu bạn chỉ định chiều rộng: 100%, tổng chiều rộng của phần tử sẽ là 100% khối chứa nó cộng với bất kỳ lề ngang, phần đệm và đường viền nào (trừ khi bạn đã sử dụng box-sizing: border-box, trong trường hợp đó chỉ các lề được thêm vào 100% để thay đổi cách tính tổng chiều rộng của nó). Đây có thể là điều bạn muốn, nhưng rất có thể không phải vậy.

Để hình dung sự khác biệt, hãy xem hình này:

nhập mô tả hình ảnh ở đây

Nguồn


3
Đối với những người đang tò mò về lý do tại sao width: autocư xử như vậy: stackoverflow.com/questions/28353625/...
Hashem Qolami

1
nên autokhông giống nhưfill-available
jiggunjer

2
Vì vậy, về cơ bản nó không liên quan gì đến kích thước của nội dung phần tử, mà hoàn toàn đề cập đến chiều rộng mẹ?
haemse

82
  • width: auto; sẽ cố gắng hết sức có thể để giữ một phần tử có cùng chiều rộng với vùng chứa mẹ của nó khi có thêm không gian từ lề, phần đệm hoặc đường viền.

  • width: 100%;sẽ làm cho phần tử rộng bằng vùng chứa mẹ. Khoảng cách bổ sung sẽ được thêm vào kích thước của phần tử mà không liên quan đến phần tử gốc. Điều này thường gây ra vấn đề.

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


2
điều tương tự như @ C-link được cung cấp nhưng giao diện đồ họa bổ sung hơn. so +1
Navin Rauniyar

8

Đó là về lề và biên giới. Nếu bạn sử dụng width: auto, sau đó thêm đường viền, div của bạn sẽ không trở nên lớn hơn vùng chứa của nó. Mặt khác, nếu bạn sử dụng width: 100%và một số đường viền, chiều rộng của phần tử sẽ là 100% + đường viền hoặc lề. Để biết thêm thông tin, hãy xem điều này .


4

Miễn là giá trị của chiều rộng là tự động, phần tử có thể có lề ngang, phần đệm và đường viền mà không trở nên rộng hơn vùng chứa của nó (tất nhiên là trừ khi tổng của margin-left + border-left-width + padding-left + padding-right + border-right-width + margin-right lớn hơn vùng chứa). Chiều rộng của hộp nội dung của nó sẽ là bất kỳ thứ gì còn lại khi lề, phần đệm và đường viền đã bị trừ đi khỏi chiều rộng của vùng chứa.

Mặt khác, nếu bạn chỉ định chiều rộng: 100%, tổng chiều rộng của phần tử sẽ là 100% khối chứa nó cộng với bất kỳ lề ngang, phần đệm và đường viền nào (trừ khi bạn đã sử dụng box-sizing: border-box, trong trường hợp đó chỉ các lề được thêm vào 100% để thay đổi cách tính tổng chiều rộng của nó). Đây có thể là điều bạn muốn, nhưng rất có thể không phải vậy.

Nguồn:

http://www.456bereastreet.com/archive/201112/the_difference_between_widthauto_and_width100/


3

Chiều rộng ban đầu của phần tử cấp khối như div hoặc p là tự động.

Sử dụng width: auto để hoàn tác các chiều rộng được chỉ định rõ ràng.

nếu bạn chỉ định chiều rộng: 100%, tổng chiều rộng của phần tử sẽ bằng 100% khối chứa nó cộng với bất kỳ lề ngang, phần đệm và đường viền nào.

Vì vậy, lần tới khi bạn thấy mình đặt chiều rộng của phần tử mức khối thành 100% để làm cho nó chiếm hết chiều rộng có sẵn, hãy cân nhắc xem điều bạn thực sự muốn có đang đặt nó thành tự động hay không.


3

Chiều rộng 100%: Nó sẽ tạo ra nội dung với 100%. margin, border, padding sẽ được thêm vào chiều rộng này và phần tử sẽ tràn nếu bất kỳ phần tử nào được thêm vào.

Tự động chiều rộng: Nó sẽ phù hợp với phần tử trong không gian có sẵn bao gồm lề, đường viền và phần đệm. không gian còn lại sau khi điều chỉnh lề + đệm + đường viền sẽ có chiều rộng / chiều cao khả dụng.

Width 100% + box-sizing: border box: Nó cũng sẽ phù hợp với phần tử trong không gian có sẵn bao gồm đường viền, phần đệm (lề sẽ làm cho nó tràn vùng chứa).


1

Sử dụng width: auto; + display: inline-block; trong css cho hiệu ứng tuyệt vời.

width : auto;
display: inline-block;

2
Điều này không trả lời câu hỏi về sự khác biệt giữa 100 & và auto.
JoeTidee

1
Có, tôi biết nhưng tôi đang cố gắng hiển thị ở đây về width: auto và display: inline-block . Khi chúng ta muốn tự động tăng chiều rộng của bất kỳ phần tử cấp khối nào thì chúng ta có thể sử dụng điều này. Và sự khác biệt giữa 100% và tự động
Mohammed Javed

0

Khi chúng tôi nói

width:auto;

chiều rộng sẽ không bao giờ vượt quá tổng chiều rộng của phần tử mẹ. Chiều rộng tối đa là chiều rộng mẹ. Ngay cả khi chúng ta thêm đường viền, phần đệm và lề, bản thân nội dung của phần tử sẽ trở nên nhỏ hơn để tạo khoảng trống cho đường viền, phần đệm và lề. Trong trường hợp nếu không gian cần thiết cho đường viền + đệm + lề lớn hơn tổng chiều rộng của phần tử mẹ thì chiều rộng của nội dung sẽ trở thành 0.

Khi chúng tôi nói

width:100%;

chiều rộng của nội dung của phần tử sẽ trở thành 100% của phần tử mẹ và từ bây giờ nếu chúng ta thêm đường viền, phần đệm hoặc lề thì nó sẽ khiến phần tử con vượt quá chiều rộng của phần tử mẹ và nó sẽ bắt đầu tràn ra khỏi phần tử mẹ.

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.