블록 요소의 순서가 있고 그 사이에 마진을 배치하려는 경우.Css margin-top 대 margin-bottom
마진 - 상단 또는 마진 - 하단 또는 둘 모두를 원하십니까? 왜?
블록 요소의 순서가 있고 그 사이에 마진을 배치하려는 경우.Css margin-top 대 margin-bottom
마진 - 상단 또는 마진 - 하단 또는 둘 모두를 원하십니까? 왜?
항상 margin-bottom
을 사용합니다. 즉, 첫 번째 요소 앞에 불필요한 공백이 없음을 의미합니다.
요즘에도이 방법을 사용하고 있습니다. 매우 자연 스럽거나 논리적 인 것으로 보입니다. 그런 다음 마진이 위의 여백보다 논리적으로 관련이있는 경우 여백이 종종있는 것처럼 보입니다. 그러나 다른 유형의 항목 사이에있는 공간보다 P 태그와 같은 유형의 항목 사이에 공간을 적게 넣는 데 문제가 있습니다. 그리고이 페이지에있는 몇 가지 예제를 보면 상단 여백 경로가 더 세련된 솔루션을 제공하는 것처럼 보일 것입니다. 그러나 나는 몰라. 나는 그 특정 질문에 대해 또 다른 SO 스레드를 시작할 것이라고 생각한다. – sugardaddy
나는 몇 번 마진 - 톱으로 비트로 바꾼 후 이것을 바꿨다. @sblundy가 그 해결책을 필요로하는 자신을 찾지 못했다는 점이 있습니다. 그런데 다시 React with SASS와 Radium을 사용하면 CSS 해킹이 많이 만들어집니다. – BAR
상황에 따라 다름. 일반적으로 margin-top
은 :first-child
을 사용하여 제거 할 수 있기 때문에 더 좋습니다. 좋아요 :
div.block {
margin-top: 10px;
}
div.block:first-child {
margin-top: 0;
}
이렇게하면 마진은 블록 사이에만 적용됩니다.
더 많은 최신 브라우저에서만 작동합니다.
@이 매트 - 귀하의 접근 방식에 동의하지 않습니다. 나는 의미 론적 방식으로 요소들에 공간을 할당하고, 문맥 선택 자들을 사용하여 그 요소들의 집합에 대한 행동을 정의 할 것이다. 대신 그 내용의 행동 후
.content p { /* obviously choose a more elegant name */
margin-bottom: 10px;
}
명명 클래스는 미끄러운 경사의 종류, 그리고 HTML의 의미 특성을 muddies. 예를 들어, 페이지의 한 영역에 .top10 클래스의 모든 요소가 갑자기 20 픽셀을 필요로한다면 어떻게 될까요? 단일 규칙을 변경하는 대신 새 클래스 이름을 작성하고 영향을 주려는 모든 요소에 대해 변경해야합니다.
원래 질문에 대답하려면 요소를 어떻게 쌓을 지에 달려 있습니다. 상단 또는 하단에 여분의 공간을 원하십니까?
예 일반적으로 나는 마진 - 바닥도 사용하고 마지막 클래스를 마지막 클래스에 할당합니다. 이것에 대해 다른 스타일을 원한다고 가정하십시오.
.discussion .detailed.topics { margin: 20px 0 }
.discussion .detailed.topics .topic { margin-bottom: 30px }
.discussion .detailed.topics .topic.last { margin-bottom: 0 }
이 강력한 방법입니다 때 margin-top
과 결합 +
선택 사용하는 동적 구동 내용을
HTML (면도기보기 엔진)
<div class="detailed topics">
@if (Model.ActiveTopics != null && Model.ActiveTopics.Count > 0)
{
for (int i = 0; i < Model.ActiveTopics.Count(); i++)
{
var topic = Model.ActiveTopics[i];
<div class="[email protected](i == Model.ActiveTopics.Count - 1 ? " last" : "")">
...
</div>
}
}
</div>
저는 실제로 맨 위/첫 번째 요소에 대한 클래스를 제외하고는 이와 비슷한 접근법을 사용합니다. 어쨌든 마진 붕괴 때문에 그 클래스를 사용할 필요가없는 경우가 종종 있습니다. 하지만 나는 "홀수"클래스를 첫 번째 요소에 넣기를 좋아한다. 왜냐하면 나는 prepend보다는 블록 목록에 추가 할 가능성이 더 많기 때문이다. (따라서 추가는 "마지막"클래스를 마지막 요소로 이동시키기 위해 편집을 덜 필요로한다.). – sugardaddy
또 다른 옵션은 사용 :
을.article + .article {
margin-top: 10px;
}
이렇게하면 후자의 요소가 선택됩니다. h는 규칙이 첫 번째 요소에 전혀 적용되지 않음을 의미합니다. 추가 클래스, 의사 클래스 또는 요소 위 또는 아래 공간이 없습니다.
나는 항상 으로 생각하는 요소에 여백을 넣습니다.. 즉, DOM에서 제거 될 가능성이 큰 요소입니다. 예 : 난 그냥 제목을 언급하기를 원한다면, 제거 할 설명은 제목없이 많은 이해가되지 않기 때문에이 경우
<div class="title">My Awesome Book</div>
<p>Description of My Awesome Book</p>
, 나는, <p>
에 margin-top
를 넣어,하지만 설명 몇 가지 가능성이있다.
또 다른 예 : 여기
<img src="icon.png">
<div>My Awesome Book</div>
, 내가 반대 할 것입니다. 아이콘에 margin-bottom
을 추가합니다. 아이콘을 단지 장식이라고 생각하고, 다시 말하면 제거 할 가능성이 더 큽니다.
이것은 제 철학입니다. 스타일 요소는 잠재적 인 DOM 변경을 통해 CSS 변경을 방지하는 방법입니다.
마진 붕괴에 대해 잊지 마십시오 –