哪位 css 大神帮我解释一下下面三个 demo。。。 - V2EX
crazyxhz
V2EX    CSS

哪位 css 大神帮我解释一下下面三个 demo。。。

  •  1
     
  •   crazyxhz Feb 15, 2017 3470 views
    This topic created in 3375 days ago, the information mentioned may be changed or developed.
    • 外包 div 设置了 relative 但是没有设置 top , left 等位置,这种设法是不是就等同于 position:static; 为啥没有在新的块上?

    demo1

    • 同 demo1 ,只是第一个 div 长宽设置大了一点,为啥偏向下移了 100px

    demo2

    • 把 content 的 position 从 relative 改为 absolute ,这个效果可以理解

    demo3

    Supplement 1    Feb 15, 2017

    感谢v2ex的大神,mdn是好东西啊 原来margin collapse不但相邻元素会发生,第一个或者最后一个子节点也会发生: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Box_Model/Mastering_margin_collapsing

    解决方法,wrapper加一个border或者padding ,或者把wrapper变成 Block formatting context ,就如回复中提到的overflow:hidden

    12 replies    2017-02-15 17:22:53 +08:00
    vizards
        1
    vizards  
       Feb 15, 2017
    在一个相对定位( position 属性的值为 relative )的元素上设置 top 、 right 、 bottom 和 left 属性会使其偏离其正常位置。其他的元素的位置则不会受该元素的影响发生位置改变来弥补它偏离后剩下的空隙。

    http://zh.learnlayout.com/position.html
    crazyxhz
        3
    crazyxhz  
    OP
       Feb 15, 2017
    @vizards 这个我知道啊。。。
    vizards
        4
    vizards  
       Feb 15, 2017
    r#3 @crazyxhz 之前没看清,,不好意思,你给 wapper 设置一个 overflow:hidden 应该就是你想要的效果了
    vizards
        5
    vizards  
       Feb 15, 2017
    r#4 @vizards wapper => wrapper
    vizards
        6
    vizards  
       Feb 15, 2017
    CSS2.1 的盒模型中规定
    vizards
        7
    vizards  
       Feb 15, 2017   1
    所有毗邻的两个或更多盒元素的 margin 将会合并为一个 margin 共享之。毗邻的定义为:同级或者嵌套的盒元素,并且它们之间没有非空内容、 Padding 或 Border 分隔。这就是外边距共享问题。所以只要破坏掉毗邻的要求就可以了。
    freeminder
        8
    freeminder  
       Feb 15, 2017   1
    第一个 demo 是粉色方框的负 marigin 折叠了
    freeminder
        9
    freeminder  
       Feb 15, 2017   1
    第二个 demo 也是 margin 折叠,按照你的写法红框和蓝框直接始终重合粉框的负 margin
    chztv
        10
    chztv  
       Feb 15, 2017
    给 content 加上 position: absolute 不就行了,你就想要粉色那个 box 居中的效果吧?
    chztv
        11
    chztv  
       Feb 15, 2017
    @crazyxhz absolute 和 relative 一定要明白其含义,你的 content 到底想要相对还是绝对定位?相对的话不要用 margin 来定位,可以在 wrapper 里用 padding 更方便一些;绝对的话,可以用 top left right bottom 设置来定位。
    crazyxhz
        12
    crazyxhz  
    OP
       Feb 15, 2017
    @chztv
    嗯,主要是想了解 1,2 造成的原因,功能实现有很多种方法
    /div>
    About     Help     Advertise     Blog     API     FAQ     Solana     3182 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 00:23 PVG 08:23 LAX 17:23 JFK 20:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86