zoukankan      html  css  js  c++  java
  • float和position

    好久没有更新了,今天继续来看看css中的难点:浮动和定位,一直没有怎么弄懂;

      一、

      <style type="text/css">
            body{
                margin: 0;
            }
           div{
                height: 100px;
                 100px;
            }
            .rel{
                background-color: chocolate;
                display: inline-block;
            }
            .abs{
                background-color: aqua;
                display: inline-block;
            }
        </style>
    </head>
    <body>
        <div class="rel"></div>
        <div class="abs"></div>
    </body>

      

    问题1:为什么会有中间8px的间距呢,当设置margin-left或margin-right:-8px时,间距会消失;

    二、相对定位:

       <style type="text/css">
            body{
                margin: 0;
            }
           div{
                height: 100px;
                 100px;
            }
            .rel{
                background-color: chocolate;
                display: inline-block;
                position: relative;
                left:50px;
                top:50px;
            }
            .abs{
                background-color: aqua;
                display: inline-block;
            }
    
        </style>
    </head>
    <body>
        <div class="rel"></div>
        <div class="abs"></div>
    </body>

    二、使用相对定位,没有脱离文档流,

    三、将其换为绝对定位则变为了不一样的样式:

    <style type="text/css">
            body{
                margin: 0;
            }
           div{
                height: 100px;
                 100px;
            }
            .rel{
                background-color: chocolate;
                display: inline-block;
                position: absolute;   从相对定位换为绝对定位之后,样式变化了;
                left:50px;
                top:50px;
            }
            .abs{
                background-color: aqua;
                display: inline-block;
            }
    
        </style>
    </head>
    <body>
        <div class="rel"></div>
        <div class="abs"></div>
    </body>

    从上面可知盒子一脱离了文档流;

    四:将盒子一包裹在另外一个大盒子里面:

        <style type="text/css">
            body{
                margin: 0;
            }
           div{
                height: 100px;
                 100px;
            }
            .rel{
                background-color: chocolate;
                display: inline-block;
                position: absolute;
                left:50px;
                top:50px;
            }
            .abs{
                background-color: aqua;
                display: inline-block;
            }
            .outer{
                height: 300px;
                 300px;
                background-color: antiquewhite;
            }
        </style>
    </head>
    <body>
        <div class="outer">
            <div class="rel"></div>
        </div>
        <div class="abs"></div>
    </body>

    我们从上面可以知道盒子2被挤下来了,因为外面的大盒子是一个块级元素;

      那么有什么办法可以让盒子2再上去呢?

    1、加一个float:left;

    2、display:inline-block;

    从上面我们知道这两种设置方式有明显的区别:

    五、我们再来看一个另外的区别:

    接下来我们再来看:盒子1是脱离文档流的,我们加高它的值,如下图所示:

      

    接下来我们再来看,更改代码如下所示:

        <style type="text/css">
            body{
                margin: 0;
            }
           div{
                height: 100px;
                 100px;
            }
            .rel{
                background-color: chocolate;
                display: inline-block;
                position: absolute;
                left:50px;
                top:50px;
            }
            .abs{
                background-color: aqua;
                display: inline-block;
            }
            .outer{
                height: 300px;
                 300px;
                background-color: antiquewhite;
                display: inline-block;
                position: relative;
            }
        </style>
    </head>
    <body>
        <br /><br /><br /><br /><br /><br /><br /><br /><br />
        <div class="outer">
            <div class="rel"></div>
        </div>
        <div class="abs"></div>
    </body>

      接下来我们再来看:

    从上我们可以知道盒子1是相对于外面的大盒子进行飘移的,因为外面的盒子设置了position:relative;

    接下来我们再来看:

    当把盒子1的绝对定位去掉的时候,盒子2向上移动了,这又是因为什么呢,那我们接下来再来看:

      我们再加一个盒子3,黑色盒子并且设置背景颜色为黑色,并将其设置为内联元素:

    从这里我们看到一旦有其中一个盒子被设置为position:absolute;则其他的内联元素则会向下对其:

    那要怎么样才不影响其他的内联元素呢,我们接下来看:

    接下来再看:

    对盒子2设置float:left属性;那么我们可以看到盒子2移动了位置:

    现在盒子都是挨着的,那是因为我们对外面大盒子,和盒子2以及黑盒子都设置了float:left;

    接下来我们还可以继续看,当去掉大盒子的float:left;则会变成如下所示:

    接下来我们来设置大盒子的margin值:看看有什么变化:

  • 相关阅读:
    ROSS仿真系统简单教程
    python小练习1.1
    c语言文件I/O 文件读取和写入
    Python 学习笔记 多线程-threading
    parsec(The parsec benchmark suit )使用教程
    Checkpoint/Restore In Userspace(CRIU)使用细节
    Checkpoint/Restore in Userspace(CRIU)安装和使用
    考研总结
    北理计算机复试经验
    PAT(A) 1075. PAT Judge (25)
  • 原文地址:https://www.cnblogs.com/zzjeny/p/5658191.html
Copyright © 2011-2022 走看看