CSS里,我在DIV里放了个<img>和<p>标签,为什么父元素DIV用了line-height:都不会垂直居中呢?

今天做一个浮动效果使用了float始終得不到效果,后来反复修改发觉marg和height也能影响浮动效果。

经多方尝试发现有多种方式可以实现要求效果:

以上3种方式均可以实现效果具体原理,我也没弄明白如有知道的兄弟请留言指导一下,不胜感谢!

le-height:是上一行文本的中线和下一行文本的中线间的间距

纯CSS让子元素突破父元素的宽度限制

在写样式中我们可以经常看到这样的情况

<span>子元素子元素子元素子元素子元素子元素子元素子元素子え素子元素子元素子元素子元素子元素子元素子元素子元素子元素子元素子元素</span>

如果你仔细思考过这个现象的话,why? 可能会问子元素不应该撐开父元素的宽度吗就想撑开父元素的高度一样。why? 那么如何让这个子元素的父元素撑开这个宽度呢这里提供两种解决方案。

外边距合并问题常见于第一个子え素的marg-top会顶开父元素与父元素相邻元素的间距而且只在标准下 (FirfFox、Chrome、Opera、Sarfi)产生问题,IE下反而表现良好例子可以查看下面代码(IE下表现“正常”,标准浏览器下查看出现“bug”):


这个问题发生的原因是根据规范一个盒子如果没有上补白(paddg-top)和上边框(border-top),那么这个盒子的上边距会和其内蔀文档流中的第一个子元素的上边距重叠

再说了白点就是:父元素的第一个子元素的上边距marg-top如果碰不到有效的border或者paddg.就会不断一层一层的 “领导”(父元素,祖先元素)的麻烦只要给领导设置个有效的 border或者paddg就可以有效的管制这个目无领导的marg防止它越级,假传圣旨把自己的marg当領导的marg执行。 对于垂直外边距合并的解决方案上面已经解释了为父元素例子中的middle元素增加一个border-top或者paddg-top即可解决这个问题。

深入理解一下marg外邊距:

20px;来的实在不要为了现在节省俩个字节而让日后再次开发的成本上升。

何时应当使用marg:

需要在border外侧添加空白时

空白处不需要背景(色)时。

上下相连的两个盒子之间的空白需要相互抵消时。如15px + 20px的marg将得到20px的空白。

需要在border内测添加空白时

空白处需要背景(色)时。

上下相连的两个盒子之间的空白希望等于两者之和时。如15px + 20px的paddg将得到35px的空白。

个人认为:marg是用来隔开元素与元素的间距;paddg是用来隔开え素与内容的间隔marg用于布局分开元素使元素与元素互不相干;paddg用于元素与内容之间的间隔,让内容(文字)与(包裹)元素之间有一段“呼吸距离”

我要回帖

更多关于 simg2img 的文章

 

随机推荐