问答详情
源自:13-9 Relative与Absolute组合使用

请教老师一个问题

一个问题: 

如果单把box4写成position:absolute; 为什么之前定义的宽度在box4上就没了?自动变成block元素的默认值了(占满一整行) 


但如果把box3写成position:absolute; 或 position:relative;任意一种 然后再把box4写成position:absolute;宽度什么的就没问题?

提问者:Zickson 2016-01-23 17:54

个回答

  • Zickson
    2016-01-24 02:48:59

    好了 隔了几个小时回来瞄了眼 发现作者把box4下面原来的99%改成200px了...正好提问里还保存了原来的代码,试了试彻底明白了...

    之前是被原来的99%给带歪了...原意应该是让看到99%指向不同宽度的目标有不同会变化...(默认99%指向box3的200px。不对box3使用relative或absolute,只对box4使用absolute之后指向body全屏幕宽度)

    结果右边的效果图里即使最大化了也看不到99%的body宽度...

  • Zickson
    2016-01-23 19:06:40

    改了下加了盒子模型,又发现一个问题:absolute计算父元素节点位置时从边框为0算起(但默认位置不是)  左右上下貌似还要算padding的距离 relative则不用。


    #box3{

        width:400px;

        height:400px;

        padding:20px; 

        margin:20px;

        border:15px solid red;

        position:relative;

    }

    /*box3的padding厚度20px*/

    #box4{

        width:99%;

        position:absolute;

        left:0;

        /*box4的absolute left定位如果0px则紧贴左侧边框内侧(默认位置为padding的宽度20px),如果改为relative则left:0依然保留padding留白*/

    }


  • Zickson
    2016-01-23 17:56:48

    补充猜想:莫非是absolute跳出正常文档流不光改变位置,而且对于其父结点上定义的内容不自动继承?