zoukankan      html  css  js  c++  java
  • css的relative与absolute(一)

    relative与absolute是position的两个值,本文对这两个值得关系进行了一个小实验

    实验一:

    首先定义了两个div元素,代码如下所示:

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style type="text/css">
          #div1{
            width: 300px;
            height: 300px;
            background-color: yellow;
          }
    
          #div2{
            width: 50px;
            height: 50px;
            background-color: red;
          }
      </style>
    </head>
    <body>
      <div id="div1">
        <div id="div2"></div>
      </div>
    </body>
    </html>

    效果如下所示:

    现在我想实现把红色的小方块移动到右边,常规的想法就是将div1设置为position:relative,将div2的值设置为position:absolute,然后通过设置div2的top与left可以进行定位。代码如下:

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style type="text/css">
          #div1{
            position: relative; 
            width: 300px;
            height: 300px;
            background-color: yellow;
          }
    
          #div2{
            position: absolute;
             top: 50px;
            left: 200px; 
            width: 50px;
            height: 50px;
            background-color: red;
          }
      </style>
    </head>
    <body>
      <div id="div1">
        <div id="div2"></div>
      </div>
    </body>
    </html>

    如果div1不设置position:relative,会出现怎样的效果呢?代码如下:

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style type="text/css">
          #div1{
            /* position: relative; */ 
            width: 300px;
            height: 300px;
            background-color: yellow;
          }
    
          #div2{
            position: absolute;
             top: 50px;
            left: 200px; 
            width: 50px;
            height: 50px;
            background-color: red;
          }
      </style>
    </head>
    <body>
      <div id="div1">
        <div id="div2"></div>
      </div>
    </body>
    </html>

    效果如下图所示:

    效果基本没有变化,严格上讲,实际上是有一定的偏移的,这点可以通过margin进行调整,所以一般不建议过多的使用relative。

    那设置div1的position为relative是不是就没有任何用处了呢?其实也不是这样的。

    实验二:首先设置div1的position:relative,div2的position:absolute,并设置top与left(之所以设置top与left,是因为top与buttom同时出现的时候,top其决定作用,同理是left),代码如下:

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style type="text/css">
          #div1{
            position: relative; 
            width: 300px;
            height: 300px;
            background-color: yellow;
          }
    
          #div2{
            position: absolute;
            top: 250px;
            left: 200px; 
            width: 400px;
            height: 400px;
            background-color: red;
          }
      </style>
    </head>
    <body>
      <div id="div1">
        <div id="div2"></div>
      </div>
    </body>
    </html>

    效果如下图所示:

    在这种情况下,正如实验一所示,div1的position几乎不起作用,div2是个自由的小天使,想到哪里就到哪里。但是如果给div1设置top与left之后呢?

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style type="text/css">
          #div1{
            position: relative; 
            width: 300px;
            height: 300px;
            background-color: yellow;
            top:50px;
            left: 50px; 
          }
    
          #div2{
            position: absolute;
            top: 250px;
            left: 200px; 
            width: 400px;
            height: 400px;
            background-color: red;
          }
      </style>
    </head>
    <body>
      <div id="div1">
        <div id="div2"></div>
      </div>
    </body>
    </html>

    效果如下图所示:

    可以发现div2的位置就被div1限制住了,从此div2再也不是自由的小天使了,div2的偏移都是以div1位基准的了。

    实验三:div1是包含div2的,可是如果div2定义了position:absolute,那个div2多余的部分就会在div1外部显示出来,即使div1设置了overflow: hidden也不会其作用,但是如果给div1加上position: relative;会怎样呢?代码如下:

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style type="text/css">
          #div1{
    
            width: 300px;
            height: 300px;
            background-color: yellow;
            overflow: hidden;
          }
    
          #div2{
            position: absolute;
            top: 20px;
            left: 20px; 
            width: 400px;
            height: 400px;
            background-color: red;
          }
      </style>
    </head>
    <body>
      <div id="div1">
        <div id="div2"></div>
      </div>
    </body>
    </html>

    给div1加上position:relative,会出现什么样的效果呢?

    代码如下:

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <style type="text/css">
          #div1{
            position: relative; 
            width: 300px;
            height: 300px;
            background-color: yellow;
            overflow: hidden;
          }
    
          #div2{
            position: absolute;
            top: 20px;
            left: 20px; 
            width: 400px;
            height: 400px;
            background-color: red;
          }
      </style>
    </head>
    <body>
      <div id="div1">
        <div id="div2"></div>
      </div>
    </body>
    </html>

    这时div1元素会很好的限制div2的溢出部分。

  • 相关阅读:
    SmartBear正式发布LoadComplete
    CGI, mod_perl, PHP, JSP性能比较
    LoadRunner测试Socket
    性能测试基本功 什么是软件性能
    性能测试基本功 Centos5.5下安装LAMP
    如何聘用优秀的性能测试工程师?
    Spotlight For Oracle使用说明
    SmartBear推出新产品LoadComplete
    LNMP安装
    测试网站性能的在线服务(性能测试云)
  • 原文地址:https://www.cnblogs.com/yangxiaoguai132/p/5498294.html
Copyright © 2011-2022 走看看