哪位 css 大神帮我解释一下下面三个 demo。。。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
crazyxhz
V2EX    a href="/go/css">CSS

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

  •  1
     
  •   crazyxhz 2017-02-15 15:19:40 +08:00 3283 次点击
    这是一个创建于 3237 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 外包 div 设置了 relative 但是没有设置 top , left 等位置,这种设法是不是就等同于 position:static; 为啥没有在新的块上?

    demo1

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

    demo2

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

    demo3

    第 1 条附言    2017-02-15 17:36:48 +08:00

    感谢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 条回复    2017-02-15 17:22:53 +08:00
    vizards
        1
    vizards  
       2017-02-15 15:35:33 +08:00
    在一个相对定位( position 属性的值为 relative )的元素上设置 top 、 right 、 bottom 和 left 属性会使其偏离其正常位置。其他的元素的位置则不会受该元素的影响发生位置改变来弥补它偏离后剩下的空隙。

    http://zh.learnlayout.com/position.html
    crazyxhz
        3
    crazyxhz  
    OP
       2017-02-15 15:45:06 +08:00
    @vizards 这个我知道啊。。。
    vizards
        4
    vizards  
       2017-02-15 15:58:10 +08:00
    r#3 @crazyxhz 之前没看清,,不好意思,你给 wapper 设置一个 overflow:hidden 应该就是你想要的效果了
    div id="r_4044878" class="cell">
    vizards
        5
    vizards  
       2017-02-15 15:58:35 +08:00
    r#4 @vizards wapper => wrapper
    vizards
        6
    vizards  
       2017-02-15 16:02:57 +08:00
    CSS2.1 的盒模型中规定
    vizards
        7
    vizards  
       2017-02-15 16:05:31 +08:00   1
    所有毗邻的两个或更多盒元素的 margin 将会合并为一个 margin 共享之。毗邻的定义为:同级或者嵌套的盒元素,并且它们之间没有非空内容、 Padding 或 Border 分隔。这就是外边距共享问题。所以只要破坏掉毗邻的要求就可以了。
    freeminder
        8
    freeminder  
       2017-02-15 16:11:35 +08:00   1
    第一个 demo 是粉色方框的负 marigin 折叠了
    freeminder
        9
    freeminder  
       2017-02-15 16:13:10 +08:00   1
    第二个 demo 也是 margin 折叠,按照你的写法红框和蓝框直接始终重合粉框的负 margin
    chztv
        10
    chztv  
       2017-02-15 16:28:43 +08:00
    给 content 加上 position: absolute 不就行了,你就想要粉色那个 box 居中的效果吧?
    chztv
        11
    chztv  
       2017-02-15 16:34:37 +08:00
    @crazyxhz absolute 和 relative 一定要明白其含义,你的 content 到底想要相对还是绝对定位?相对的话不要用 margin 来定位,可以在 wrapper 里用 padding 更方便一些;绝对的话,可以用 top left right bottom 设置来定位。
    crazyxhz
        12
    crazyxhz  
    OP
       2017-02-15 17:22:53 +08:00
    @chztv
    嗯,主要是想了解 1,2 造成的原因,功能实现有很多种方法
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1286 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 17:05 PVG 01:05 LAX 09:05 JFK 12:05
    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