zoukankan      html  css  js  c++  java
  • HTML之布局position理解

    HTML中的布局,一个比较难以理解的概念,就是position了,W3C上的解释,position有如下几种:

    1. static,默认值,也就是在样式中不指定position

    2. fixed

    3. absolute

    4. relative

    其中,static,fixed的相对好理解点,比较难一点的是absolute及relative。 我个人的理解,这里的position,都是要找一个参照层再来说位置的布局。没有参照层,布局其实就没有什么意义,至少生产环境下是这样子的,因为你放置一个HTML元素的时候,一定在设计的时候是有一个期望的,那就是你希望这个元素放在父层中的什么位置。也就是说你不会瞎放,若是想瞎放,那就不在这个话题范围内了!

    其实,这个要是有切身的体会,还是不那么难理解的,若没有实际操作过,估计是比较难以搞明白。尤其absolute和relative。 还有,这position中,static下,top,left,bottom, right等属性将无效。 relative和absolute,通常要和top/left/bottom/right一起使用,他们也往往与margin一起实现布局中的位置调整。

    理解上的东西,最好来个例子,会有助于接受概念上的东西。 下面的例子,是用来做web页面模块拖拽设计的一部分。需要的可以参考。

      1 <style type="text/css">
      2 #sub1,#sub2,#sub3{
      3     position : relative;
      4     height: 50px;
      5     margin: 10px;
      6 
      7 }
      8 #sub1p{
      9     border: 1px solid blue;    
     10     margin: 20px;
     11     position:;
     12     top: 50px;
     13     left: 50px;    
     14     right: 50px;    
     15 }
     16 
     17 #parentLeft{
     18     border: 1px solid gray;
     19     width: 34%;        
     20     position: relative;
     21     float: left;    
     22     height:100%
     23 }
     24 #parentRight{
     25     border: 1px solid gray;
     26     width: 64%;        
     27     position: relative;
     28     float: right;    
     29     height: 100%;
     30     z-index: 1;
     31 }
     32 .ptop{
     33     position: absolute;
     34     width: 100%;
     35     top: 0px;
     36     height: 2px;
     37     border: 1px solid green;
     38     cursor: n-resize;
     39     z-index: 1;
     40 }
     41 .pleft{
     42     position: absolute;
     43     width: 2px;
     44     top: 0px;
     45     left: 0px;
     46     height: 100%;
     47     border: 1px solid green;
     48     cursor: e-resize;
     49     z-index: 1;
     50 }
     51 .pright{
     52     position: absolute;
     53     width: 2px;
     54     top: 0px;
     55     right: -2px;
     56     height: 100%;
     57     border: 1px solid green;
     58     cursor: e-resize;
     59     z-index: 1;
     60 }
     61 .pbottom{
     62     position: absolute;
     63     width: 100%;
     64     left: 0px;
     65     bottom: -2px;
     66     height: 2px;
     67     border: 1px solid green;
     68     cursor: n-resize;
     69     z-index: 1;
     70 }
     71 .pboth{
     72     position: absolute;
     73     width: 10px;
     74     right: -0px;
     75     bottom: -0px;
     76     height: 10px;
     77     border: 2px solid pink;
     78     cursor: nw-resize; 
     79     z-index: 2;
     80 }
     81 </style>
     82 <div id="parentLeft">
     83     <div id="sub1p">sub1p
     84         <div id="sub1" style="border: 1px solid red;">
     85             <div class="ptop"></div>
     86             <div class="pleft"></div>
     87             <div class="pright"></div>
     88             <div class="pbottom"></div>
     89             <div class="pboth"></div>
     90             sub1
     91         </div>    
     92         <div id="sub2" style="border: 1px solid red;">
     93             <div class="ptop"></div>
     94             <div class="pleft"></div>
     95             <div class="pright"></div>
     96             <div class="pbottom"></div>
     97             <div class="pboth"></div>
     98             sub2
     99         </div>
    100         <div id="sub3" style="border: 1px solid red;">
    101             <div class="ptop"></div>
    102             <div class="pleft"></div>
    103             <div class="pright"></div>
    104             <div class="pbottom"></div>
    105             <div class="pboth"></div>
    106             sub3
    107         </div>
    108     </div>    
    109 </div>
    110 <div id="parentRight">
    111     
    112 </div>
    113 <script src="js/jquery-3.1.0.js"></script>
    114 <script type="text/javascript">
    115     $(document).ready(function(){
    116         var divs = $("div");
    117         $.each(divs, function(i, div){
    118             $(this).click(function(){
    119                 alert(this.id + ", " + $(this).css("position"));
    120             });
    121         });
    122     });
    123 </script>

    这里,读者自己细心体会吧,例子中除了fixed没有用到,其他几个都有。fixed相对简单,使用的场景相对也简单,比如页面导航,或者页脚等。 例子中的position,感兴趣的话,可以修改一下试试,找点感觉,这样会对理解有帮助。

  • 相关阅读:
    设计模式学习总结
    算法时间复杂度和空间复杂度表示
    SQLite简单使用
    接口,组合和继承的想法
    二叉树的学习
    Oracle 常用命令大汇总
    Oracle 最常用功能函数经典汇总
    oracle 常用command
    历史最牛演讲:Oracle总裁Yale演讲全文中英文对照
    深入abstract class和interface
  • 原文地址:https://www.cnblogs.com/shihuc/p/5701334.html
Copyright © 2011-2022 走看看