zoukankan      html  css  js  c++  java
  • margintop绑架父节点问题的分析

    现象:
    当两个空的块级元素嵌套时,如果内部的块设置有margin-top属性,而且父元素没有下边解决方法所述的特征,那么内部块的margin-top属性会绑架父元素(即将margin-top传递凌驾给了父元素)。
    就好比一个小兵,看到上级有漏洞,就假传圣旨,利用漏洞扩张自己的权利。只要设置父元素的border(栅栏)或者padding(隔离墙),就能管住这个调皮的下属。

    123 <div id="parrent"> <div id="box1"></div></div> 1234567891011 #parrent{ 500px; height:300px; background:teal;}#box1{ 100px; height:100px; background:aqua; margin:20px;}

    解决方法:
    1、设置父元素或者自身的display:inline-block;
    2、设置父元素的border:1px aqua solid;(>0)
    3、设置父元素的padding:1px;(>0)
    4、给父元素设置overflow:hidden;
    5、给父元素或者自身设置position:absolute;
    6、设置父元素非空,填充一定的内容。

    这个现象并不是bug,而是有理论依据的:

    《on having layout》
    hasLayout 会影响一个盒子和其子孙的边距重叠。根据规范,一个盒子如果没有上补白和上边框,那么它的上边距应该和其文档流中的第一个孩子元素的上边距重叠。

    作者:冯亮
             
    能力有限,水平一般。如有错误,欢迎指正
  • 相关阅读:
    ecstore前台模板变量处理
    MySQL慢查询日志总结
    Linux 操作MySQL常用命令行
    CGI、FastCGI和php-fpm的概念和区别
    sync实现windows与nginx主机端文件同步(参考文档)
    PHP实现四种基本排序算法
    http和https协议
    linux的计划任务
    php封装一个接口类
    mysql的常见面试问题
  • 原文地址:https://www.cnblogs.com/fengliang/p/3008518.html
Copyright © 2011-2022 走看看