• absolute和relative的几个Demo


    这些例子最好通过FireFox结合FireBug调试查看

    1、absolute让元素inline-block化

     1 <!DOCTYPE html>
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5     <title>absolute让元素inline-block化</title>
     6     <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
     7     <link rel="icon" href="favicon.ico" type="image/x-icon" />
     8     <style type="text/css">
     9         body
    10         {
    11             font-family: 'Microsoft YaHei';
    12             font-size: 18px;
    13         }
    14 
    15         .div
    16         {
    17             padding: 10px;
    18             margin-left: 20px;
    19             margin-bottom: 10px;
    20             background-color: #f0f3f9;
    21             border: 8px solid #ffd800;
    22         }
    23 
    24         .abs
    25         {
    26             position: absolute;
    27         }
    28 
    29         .info
    30         {
    31             bottom: 10px;
    32             right: 10px;
    33             border-width: 8px 0 0;
    34             border-radius: 8px 8px 0 0;
    35             border-color: blue;
    36         }
    37 
    38             .info span
    39             {
    40                 width: 200px; /*width无效,必须设置为block才有效!有3种方式>>>>1、display:block;2、float:left;3、position:absolute;*/
    41                 border: 1px solid #4cff00;
    42                 display: block;
    43                 /*float:left;*/
    44                 /*position: absolute;
    45                 left: 0;
    46                 top: 0;*/
    47             }
    48     </style>
    49 
    50 </head>
    51 <body>
    52     <div class="div">
    53         <img src="http://image.zhangxinxu.com/image/study/s/s256/mm1.jpg" />
    54         <p>无absolute</p>
    55     </div>
    56     <div class="div abs">
    57         <img src="http://image.zhangxinxu.com/image/study/s/s256/mm1.jpg" />
    58         <p>absolute后</p>
    59     </div>
    60     <div class="div abs info">
    61         <p>
    62             说明:包裹性换种说法就是让元素inline-block化,<br />
    63             例如一个div标签默认宽度是100%显示的,但是一旦被absolute属性缠上,<br />
    64             则100%默认宽度就会变成自适应内部元素的宽度。
    65         </p>
    66         <h1>absolute 特性总结</h1>
    67         <p>
    68             1、脱离文档流<br />
    69             2、宽和高均为0(FireBug查看布局可知)<br />
    70             3、如果没有[left/right/top/bottom] 则待在原位(表现为一个没有长宽的参考点)<br />
    71             4、如果指定[left/right/top/bottom] 则向上追溯到 relative或absolute父盒子,直至body后定位<br />
    72             5、包裹其内部子元素,即让元素inline-block化<br />
    73         </p>
    74         <span>这是span标签,inline是没有宽度的,block后才有宽度</span>
    75     </div>
    76 
    77 </body>
    78 </html>

    2、absolute绝对定位的破坏性

     1 <!DOCTYPE html>
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5     <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
     6     <link rel="icon" href="favicon.ico" type="image/x-icon" />
     7     <title>absolute绝对定位的破坏性</title>
     8     <style>
     9         body
    10         {
    11             font-family: 'Microsoft YaHei';
    12             font-size: 18px;
    13         }
    14 
    15         .div
    16         {
    17             padding: 10px;
    18             margin: 5px;
    19             border: 8px solid #ffd800;
    20             background-color: #f0f3f9;
    21             float: left;
    22         }
    23 
    24         .abs
    25         {
    26             position: absolute;
    27             /*没有翅膀是飞不走的,待在原位*/
    28             /*
    29               1、取消注释,插上翅膀,则会以body为参考物作left:0 top:0 位移
    30               2、FireBug禁用翅膀,取消位移,回到原位!
    31             */
    32             /*left: 0px;
    33             top: 0px;*/
    34         }
    35 
    36         .info
    37         {
    38             border-width: 8px 0 0;
    39             border-radius: 8px 8px 0 0;
    40             border-color: blue;
    41             top: auto; /*复写abs以清空*/
    42             left: 10px; /*复写abs以重置*/
    43             bottom: 10px;
    44         }
    45     </style>
    46 </head>
    47 <body>
    48     <div class="div">
    49         <img src="http://image.zhangxinxu.com/image/study/s/s256/mm1.jpg" />
    50         <p>图片无absolute</p>
    51     </div>
    52     <div class="div">
    53         <img class="abs" src="http://image.zhangxinxu.com/image/study/s/s256/mm1.jpg" />
    54         <p>
    55             图片absolute后,absolute的参考物,为啥没有追溯到body,而是在本div中?<br />
    56             因为没有指定left/top!没有翅膀是飞不走的!<br />
    57             事实上参考物的确为body,只不过没有飞走!<br />
    58             依然保持原位,貌似还在div中。
    59         </p>
    60     </div>
    61     <div class="div abs info">
    62         <p>说明:图片设置position:absolute属性后,父标签的高宽都塌陷了,连它的兄弟float都救不了。</p>
    63 
    64     </div>
    65 </body>
    66 </html>

    3、父盒子限魔大法

     1 <!DOCTYPE html>
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5     <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
     6     <link rel="icon" href="favicon.ico" type="image/x-icon" />
     7     <title>父盒子限魔大法</title>
     8     <style>
     9         body
    10         {
    11             font-family: 'Microsoft YaHei';
    12             font-size: 18px;
    13         }
    14 
    15 
    16         .box
    17         {
    18             width: 15em;
    19             height: 10em;
    20             background-color: #beceeb;
    21             position: relative; /*父盒子限魔大法,父盒子真身还在文档流,纵云梯z-index飙升*/
    22             /*position: absolute;*/ /*父盒子限魔大法,父盒子真身不在文档流,没有了宽和高,纵云梯z-index飙升*/
    23             left: 100px;
    24             top: 100px;
    25         }
    26 
    27             .box img
    28             {
    29                 position: absolute; /*向上追溯absolute或relative,直至body*/
    30                 left: 20px;
    31                 top: 20px;
    32             }
    33     </style>
    34 </head>
    35 <body>
    36     <div>
    37         <p>说明:限制absolute以body为参考物,约束在拥有ablolute或relative属性的父容器</p>
    38     </div>
    39     <div id="target" class="box">
    40         <img src="http://image.zhangxinxu.com/image/study/s/s128/mm3.jpg" />
    41     </div>
    42 
    43 </body>
    44 </html>

    4、relative最小影响原则(不遵循)

     1 <!DOCTYPE html>
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5     <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
     6     <link rel="icon" href="favicon.ico" type="image/x-icon" />
     7     <title>relative最小影响原则(不遵循)</title>
     8     <style>
     9         body
    10         {
    11             font-family: 'Microsoft YaHei';
    12             font-size: 18px;
    13         }
    14 
    15         .test
    16         {
    17             width: 25em;
    18             margin: 2em auto;
    19         }
    20 
    21         .box
    22         {
    23             padding: 2em;
    24             border: 1px solid #beceeb;
    25             border-radius: 2px;
    26             background-color: #f0f3f9;
    27             position: relative;
    28         }
    29 
    30         .ok
    31         {
    32             color: green;
    33             font-size: 6em;
    34             position: absolute;
    35             right: -11px;
    36             bottom: -.5em;
    37         }
    38 
    39         .infodiv
    40         {
    41             background-color: #f0f3f9;
    42             margin: 5px auto;
    43             width: 800px;
    44         }
    45 
    46         .infoborder
    47         {
    48             /*position: absolute;*/ /*inline-block化,但是没有自然居中,即需要其他辅助居中*/
    49             border-style: solid;
    50             border-width: 8px 0 0;
    51             border-radius: 8px 8px 0 0;
    52             border-color: blue;
    53         }
    54     </style>
    55 </head>
    56 <body>
    57     <div class="test">
    58         <div class="box">
    59             CSS relative相对定位的最小化影响原则
    60         <strong class="ok"></strong>
    61         </div>
    62     </div>
    63 
    64     <div class="infodiv infoborder">
    65         <p>
    66             将需要绝对定位的元素单独放在relative属性的标签下,于是,<br />
    67             relative相对定位就不会影响任何其他元素,仅仅是其内部的绝对定位元素。<br />
    68             于是,上面的文字内容div还是那个普普通通的文字内容div,<br />
    69             以后要改动什么东西就可以放心大胆的改,而不需要担心扔掉那个属性或是布局变了,<br />
    70             里面原来绝对定位的元素位置偏移掉了。<br />
    71             也就是牺牲一个标签增强扩展性和易维护性!
    72         </p>
    73     </div>
    74 
    75 </body>
    76 </html>

    5、relative最小影响原则(遵循)

     1 <!DOCTYPE html>
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5     <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
     6     <link rel="icon" href="favicon.ico" type="image/x-icon" />
     7     <title>relative最小影响原则(遵循)</title>
     8     <style>
     9         body
    10         {
    11             font-family: 'Microsoft YaHei';
    12             font-size: 18px;
    13         }
    14 
    15 
    16 
    17         .test
    18         {
    19             width: 25em;
    20             margin: 2em auto;
    21         }
    22 
    23         .box
    24         {
    25             padding: 2em;
    26             border: 1px solid #beceeb;
    27             border-radius: 2px;
    28             background-color: #f0f3f9;
    29         }
    30 
    31         .rel
    32         {
    33             position: relative;
    34         }
    35 
    36         .ok
    37         {
    38             color: green;
    39             font-size: 6em;
    40             position: absolute;
    41             right: -10px;
    42             top: -1em;
    43         }
    44 
    45         .infodiv
    46         {
    47             background-color: #f0f3f9;
    48             margin: 5px auto;
    49             /* 800px;*/
    50         }
    51 
    52         .infoborder
    53         {
    54             position: absolute; /*inline-block化,但是脱离文档流后无法自然居中,居中的技巧就是transform*/
    55             left: 50%;
    56             -moz-transform: translateX(-50%);
    57             -ms-transform: translateX(-50%);
    58             -o-transform: translateX(-50%);
    59             -webkit-transform: translateX(-50%);
    60             transform: translateX(-50%);
    61             border-style: solid;
    62             border-width: 8px 0 0;
    63             border-radius: 8px 8px 0 0;
    64             border-color: blue;
    65         }
    66     </style>
    67 </head>
    68 <body>
    69     <div class="test">
    70         <div class="box">CSS relative相对定位的最小化影响原则</div>
    71         <div class="rel"><strong class="ok"></strong></div>
    72     </div>
    73     <div class="infodiv infoborder">
    74         <p>
    75             将需要绝对定位的元素单独放在relative属性的标签下,于是,<br />
    76             relative相对定位就不会影响任何其他元素,仅仅是其内部的绝对定位元素。<br />
    77             于是,上面的文字内容div还是那个普普通通的文字内容div,<br />
    78             以后要改动什么东西就可以放心大胆的改,而不需要担心扔掉那个属性或是布局变了,<br />
    79             里面原来绝对定位的元素位置偏移掉了。<br />
    80             也就是牺牲一个标签增强扩展性和易维护性!
    81         </p>
    82     </div>
    83 </body>
    84 </html>

  • 相关阅读:
    linux下Github 同步与下载
    Add 'GB18030' to gedit in Linux
    JGibbLDA的输出文件
    Gibbs LDA java实现
    Polylingual LDA
    Hash_Map 原理
    Map sorted by Value
    使用loadrunnersocket压力测试
    一次压力测试
    linux不知道文件在哪,想查找文件内的字符串
  • 原文地址:https://www.cnblogs.com/gagarinwjj/p/absolute_relative.html
Copyright © 2020-2023  润新知