• (7)关于margin的一些想法2.0


    这篇主要讨论的就是margin负值与float的关系。

    • 首先,例子。
      <!doctype html>
      <html>
      <head>
      <meta charset="utf-8">
      <title>无标题文档</title>
      <style type='text/css'>
      html,body{
          padding:0;
          margin:0;}
      div{width:100px;
          height:100px;
          float:left;
          margin:0;
          
      }
      div.box{
              width:300px;
              float:left;
              margin-left:60%;
              background:blue;
              }
      .a{background:red;
      margin-left:0px;}
      
      .b{background:green;
      margin-left:0;}
      
      .c{background:black;
      margin-left:0px;}
      </style>
      </head>
      
      <body>
      <div class="box">
      <div class="a"></div>
      <div class="b"></div>
      <div class="c"></div></div>
      
      </body>
      </html>

      在这里面,三个被包含的div元素的margin-left都为零,此时,视图可见:

        

        三个div整齐的排列在一起。好,我们修改下a的margin-left看看结果会如何。

          

    .a{background:red;
    margin-left:-100px;}

           看图,

        很明显,a因为margin-left为负边距,移动到了父容器的外面。而b,c则各向左移动了100px.

        我们在修改下a的margin-left大小。

    .a{background:red;
    margin-left:-110px;}

        结果如图,

            b元素因为触碰到了父元素的左边界所以被固定在内部,注意,并没有继续向左移动。而,a却又向左移动了10px.

            接下来,我们把a的margin-left改回成-100px,再修改其他的。

    .b{background:green;
    margin-left:50px;}

    结果,

            

    可以看出,b本来是紧贴着父元素的左边界,现在,是离左边界50px了。(在这里,我们就应该可观察出,a的右边界移动出了父元素的左边界之后,a与b,c已经不再一个浮动文档流上了。b,c仍在一起。而b的参考线也不是a了,直接就是父元素。)

        我们再来看另外一个例子:

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>无标题文档</title>
        <style type="text/css">
            div{
                width:50px;
                height:50px;
                float:left;
                }
                
                .box{float:none;
                    background:blue;
                    width:300px;
                    height:100px;
                    margin-left:300px;
                    }
                .a{background:red;
                margin-left:0px;
                    }
                .b{background:black;
                    margin-left:-150px;
                }
                .c{background:pink;
                margin-left:50px;
                }
                .d{background:yellow;
                }
        </style>
    </head>
    
    
    <body>    <div class="box">
            <div class="a"></div>
            <div class="b"></div>
            <div class="c"></div>
            <div class="d"></div>
    </div>
    </body>
    </html>

    结果如图:

        可以看见,排第三的c在b出去之后,c的参考线是以a为基准的。

    也就是,我们可以得出一个结论来解决双飞翼布局中的left元素为-100%的疑惑。

    即: 同一方向浮动的元素本是按顺序排列在视图中的,若因为margin导致位置发生变化,那么浮动元素的margin(注意:margin方向必须与float方向相同,否则无效。)移动参考线是以离自己最近的元素(不管该元素是否浮动。)(也可以是父元素的边界)。

  • 相关阅读:
    tera term通过ttl脚本 自动连接服务器
    shell脚本生成xml文件
    MarkDown语法练习笔记
    linux nkf 日文编码转换命令[转载]
    Shell脚本传递带有空格的参数[摘录自网络]
    JavaScript思维导图—函数基础
    JavaScript思维导图—运算符
    JavaScript思维导图—数组
    JavaScript思维导图—流程控制
    JavaScript思维导图—正则表达式
  • 原文地址:https://www.cnblogs.com/koutuzai/p/6726610.html
Copyright © 2020-2023  润新知