zoukankan      html  css  js  c++  java
  • 浮动与clear属性

     其实浮动我是这么理解的,让某个元素,脱离原来的标准流,浮动在标准流之上,它拥有自己的浮动流,和标准流不是一个层次上的。

    首先呢, fnncat 来给建立四个有颜色的色块,为了方便理解他们浮动的具体位置。

    一,画四个色块,没有浮动。

     这是最开始的样子,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流。

     

    <style>
        div{
            height: 40px;
        }
        #div1{
            100px;
        }
        #div2{
        
            200px;
        }
        #div3{
            300px;
        }
        #div4{
            400px;
        }
    </style>

    二,使其中一个色块浮动,观察其变化

     fnncat 把第二个块浮动属性设置为 left 可以看的出第三个块被第二个块给遮住了。

     

    <style>
        div{
            height: 40px;
        }
        #div1{
            100px;
        }
        #div2{
            float: left;
            200px;
        }
        #div3{
            300px;
        }
        #div4{
            400px;
        }
    </style>

     fnncat 把第二个块浮动属性设置为 right 可以看的出第二块往右便去了。

    <style>
        div{
            height: 40px;
        }
        #div1{
            100px;
        }
        #div2{
            float:right;
            200px;
        }
        #div3{
            300px;
        }
        #div4{
            400px;
        }
    </style>

    三,为了更加清楚的看清出浮动属性的影响,我们将两个色块加入向右的浮动,并改变浏览器窗口大小,方便看出浮动流与本身文档流的具体排布。

    当窗口为1337px

    当窗口为899px 可以看的出第三个还是紧跟着第二个排列在最右边

     

    继续把窗口拉小,当前窗口为627px,就看见第四个色块被遮住了。

     fnncat 再拉小窗口,窗口宽度为515px,当第二个色块与第三个色块的宽度(这里还有body的左右外边距和16px)大于窗口宽度时,

    第三个色块,被挤了下来,放在了第二个色块之下

    <style>
        div{
            height: 40px;
        }
        #div1{
            100px;
        }
        #div2{
            float: right;
            200px;
        }
        #div3{

            float: right;
            300px;
        }
        #div4{
            400px;
        }

    </style>

    如果改变第二个和第四个色块的浮动属性,变为向左浮动,怎会变成下面的样子。

     

    <style>
        div{
            height: 40px;
        }
        #div1{
            100px;
        }
        #div2{
            float: right;
            200px;
        }
        #div3{

            300px;
        }
        #div4{

            float: right;
            400px;
        }

    </style>

      

    ~~~是不是,可以通过以上实验,可以看的出哪里是标准流,哪里是浮动的。

     

    额,

    假如某个div元素A是浮动的,如果A元素上一个元素也是浮动的,那么A元素会跟随在上一个元素的后边(如果一行放不下这两个元素,那么A元素会被挤到下一行);如果A元素上一个元素是标准流中的元素,那么A的相对垂直位置不会改变,也就是说A的顶部总是和上一个元素的底部对齐。

    div的顺序是HTML代码中div的顺序决定的。

     靠近页面边缘的一端是,远离页面边缘的一端是

     

    这段是别人总结的拿过总结一下,哈。

    四,接下来是清除浮动(打破横向排列)

    语法:

           clear : none | left | right | both

           取值:

           none  :  默认值。允许两边都可以有浮动对象

           left   :  不允许左边有浮动对象

           right  :  不允许右边有浮动对象

           both  :  不允许有浮动对象

    ~~clear清除浮动,只能影响清除元素本身,不能影响其他元素。

    浏览器支持情况:基本上所有的主流浏览器都支持clear属性。

     为了描述的清楚点儿, fnncat 根据上面的浮动属性,让这四个色块右浮动。

    效果如下

    那么我们怎么可以做到浮动清除呢,让第一个和第二个在第一行,而第三个与第四个色块则在他们下面。

    这样,我们便用上了clear属性,一定要记住,添加clear属性时,这个规则只能影响使用清除元素的本身,不能影响其他元素。

    这么说,就是我们想让第三个和第四个色块下来,那么我们不能设置第二个色块的clear属性,要设置第三个色块的clear属性,将其

    设置为 right,这样第三个色块的右侧浮动被清除,自然第三个色块的右侧便没有了浮动元素,因此,第三个色块变被迫到了下一行中

    图示如下

     

  • 相关阅读:
    题目---结构体指针链表及迷宫问题
    题目---汉诺塔及AI代码及八皇后
    感想---如何去面试一个人?如何有效学习及提问的智慧。
    题目---统计学生成绩及一帮一及考试座位号
    题目---处理字符四题及预习题
    题目---改大写及自动售货机及删除指定元素
    第七周作业
    第六周作业
    第五周作业
    第四周作业
  • 原文地址:https://www.cnblogs.com/fnncat/p/4851308.html
Copyright © 2011-2022 走看看