목차
回复讨论(解决方案)
웹 프론트엔드 HTML 튜토리얼 高度为0的块级元素的下外边距为什么没有效果?_html/css_WEB-ITnose

高度为0的块级元素的下外边距为什么没有效果?_html/css_WEB-ITnose

Jun 24, 2016 am 11:56 AM

在看《CSS那些事儿》遇到一个问题,在两列定宽结构中,高度为0的块级元素(即#container)的下外边距没有起作用,请问是怎么回事?
效果图和代码如下:



* {	margin:0;	padding:0;} /* 设置页面中所有元素的内外补丁为0,便于更便捷的页面布局 */#header, #footer {	width:960px;	height:30px;	background-color:#E8E8E8;} /* 设置头部信息以及底部信息的宽度为960px,高度为30px,并添加浅灰色背景色 */#container {	width:960px;	margin:10px 0;} /* 设置页面内容区域的宽度为960px,并设置上下外补丁为10px */.mainBox {	float:left; /* 将主要内容区域向左浮动 */	width:680px;	color:#FF0000;	background-color:#333333;} /* 设置主要内容区域的宽度为680px,背景色以及文本颜色,并居左显示 */.sideBox {	float:right; /* 将侧边栏向右浮动 */	width:270px;	color:#FFFFFF;	background-color:#999999;} /* 设置侧边栏的宽度为270px,背景色以及文本颜色,并居右显示 */#footer {	clear:both;} /* 清除内容区域的左右浮动 */
로그인 후 복사


<div id="header">头部信息</div><div id="container">	<div class="mainBox">主要内容区域</div>	<div class="sideBox">侧边栏</div></div><div id="footer">底部信息</div>
로그인 후 복사


回复讨论(解决方案)

楼主想说那儿没有效果?

楼主想说那儿没有效果?



中间的container里的元素都浮动了,所以container的高度为0,它与footer的间隔没有了~~这是为什么啊?但是它和header的间隔还有...

.sideBox {            float:right; /* 将侧边栏向右浮动 */            width:270px;            color:#FFFFFF;            background-color:#999999;            margin-bottom:10px;        } /* 设置侧边栏的宽度为270px,背景色以及文本颜色,并居右显示 */
로그인 후 복사


谢谢你,我明白你的方法可以解决,也知道其他解决的方法,但是我想明白为什么高度为0的div的上外边距有效而下外边距无效?

给container那个div清浮动,clearfix,你搜一下。

子级元素浮动脱离了文本流,其实你的父级div是有margin-bottom的,只不过高度为0,所以需要清浮动,能明白不?

子级元素浮动脱离了文本流,其实你的父级div是有margin-bottom的,只不过高度为0,所以需要清浮动,能明白不?


#container {    width:960px;    margin:10px 0;} /* 设置页面内容区域的宽度为960px,并设置上下外补丁为10px */
로그인 후 복사
로그인 후 복사
로그인 후 복사

这一行已经给div加了margin-bottom了呀,,我知道清除浮动可以显示出来,但是我想明白的是,为什么div高度为0的时候上外边距有效而下外边距无效?!!

楼主,float是相对于下个元素的,如两个div,第一个div float:right那么两个div就会在同一行上,第二个div会出现在右边。当然一个容器内只有一个元素的话也可以使用float,不过这样效果就类似于text-align了。你对sideBox设置了浮动对它的下一个元素就影响,你可以去掉sideBox的浮动,可以看到对footer的margin-bottom就出来了

好吧,我发现我上面的说法有问题,自己也测试了一下,margin-bottom其实是存在的,只是因为container高度为0,所以就变成图片那样的效果。 应该是由于内层div的浮动使外层div高度为0造成的,给外层div(container )设置overflow:hidden,或者给container设置高度都可以解决。


首先谢谢您这么热情的帮助我。
我也知道是因为内层div的浮动导致外层的高度为0,也知道许多解决的方法,但是我的问题是,为什么外层的div高度为0的时候上外边距有效而下外边距有效? 我是想知道最根本的原因,,原理!

任何可以触发 container的hasLayou的方法都可以解决问题。脱离布局流是针对后面元素,对于前面元素布局是有效的,可以通过设置mainbox或者sidebox的margin可以发现这点。


子级元素浮动脱离了文本流,其实你的父级div是有margin-bottom的,只不过高度为0,所以需要清浮动,能明白不?


#container {    width:960px;    margin:10px 0;} /* 设置页面内容区域的宽度为960px,并设置上下外补丁为10px */
로그인 후 복사
로그인 후 복사
로그인 후 복사

这一行已经给div加了margin-bottom了呀,,我知道清除浮动可以显示出来,但是我想明白的是,为什么div高度为0的时候上外边距有效而下外边距无效?!!


我想是因为margin-bottom与margin-top重复而已,随意改变其中一个,空出的大小都是按最大的显示。



子级元素浮动脱离了文本流,其实你的父级div是有margin-bottom的,只不过高度为0,所以需要清浮动,能明白不?


#container {    width:960px;    margin:10px 0;} /* 设置页面内容区域的宽度为960px,并设置上下外补丁为10px */
로그인 후 복사
로그인 후 복사
로그인 후 복사

这一行已经给div加了margin-bottom了呀,,我知道清除浮动可以显示出来,但是我想明白的是,为什么div高度为0的时候上外边距有效而下外边距无效?!!


我想是因为margin-bottom与margin-top重复而已,随意改变其中一个,空出的大小都是按最大的显示。


<div style="width:100px;height:50px;background-color:#ff0000;margin-bottom:10px;">af </div><div style="width:100px;height:50px;background-color:#00ff00;margin-top:10px;">ffaf </div>
로그인 후 복사

就像这两个,上面div的下外边距与下面div的上外边距重复了,应该就是外边距的空间共用。
换成padding时,你那个空隙就变成20px了。



谢谢,真的是外边距合并...css没有系统学,不知道这么基础的知识,谢谢你的耐心帮助!
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

공식 계정 웹 페이지의 캐싱 업데이트에 어려움 : 버전 업데이트 후 사용자 경험에 영향을 미치는 이전 캐시를 피하는 방법은 무엇입니까? 공식 계정 웹 페이지의 캐싱 업데이트에 어려움 : 버전 업데이트 후 사용자 경험에 영향을 미치는 이전 캐시를 피하는 방법은 무엇입니까? Mar 04, 2025 pm 12:32 PM

공식 계정 웹 페이지 업데이트 캐시, 이것은 간단하고 간단하며 냄비를 마시기에 충분히 복잡합니다. 공식 계정 기사를 업데이트하기 위해 열심히 노력했지만 사용자는 여전히 기존 버전을 열었습니까? 이 기사에서는이 뒤에있는 비틀기와 회전을 살펴 보고이 문제를 우아하게 해결하는 방법을 살펴 보겠습니다. 읽은 후에는 다양한 캐싱 문제를 쉽게 처리 할 수있어 사용자가 항상 가장 신선한 콘텐츠를 경험할 수 있습니다. 기본 사항에 대해 먼저 이야기 해 봅시다. 액세스 속도를 향상시키기 위해 브라우저 또는 서버는 일부 정적 리소스 (예 : 그림, CSS, JS) 또는 페이지 컨텐츠를 저장합니다. 다음에 액세스 할 때 다시 다운로드하지 않고도 캐시에서 직접 검색 할 수 있으며 자연스럽게 빠릅니다. 그러나 이것은 또한 양날의 검입니다. 새 버전은 온라인입니다.

웹 페이지의 PNG 이미지에 뇌졸중 효과를 효율적으로 추가하는 방법은 무엇입니까? 웹 페이지의 PNG 이미지에 뇌졸중 효과를 효율적으로 추가하는 방법은 무엇입니까? Mar 04, 2025 pm 02:39 PM

이 기사는 CSS를 사용한 웹 페이지에 효율적인 PNG 테두리 추가를 보여줍니다. CSS는 JavaScript 또는 라이브러리에 비해 우수한 성능을 제공하며, 미묘하거나 눈에 띄는 효과를 위해 테두리 너비, 스타일 및 색상 조정 방법을 자세히 설명합니다.

HTML5 양식 유효성 검사 속성을 사용하여 사용자 입력을 유효성있게하려면 어떻게합니까? HTML5 양식 유효성 검사 속성을 사용하여 사용자 입력을 유효성있게하려면 어떻게합니까? Mar 17, 2025 pm 12:27 PM

이 기사에서는 브라우저에서 직접 사용자 입력을 검증하기 위해 필요한, Pattern, Min, Max 및 Length 한계와 같은 HTML5 양식 검증 속성을 사용하는 것에 대해 설명합니다.

& lt; datalist & gt의 목적은 무엇입니까? 요소? & lt; datalist & gt의 목적은 무엇입니까? 요소? Mar 21, 2025 pm 12:33 PM

이 기사는 HTML & LT; Datalist & GT에 대해 논의합니다. 자동 완성 제안을 제공하고, 사용자 경험을 향상시키고, 오류를 줄임으로써 양식을 향상시키는 요소. 문자 수 : 159

HTML5의 크로스 브라우저 호환성에 대한 모범 사례는 무엇입니까? HTML5의 크로스 브라우저 호환성에 대한 모범 사례는 무엇입니까? Mar 17, 2025 pm 12:20 PM

기사는 HTML5 크로스 브라우저 호환성을 보장하기위한 모범 사례에 대해 논의하고 기능 감지, 점진적 향상 및 테스트 방법에 중점을 둡니다.

& lt; meter & gt의 목적은 무엇입니까? 요소? & lt; meter & gt의 목적은 무엇입니까? 요소? Mar 21, 2025 pm 12:35 PM

이 기사는 HTML & lt; meter & gt에 대해 설명합니다. 범위 내에 스칼라 또는 분수 값을 표시하는 데 사용되는 요소 및 웹 개발의 일반적인 응용 프로그램. & lt; meter & gt; & lt; Progress & Gt; 그리고 Ex

& lt; Progress & Gt의 목적은 무엇입니까? 요소? & lt; Progress & Gt의 목적은 무엇입니까? 요소? Mar 21, 2025 pm 12:34 PM

이 기사는 HTML & lt; Progress & Gt에 대해 설명합니다. 요소, 그 목적, 스타일 및 & lt; meter & gt의 차이; 요소. 주요 초점은 & lt; progress & gt; 작업 완료 및 & lt; meter & gt; Stati의 경우

html5 & lt; time & gt; 의미 적으로 날짜와 시간을 나타내는 요소? html5 & lt; time & gt; 의미 적으로 날짜와 시간을 나타내는 요소? Mar 12, 2025 pm 04:05 PM

이 기사는 html5 & lt; time & gt; 시맨틱 날짜/시간 표현 요소. 인간이 읽을 수있는 텍스트와 함께 기계 가독성 (ISO 8601 형식)에 대한 DateTime 속성의 중요성을 강조하여 Accessibilit를 향상시킵니다.

See all articles