最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

如何解决margin折叠从子元素margin-top影响父元素引出的问题

来源:动视网 责编:小采 时间:2020-11-27 15:34:42
文档

如何解决margin折叠从子元素margin-top影响父元素引出的问题

如何解决margin折叠从子元素margin-top影响父元素引出的问题:正在做一个手机端电商项目,顶部导航栈的布局是一个p包含一个子p,如果给在正常文档流中的子p一个垂直margin-top,神奇的现象出现了,两父子元素的边距没变,但父p跟着一起往下走了!html代码:<p id="fatherbox"> <p
推荐度:
导读如何解决margin折叠从子元素margin-top影响父元素引出的问题:正在做一个手机端电商项目,顶部导航栈的布局是一个p包含一个子p,如果给在正常文档流中的子p一个垂直margin-top,神奇的现象出现了,两父子元素的边距没变,但父p跟着一起往下走了!html代码:<p id="fatherbox"> <p
 正在做一个手机端电商项目,顶部导航栈的布局是一个p包含一个子p,如果给在正常文档流中的子p一个垂直margin-top,神奇的现象出现了,两父子元素的边距没变,但父p跟着一起往下走了!

html代码:

<p id="fatherbox">

  <p id="childbox">首页

  </p>

</p>

css样式:

#fatherbox{width:100%,height:px;background-color:red}

#childbox{height:44px;margin-top:20px;background:yellow}

解决方法:

1.父元素添加padding-top样式;

2.父元素添加overflow:hidden样式;

3.父元素或子元素浮动;

4.给父元素添加boarder(看需求而定);

5.为父元素或子元素绝对定位;

6.在子元素前添加子p并设置height:1px和overflow:hidden样式(如果添加的是inline-block元素,需要改display为block)。

原理:margin折叠(Collapsing Margins)

毗邻的两个或多个外边距 (margin) 在垂直方向会合并成一个外边距。

这里的毗邻指没有上下padding-top,padding-bottom,border-top,border-bottom,元素内容不为空。

最常见的margin折叠是<p>元素并列时,每个p都有上下1em的margin,但相临的p只会显示1em的间隔而不是2em。

本例中两个p是父子关系,并且没有padding-top和border-top,即父元素和子元素上边重合。也属于毗邻的范畴,所以也出现了margin折叠,本例显示了子元素的margin-top;

避免这个问题只要使条件不符合或者隐藏margin:给父元素加padding/border,父子间添加其他元素,或者设置为浮动,定位都行。

IE中的情况还没有具体测试过,后面补全。

文档

如何解决margin折叠从子元素margin-top影响父元素引出的问题

如何解决margin折叠从子元素margin-top影响父元素引出的问题:正在做一个手机端电商项目,顶部导航栈的布局是一个p包含一个子p,如果给在正常文档流中的子p一个垂直margin-top,神奇的现象出现了,两父子元素的边距没变,但父p跟着一起往下走了!html代码:<p id="fatherbox"> <p
推荐度:
标签: 影响 解决 的问题
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top