• css 布局之定位


          往往在网页布局中会出现覆盖,这时我们需要使用定位技术了。什麽是定位,通俗来说就是你想让元素在哪个位置。

     CSS定位的基本思想很简单,它允许定义元素框相对于其正常位置应该出现的位置,或者相对于父元素、另一个元素

     甚至浏览器窗口本身的位置。

    相对定位(position:relative)-元素依然是占位的

          使用相对定位的盒子的位置常以标准流的排版方式为基础,然后使盒子相对于它在原本的标准位置偏移指定的距离。

    相对定位的盒子仍在标准流中,它后面的盒子仍以标准流方式对待它。使用relative,即相对定位,除了将position属性

    设置为relative之外,还需要指定一定的偏移量,水平方向通过left或者right属性来指定,竖直方向通过top和bottom来指定。

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Language" content="zh-cn" />
    <title>position属性</title>
    <style type="text/css">
    body{
        margin:20px;
        font-family:Arial;
        font-size:12px;
    }
    #father{
        background-color:#a0c8ff;
        border:1px dashed #000000;
        padding:15px;
    }
    #father div{
        background-color:#fff0ac;
        border:1px dashed #000000;
        padding:10px;
    }
    #block1 {
        position: relative;
        bottom: 30px;
        right: 30px;
    }
    #block2{
    }
    </style>
    </head>
    <body>
        <div id="father">
            <div id="block1">Box-1</div>
            <div id="block2">Box-2</div>
        </div>
    </body>
    </html>
    

      现在我们可以得到这样的结论,使用相对定位的盒子,会相对于它原本的位置,通过偏移指定的距离,到达新的位置。

    而该相对定位的盒子则仍然位于标准流中,它对父块没有任何影响,对兄弟盒子也没有任何影响。 

         注意:上面是针对标准流方式进行的,实际上,对浮动的盒子使用相对定位也是一样的,都会相对于原有的位置进行指定

    的偏移并到达新的位置,而这一偏移并不会对其后面的兄弟元素带来任何的影响。

    绝对定位(position:absolute)-元素不占位,盒子宽度变为自适应

        使用绝对定位的盒子以它的“最近”的一个“已经定位”的“祖先元素”为基准进行偏移。如果没有已经定位的祖先元素,

    那么会以浏览器窗口为基准进行定位。再有,绝对定位的框从标准流中脱离,这意味着它们对其后的兄弟盒子的定位没有任何影响,

    其他的盒子就好像这个盒子不存在一样。如果设置了绝对定位,而没有设置偏移属性,那么它仍然保持原有的位置。

    #block2 {
        position: absolute;
        top: 30px;
        right: 30px;
    }
    

    上面block2没有已经定位的祖先元素,是以浏览器窗口为基准进行定位。

    #father {
        background-color: #a0c8ff;
        border: 1px dashed #000000;
        padding: 15px;
        position: relative;
    }
    

     给父级增加一个定位样式,block2就会以父级为参照进行偏移。

    <html>
    <head>
    <style type="text/css">
    body{
        margin:0;
    }
    #outerBox {
         200px;
        height: 100px;
        margin: 10px auto;
        background: silver;
    }
    #innerBox {
        position: absolute;
        top: 70px;
         100px;
        height: 50px;
        background: orange;
    }
    </style>
    </head>
    <body>
        <div id="outerBox">
            <div id="innerBox"></div>
        </div>
    </body>
    </html>
    

      外面的盒子没有设置position属性,内部的盒子设置了绝对定位,但是只在垂直方向指定了偏移量,没有指定水平方向的偏移量,

    此时内部的盒子则因为设置了绝对定位属性,而外层div没有position属性,所以的它的定位基准是浏览器窗口。但是又由于在水平方向

    上没有设置偏移属性,因此在水平方向它仍然会保持原来应该在的位置,它的左侧与外层盒子的左侧对齐。因为在垂直方向上设置了

    “top:70px”,所以距离浏览器窗口顶部为70像素。

    固定定位(position:fixed)-元素不占位的,宽度变为自适应

         为元素指定相对于窗口的确切位置 。即使文档的其它元素出现滚动,元素位置仍然不变。它与绝对定位有些类似,区别主要在于

    定位的基准不是祖先,而是浏览器窗口或其它显示设备窗口。也就是当访问者拖动浏览器的窗口滚动条时,固定定位的元素相对于浏

    览器窗口的位置保持不变。

    z-index空间位置(设置定位元素的层叠关系,只对定元素生效位) 

           z-index属性用于调整定位时重叠块的上下位置,与它的名称一样,想象页面为x-y轴,垂直于页面的方向为z轴,z-index值大

    的页面位于其小的上方。z-index属性的值为整数,可以是正数也可以是负数。当块被设置了position属性时,该值便可以设置各块之

    间的重叠高低关系。默认的z-index值为0,当两个块的z-index值一样时,将保持原有的高低覆盖关系,z-index可以为负值。

  • 相关阅读:
    Java中会存在内存泄漏吗,请简单描述。
    什么是类加载器
    通俗易懂 索引、单列索引、复合索引、主键、唯一索引、聚簇索引、非聚簇索引、唯一聚簇索引 的区别与联系
    Redis真的那么好用吗
    java中public,private,protected和default的区别
    聚集和非聚集索引
    我以为我对Mysql索引很了解,直到我遇到了阿里的面试官(转)
    Java中存储金额用什么数据类型
    InnoDB在MySQL默认隔离级别下解决幻读
    android应用程序第一次启动时显示引导界面
  • 原文地址:https://www.cnblogs.com/yufeiyu/p/6580489.html
Copyright © 2020-2023  润新知