Sự khác biệt giữa lề và đệm?


371

Chính xác thì sự khác biệt giữa lề và phần đệm trong CSS là gì? Nó thực sự không phục vụ nhiều mục đích. Bạn có thể cho tôi một ví dụ về sự khác biệt nằm ở đâu (và tại sao điều quan trọng là phải biết sự khác biệt)?


14
stackoverflow.com/questions/2189452/ Khăn stackoverflow.com/questions/3060456/ nam stackoverflow.com/questions/4619899/ Ba liên kết đầu tiên từ tìm kiếm padding vs margin. Tôi nghĩ rằng chúng ta cần thêm mũi tên vào thanh tìm kiếm và tạo màu xanh lá cây.
Vôi

2
Điều này có thể giúp bạn hiểu được sự khác biệt digizol.com/2006/12/margin-vs-padding-css-properIES.html
lkamal

2
Ngoài ra, hãy lưu ý rằng Internet Explorer tính tổng các lề / biên / độ rộng đệm khác nhau (ở chế độ không phải là quirks mặc định) so với hầu hết tất cả các trình duyệt khác.
David R Tribble

1
Nếu lề không hoạt động, hãy thử đệm
JoelFan

Câu trả lời:


410

paddinglà không gian giữa nội dung và border, trong khi đó marginlà không gian bên ngoài đường viền. Đây là một hình ảnh tôi tìm thấy từ một tìm kiếm nhanh của Google, minh họa cho ý tưởng này.

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


3
Ngoài ra kiểm tra các trang web cho một định nghĩa. Nhưng đồ họa là một minh họa hoàn hảo. w3schools.com/css/css_margin.asp w3schools.com/css/css_padding.asp
Khởi động

@maclunian: Ngoài ra hãy xem trang web này w3schools.com/css/css_boxmodel.asp ngoài các liên kết của @ Suroot ở trên.
abcd

Làm thế nào điều này liên quan đến chiều rộng và chiều cao của nội dung mặc dù? Trường hợp đó được đo trên tất cả điều này?
Nyerguds

128

Một điều quan trọng còn thiếu trong các câu trả lời ở đây:

Lợi nhuận trên / dưới có thể thu gọn.

Vì vậy, nếu bạn có lề 20px ở dưới cùng của một phần tử và lề 30px ở đầu phần tử tiếp theo, thì lề giữa hai phần tử sẽ là 30px thay vì 50px. Điều này không áp dụng cho lề trái / phải hoặc phần đệm.


6
Lưu ý rằng có những trường hợp rất cụ thể trong đó lề dọc sụp đổ - không phải bất kỳ hai lề dọc nào cũng sẽ làm như vậy. Điều này chỉ khiến mọi thứ trở nên khó hiểu hơn (trừ khi bạn rất quen thuộc với mô hình hộp).
BoltClock

76

Ký quỹ được áp dụng cho bên ngoài phần tử của bạn do đó ảnh hưởng đến việc phần tử của bạn cách xa các phần tử khác bao xa.


Đệm được áp dụng cho bên trong phần tử của bạn do đó ảnh hưởng đến việc nội dung của phần tử của bạn cách xa biên giới bao xa.

Ngoài ra, sử dụng lề sẽ không ảnh hưởng đến kích thước của phần tử của bạn trong khi phần đệm sẽ làm cho kích thước phần tử của bạn (đặt chiều cao + phần đệm), ví dụ: nếu bạn có div 100x100px với phần đệm 5 px, div của bạn thực sự sẽ là 105x105px


15
Tôi tin rằng phần đệm được áp dụng cho mọi phía, vì vậy phần tử sẽ là 110x110px
2013Asker 22/07/13

Ehm, đệm afaik không thay đổi chiều rộng của phần tử của bạn nếu chiều rộng đó đã được đặt thành bất kỳ thứ gì khác ngoài auto. Nếu chiều rộng là auto, thì phần đệm bổ sung sẽ tăng chiều rộng của phần tử đệm tương ứng (và từ cả hai phía, như @ 2013Asker đã đề cập)
Flater

1
Tôi nghĩ hơi sai lầm khi nói rằng div của bạn sẽ là 110px x 110px vì chiều rộng của div của bạn vẫn sẽ là 100px (giả sử kích thước hộp được đặt là hộp nội dung).
wmock

44

Hãy nhớ 3 điểm sau:

  • Margin là không gian thêm xung quanh kiểm soát.
  • Padding là không gian thêm bên trong điều khiển.
  • Phần đệm của một điều khiển bên ngoài là Margin của một điều khiển bên trong .

Hình ảnh demo: (trong đó hộp màu đỏ là kiểm soát ham muốn) nhập mô tả hình ảnh ở đây


2
Điều này không trả lời tại sao điều quan trọng là phải biết sự khác biệt.
GreenAsJade

38

Nói xấu đơn giản nhất là; phần đệm là khoảng trắng được cho bên trong đường viền của phần tử container và lề được đưa ra bên ngoài. Đối với một yếu tố không phải là vật chứa, phần đệm có thể không có nhiều ý nghĩa, nhưng lề chắc chắn sẽ giúp sắp xếp nó.


30

Đệm là không gian bên trong đường viền, trong khi Margin là không gian bên ngoài đường viền.


25

Đệm

Padding là một thuộc tính CSS xác định khoảng trắng giữa một nội dung phần tử và đường viền của nó (nếu nó có đường viền). Nếu một phần tử có đường viền xung quanh nó, phần đệm sẽ cung cấp không gian từ đường viền đó cho nội dung phần tử xuất hiện trong đường viền đó. Nếu một phần tử không có viền xung quanh nó, thì việc thêm phần đệm không có tác dụng gì với phần tử đó, vì không có viền để tạo khoảng trống.

Ký quỹ

Margin là một thuộc tính CSS xác định không gian bên ngoài của một phần tử với phần tử bên ngoài tiếp theo của nó.

Ký quỹ ảnh hưởng đến các yếu tố mà cả hai có hoặc không có biên giới. Nếu một phần tử có đường viền, lề xác định khoảng trắng từ đường viền này đến phần tử bên ngoài tiếp theo. Nếu một phần tử không có viền, thì lề xác định khoảng trắng từ nội dung phần tử đến phần tử bên ngoài tiếp theo.

Sự khác biệt giữa đệm và ký quỹ

Vì vậy, sự khác biệt giữa lề và đệm là trong khi đệm giao dịch với không gian bên trong, lề liên quan đến không gian bên ngoài đến phần tử bên ngoài tiếp theo.


1
Những yếu tố không có biên giới?
Sarim Javaid Khan

10

Một trong những khác biệt chính giữa lề và phần đệm không được đề cập trong bất kỳ câu trả lời nào: khả năng nhấp và phát hiện di chuột

Tăng phần đệm làm tăng kích thước hiệu quả của phần tử. Đôi khi tôi có một biểu tượng nhỏ mà tôi không muốn làm cho lớn hơn rõ rệt nhưng người dùng vẫn cần phải tương tác với biểu tượng đó. Tôi tăng phần đệm của biểu tượng để tạo cho nó một dấu chân lớn hơn cho các lần nhấp và di chuột. Tăng lề của biểu tượng sẽ không có tác dụng tương tự.

Một câu trả lời cho một câu hỏi khác về chủ đề này đưa ra một ví dụ.


Hầu hết các câu trả lời hàng đầu đề cập đến phần đệm là "bên trong" của phần tử và phần lề là "bên ngoài" của phần tử, điều này đã ngụ ý phần đệm góp phần vào vùng nhấp chuột lớn hơn. Tuy nhiên, điều đó không rõ ràng khi bạn xử lý một hộp hoàn toàn trong suốt, ...
BoltClock

9

lề = không gian xung quanh (bên ngoài) phần tử từ viền ra ngoài.

padding = khoảng trống xung quanh (bên trong) phần tử từ văn bản đến viền.

xem tại đây: http://jsfiddle.net/robx/GaMpq/


9

Thật tốt khi biết về sự khác biệt giữa marginpadding. Theo tôi biết:

  • Margin là không gian bên ngoài của một phần tử, trong khi phần đệm là không gian bên trong của một phần tử. Nói cách khác, lề là không gian bên ngoài đường viền của một phần tử, trong khi phần đệm là khoảng trống bên trong đường viền của nó.
  • Bạn có thể đặt autogiá trị thành lề. Tuy nhiên, nó không được phép để đệm. Xem này .
    Lưu ý: Sử dụng margin: autođể căn giữa một phần tử khối bên trong cha mẹ theo chiều ngang. Ngoài ra, có thể căn giữa một phần tử bên trong flexbox theo chiều dọc hoặc chiều ngang hoặc cả hai, bằng cách đặt lề thành tự động. Xem này .
  • Ký quỹ có thể là bất kỳ số float nào, nhưng phần đệm không được âm.
  • Khi bạn tạo kiểu cho một phần tử, phần đệm cũng sẽ được tạo kiểu; nhưng không lề. Margin có được phong cách của phần tử cha. Ví dụ: khi bạn đặt thuộc background-colortính thành màu đen, không gian bên trong của nó (tức là phần đệm) sẽ có màu đen, nhưng không phải là không gian bên ngoài của nó (tức là lề).

4

Ký quỹ là không gian bên ngoài hộp; đệm là không gian bên trong hộp. Thật khó để thấy sự khác biệt với màu trắng, nhưng với màu tô bạn có thể thấy nó ổn.


2

Margin và padding là cả hai loại đệm thực sự .... Một (lề) nằm ngoài đường viền của các phần tử để tạo khoảng cách với các phần tử khác và phần còn lại (phần đệm) nằm ngoài nội dung của các phần tử để tạo khoảng cách cho nội dung từ viền phần tử.


2

Đệm cho phép nhà phát triển duy trì không gian giữa văn bản và phần tử kèm theo. Margin là không gian mà phần tử duy trì với một phần tử khác của DOM cha.

Xem ví dụ:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UT-8">
    <title>Pseudo Elements</title>
    <style type="text/css">
        body{font-family:Arial; font-size:16px; background-color:#f8e6ae; color:#888;}
        .page
        {
            background-color: #fff;
            padding: 10px 30px 50px 50px;
            margin:30px 100px 30px 300px;
        }
    </style>
</head>
<body>
    <div class="page">
        Notice the distance between the top and this text. Then compare it with the distance between the bottom border and the this text. 
    </div>
</body>

1

Margin là một thuộc tính trong CSS được sử dụng để tạo khoảng trắng xung quanh các phần tử, bên ngoài đường viền. Lập trình viên có thể đặt lề cho đỉnh, phải, dưới và trái. Nói cách khác, anh ta có thể đặt các giá trị đó bằng cách sử dụng lề trên, lề phải, lề dưới và lề trái.

Các giá trị Margin có thể thuộc các loại sau.

Đầu tiên, auto cho phép trình duyệt tính toán lề. Hơn nữa, độ dài biểu thị một lề trong px, pt hoặc cm, trong khi% giúp mô tả một lề là tỷ lệ phần trăm so với chiều rộng của phần tử chứa. Cuối cùng, kế thừa biểu thị rằng lề phải kế thừa từ phần tử cha.

Padding là một thuộc tính trong CSS giúp tạo không gian xung quanh một phần tử bên trong đường viền. Lập trình viên có thể đặt phần đệm cho đỉnh, phải, dưới và trái. Nói cách khác, anh ta có thể đặt các giá trị đó bằng cách sử dụng padding-top, padding-right, padding-bottom và padding-left.

Các giá trị Padding có thể thuộc các loại sau.

Độ dài mô tả phần đệm theo px, pt hoặc cm, trong khi% biểu thị phần đệm là phần trăm so với chiều rộng của phần tử chứa. Cuối cùng, kế thừa mô tả rằng phần đệm nên được kế thừa từ phần tử cha.

 div.special {
          width:200px; 
          border-style: solid; 
          border-width:thin; 
          border-color:#000;
          margin:30px 20px 10px 25px;
}     
div.special2 {
          width:200px;
          border-style: solid;
          border-width:thin;
          border-color:#000;
          padding:30px 20px 10px 25px;
}        
<div class="special">
             Hello its margin test 
</div>
<div class="special2">
            Hello its padding test
</div>

Sự khác biệt giữa ký quỹ và đệm

Margin là một thuộc tính CSS được sử dụng để tạo không gian xung quanh phần tử bên ngoài đường viền được xác định, trong khi phần đệm là thuộc tính CSS được sử dụng để tạo không gian xung quanh phần tử, bên trong đường viền được xác định. Do đó, điều này giải thích sự khác biệt chính giữa lề và phần đệm.

Các giá trị Hơn nữa, các giá trị của lề có thể là tự động, độ dài,% hoặc kế thừa, trong khi các giá trị của phần đệm có thể là độ dài,% hoặc kiểu kế thừa. Do đó, đây là một sự khác biệt khác giữa lề và đệm.

Tóm lại, lề và phần đệm là hai thuộc tính trong CSS cho phép tạo kiểu cho các trang web. Không thể gán giá trị âm cho các thuộc tính đó. Sự khác biệt chính giữa lề và phần đệm là lề giúp tạo không gian xung quanh phần tử bên ngoài viền, trong khi phần đệm giúp tạo không gian xung quanh phần tử bên trong viền.


0

Hãy thử đặt màu nền trên một khối div với chiều rộng và chiều cao. Bạn sẽ thấy rằng phần đệm làm tăng kích thước của phần tử, trong khi lề chỉ di chuyển nó trong luồng tài liệu.

Ký quỹ là đặc biệt để thay đổi các yếu tố xung quanh.


0

Đệm là khoảng trắng giữa các thành phần gần nhất trên trang web và lề là khoảng cách từ lề của trang web.


0

Một điều tôi chỉ nhận thấy nhưng không có câu trả lời nào ở trên được đề cập. Nếu tôi có một phần tử DOM được tạo động được khởi tạo với nội dung html trống bên trong, thì nên sử dụng lề thay vì đệm nếu bạn không muốn phần tử trống này chiếm bất kỳ khoảng trống nào ngoại trừ nội dung của nó được tạo.


-1

Có một sự khác biệt quan trọng:

Margin- nằm ở bên ngoài phần tử, tức là người ta sẽ áp dụng dịch chuyển khoảng trắng "sau" phần tử bắt đầu. Phần đệm- nằm ở bên trong, phần còn lại sẽ áp dụng khoảng trắng "trước" phần tử bắt đầu.


-1

Ký quỹ được áp dụng cho bên ngoài phần tử của bạn do đó ảnh hưởng đến việc phần tử của bạn cách xa các phần tử khác bao xa.

Đệm được áp dụng cho bên trong phần tử của bạn do đó ảnh hưởng đến việc nội dung của phần tử của bạn cách xa biên giới bao xa.

Ngoài ra, sử dụng lề sẽ không ảnh hưởng đến kích thước của phần tử của bạn trong khi phần đệm sẽ làm cho kích thước phần tử của bạn (đặt chiều cao + phần đệm), ví dụ: nếu bạn có div 100x100px với phần đệm 5 px, div của bạn thực sự sẽ là 105x105px


Bạn có nhận thấy câu trả lời này đã được đưa ra? - và với một sự nhấn mạnh bổ sung và thích hợp?
JerryOL

-1

Về cơ bản, sự khác biệt giữa phần đệm và lề đến từ nền tảng. Đệm sẽ quyết định không gian giữa các nội dung, trong khi lề quyết định cạnh bên ngoài của các yếu tố!


-7

Đệm là khoảng trống giữa nội dung của bạn và đường viền. Trong trường hợp như Margin là khoảng cách giữa các biên giới và các yếu tố khác.


1
Lợi nhuận không đơn giản như vậy, và điều này không nói lên điều gì mà hàng tá câu trả lời quan trọng chưa được nói.
Quentin

2
Bạn chỉ cần lặp lại câu trả lời trước đó.
Johnroe Paulo Cañamaque
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.