답변:
TL; DR : 기본적으로 테두리 나 배경이 있고 표시되는 상자 내부의 공간을 늘리려는 경우를 제외하고는 모든 곳에서 여백을 사용합니다.
패딩과 여백의 가장 큰 차이점은 세로 여백이 자동 축소되고 패딩이 그렇지 않다는 것입니다.
안쪽에 패딩이있는 두 요소를 고려하십시오 1em
. 이 패딩은 요소의 일부로 간주되며 항상 유지됩니다.
따라서 첫 번째 요소의 내용, 첫 번째 요소의 패딩, 두 번째 요소의 패딩, 두 번째 요소의 내용으로 끝납니다.
따라서 두 요소의 내용이 2em
분리됩니다.
이제 해당 패딩을 1em 여백으로 바꿉니다. 여백은 요소 외부에있는 것으로 간주되며 인접한 항목의 여백이 겹칩니다.
따라서이 예에서는 첫 번째 요소의 내용 1em
과 결합 된 여백, 두 번째 요소의 내용으로 끝납니다 . 따라서 두 요소의 내용은 서로 1em
다릅니다.
이것은 1em
어떤 요소가 옆에 있는지에 관계없이 요소 주위에 간격 을 말하고 싶다는 것을 알 때 정말 유용 할 수 있습니다 .
다른 두 가지 큰 차이점은 클릭 영역과 배경 색상 / 이미지에는 패딩이 포함되지만 여백은 포함되지 않는다는 것입니다.
div.box > div { height: 50px; width: 50px; border: 1px solid black; text-align: center; }
div.padding > div { padding-top: 20px; }
div.margin > div { margin-top: 20px; }
<h3>Default</h3>
<div class="box">
<div>A</div>
<div>B</div>
<div>C</div>
</div>
<h3>padding-top: 20px</h3>
<div class="box padding">
<div>A</div>
<div>B</div>
<div>C</div>
</div>
<h3>margin-top: 20px; </h3>
<div class="box margin">
<div>A</div>
<div>B</div>
<div>C</div>
</div>
box-sizing: border-box;
있으므로 width: 100px; padding-left: 20px;
전체 너비가 100px이지만 box-sizing: content-box;
컨텐츠 너비 계산에서 패딩이 분리되는 경우와 달리 컨텐츠 영역은 20px 줄어 듭니다. 내용 상자에서 총 너비가 120px입니다.
안쪽 여백은 안쪽에 있고 여백은 블록 요소 바깥쪽에 있습니다.
padding(A) + padding(B) + max(margin(A), margin(B))
<a>
패딩과 여백으로 둘러싸인 일부 텍스트를 보유 하는와 같은 것을 엉망으로 만들 수 있습니다. 이 트릭을 사용하여 클릭 할 수있는 공간을 확인하십시오.
예제, 다이어그램, 심지어 '직접 시도해보기'로 이것을 설명하는 최고가 여기 있습니다 .
아래 그림은 그 차이에 대한 즉각적인 시각적 이해를 제공한다고 생각합니다.
명심해야 할 것은 표준 호환 브라우저 ( IE quirks는 예외입니다 )는 콘텐츠 부분 만 주어진 너비로 렌더링하므로 레이아웃 계산에서이를 추적하십시오. 또한 테두리 상자는 부트 스트랩 3을 지원 하는 컴백을 보여 줍니다.
질문에 대한 더 많은 기술적 설명이 있지만 , 사용시기와 방법을 선택하는 데 도움이되는 여백과 패딩 에 대해 생각할 방법을 찾고 있다면 도움이 될 것입니다.
블록 요소를 벽에 걸려있는 그림과 비교하십시오.
여백과 패딩을 결정할 때 벽의 다른 것들과 관련하여 요소를 배치 할 때 여백 을 사용 하고 요소 자체의 모양을 조정할 때 패딩 을 사용하는 것이 좋습니다. 여백은 요소의 크기를 변경하지 않지만 패딩은 일반적으로 요소를 1 더 크게 만듭니다 .
1 이 기본 상자 모델은 box-sizing
속성 으로 변경할 수 있습니다 .
border-box
( jsfiddle.net/8yravLmL/1 참조 ). 혼란을 피하기 위해 대답을 더 미묘하게 만들 것입니다.
마진 vs 패딩 :
요소에서 여백은 해당 요소와 페이지의 다른 요소 사이의 거리를 만들기 위해 사용됩니다. 패딩은 내용과 요소의 경계 사이의 거리를 만드는 데 사용됩니다.
여백은 패딩이 요소의 일부인 요소의 일부가 아닙니다.
에서 https://www.w3schools.com/css/css_boxmodel.asp
다른 부분에 대한 설명 :
내용 -텍스트와 이미지가 나타나는 상자의 내용
패딩 -컨텐츠 주변의 영역을 지 웁니다. 패딩은 투명하다
테두리 -패딩 및 내용을 둘러싼 테두리
여백 -테두리 외부의 영역을 지 웁니다. 여백은 투명하다
실제 예 (값을 변경하여 재생) : https://www.w3schools.com/css/tryit.asp?filename=trycss_boxmodel
여기에 방법을 보여줍니다 일부 HTML입니다 padding
및 margin
클릭 가능성에 영향을 미칠 및 배경 채우기는. 객체는 패딩에 대한 클릭을 수신하지만 객체 여백의 영역을 클릭하면 상위로 이동합니다.
$(".outer").click(function(e) {
console.log("outer");
e.stopPropagation();
});
$(".inner").click(function(e) {
console.log("inner");
e.stopPropagation();
});
.outer {
padding: 10px;
background: red;
}
.inner {
margin: 10px;
padding: 10px;
background: blue;
border: solid white 1px;
}
<script src="http://code.jquery.com/jquery-latest.js"></script>
<div class="outer">
<div class="inner" style="position:relative; height:0px; width:0px">
</div>
</div>
이 사이의 차이점을 알고 좋은 margin
과를 padding
. 몇 가지 차이점이 있습니다.
여백은 요소의 외부 공간 이며 패딩은 요소의 내부 공간 입니다.
여백은 요소의 테두리 외부 공간이며 패딩은 요소의 테두리 내부 공간입니다.
여백은 auto : 값을 허용 margin: auto
하지만 패딩을 자동으로 설정할 수 없습니다.
여백은 임의의 숫자로 설정할 수 있지만 패딩은 음수가 아니어야합니다.
요소의 스타일을 지정할 때 여백은 영향을받지 않고 (예 : 배경색) 영향을받습니다.
고급 마진 대 패딩 설명
padding
요소에 내용을 배치하는 데 사용 하는 것은 부적절합니다 . 당신은 해야한다 활용할 margin
온 자식 요소 대신. Internet Explorer와 같은 오래된 브라우저 margin
는 Internet Explorer 4 에서 완벽하게 작동하는 경우를 제외하고는 상자 모델을 잘못 해석했습니다 .
사용하기 padding
에 적합한 경우 두 가지 예외 가 있습니다.
입력 요소와 같은 하위 요소를 포함 할 수없는 인라인 요소에 적용됩니다 .
당신은 공급 업체가 * 기침 * 모질라는 * 기침 * 당신이 것을 수정하고 (당신이 W3C와 WHATWG 편집자들과 정기적 교류를 유지하는 정도) 확신을 거부 높은 기타 브라우저 버그를 보상하는 있어야 작동하는 솔루션이 솔루션을 보상하는 버그 이외의 다른 스타일에는 영향을 미치지 않습니다.
너비가 100 % 인 경우 padding: 50px;
효과적으로 얻을 수 width: calc(100% + 100px);
있습니다. 이후 margin
되어 있지 받는 추가 width
예기치 않은 레이아웃 문제 원인 당신이 사용하지 않을 경우 margin
에 child elements
대신 padding
요소에 직접.
당신이있어 경우에 따라서 하지 않는 두 가지 중 하나를 수행 하지 요소에 만에 패딩을 추가 당신이받을거야 보장하기 위해 직접 아이 / 어린이 요소 (들)의 예상 에서 동작 하는 모든 브라우저를.
먼저 차이점과 각 책임이 무엇인지 살펴 보겠습니다.
1) 여백
CSS 여백 속성은 요소 주위에 공간을 생성하는 데 사용됩니다.
여백 속성은 테두리 외부의 공백 크기를 설정합니다. CSS를 사용하면 여백을 완전히 제어 할 수 있습니다.
요소의 각 측면 (위쪽, 오른쪽, 아래쪽 및 왼쪽)에 대한 여백을 설정하기위한 CSS 속성이 있습니다.
2) 패딩
CSS 패딩 속성은 내용 주위에 공간을 생성하는 데 사용됩니다.
안쪽 여백은 요소의 내용 (테두리 내부) 주변 영역을 지 웁니다.
CSS를 사용하면 패딩을 완전히 제어 할 수 있습니다. 요소의 각 측면에 패딩을 설정하기위한 CSS 속성이 있습니다 (위쪽, 오른쪽, 아래쪽 및 왼쪽).
따라서 여백 은 요소 주위에 공간이며, 패딩 은 요소의 일부인 내용 주위에 공간입니다.
코드 맨 의이 이미지는 여백과 테두리가 어떻게 서로 바뀌는 지, 테두리 상자와 내용 상자가 어떻게 다른지 보여줍니다.
또한 각 섹션을 아래와 같이 정의합니다.
- 내용 -텍스트, 이미지 또는 다른 요소와 같은 실제 내용이있는 상자의 내용 영역을 정의합니다.
- 패딩 -기본 컨텐츠를 포함 상자에서 지 웁니다.
- 테두리 -내용과 패딩을 모두 둘러 쌉니다.
- 여백 -이 영역은 다른 요소와 분리되는 투명한 공간을 정의합니다.
여백은 상자 외부에 있고 패딩은 상자 안에 있습니다.
padding
초점 영역<a>
을 늘리고 싶을 때 태그에 사용하십시오 .