zoukankan      html  css  js  c++  java
  • 【CSS】之定位

    1. position:static

    元素的 position 屬性默認值為:static,即該元素出現在文檔的常規位置,不會重新定位。

    通常此屬性值可以不設置,除非是要覆蓋之前的定義。

    #div-1 {
     position:static;
    }

    2. position:relative

    設置了 position:relative,便可以結合top 、 bottom、 left 、 right 的屬性來偏移其文檔的常規位置。

    例如將 div-1 向下移動 20 像素、向左移動 40 像素:

    #div-1 {
     position:relative;
     top:20px;
     left:-40px;
    }
    

    注意 div-1 未被移動之前的地方,現在多了一點空隙,緊接著 div-1 的元素(div-after)卻沒有被移動,事實上即便 div-1 被移動了,它仍佔據原始位置

    貌似 position:relative 用處不大(我到覺得這點很有用),但在後面的內容中顯得尤為重要。

    3. position:absolute

    設置了 position:absolute,即絕對定位,便可以將元素放在文檔中任何想放的位置。

    例如將 div-1a 放置到右上角:

    #div-1a {
     position:absolute;
     top:0;
     right:0;
     200px;
    }
    

    注意!由於 div-1a 被移走, 頁面中的其他元素位置也變了: div-1b, div-1c, div-after 都因此上移了。

    div-1a 被放置在頁面的右上角。 能直接地定位元素很方便,但作用也不大。

    這裡真正要做的是將 div-1a 相對於 div-1 定位,這就又要講到 relative 屬性了。

    • IE瀏覽器Bug:設置了相對寬度(如 "50%"),該寬度將基於父元素而非自身。

    4. position:relative + position:absolute

    設置div-1的位置為 relative , div-1中元素的定位都將相對於div-1。現將div-1a的position設為:absolute,可以實現將其置於div-1的右上角:

    #div-1 {
     position:relative;
    }
    #div-1a {
     position:absolute;
     top:0;
     right:0;
     200px;
    }

    5. 兩列絕對定位

    接下來使用relative 和absolute 實現兩列的絕對定位:

    #div-1 {
     position:relative;
    }
    #div-1a {
     position:absolute;
     top:0;
     right:0;
     200px;
    }
    #div-1b {
     position:absolute;
     top:0;
     left:0;
     200px;
    }
    

    使用絕對定位(absolute positioning)的優點就是不需考慮元素在html中的位置,可以對元素任意放置,此處故意將div-1b放到div-1a之前;

    注意,還有個元素被絕對定位的元素遮住了,怎麼辦?

    6. two column absolute height

    一種辦法是設置固定高度。

    但不是萬全之策,因為元素的高度、字體的大小並不總是確定的。

    #div-1 {
     position:relative;
     height:250px;
    }
    #div-1a {
     position:absolute;
     top:0;
     right:0;
     200px;
    }
    #div-1b {
     position:absolute;
     top:0;
     left:0;
     200px;
    }

    7. float(浮動)

    針對高度不定的情況,絕對定位不好用,於是想到另一方案。

    可以盡量使用向左或向右浮動來實現文字環繞,特別是環繞圖片,此處用於更複雜的佈局工作(也只有用這種方法)。

    #div-1a {
     float:left;
     200px;
    }

    8. 多列浮動

    將兩列都像左浮動,可以實現兩列並列。

    #div-1a {
     float:left;
     150px;
    }
    #div-1b {
     float:left;
     150px;
    }

    9. 多列浮動後清除浮動

    將元素浮動後,再使用"clear" 清除浮動,後面內容拉向下。

    #div-1a {
     float:left;
     190px;
    }
    #div-1b {
     float:left;
     190px;
    }
    #div-1c {
     clear:both;
    }

    10. Disclaimer & Resources

    These examples are extremely simplified and do not trigger some of the CSS bugs in the Windows IE browser (of which there are many).

  • 相关阅读:
    【F#】 WebSharper框架
    【F#】 入门代码
    【F#】核心数据多线程处理的首选
    【Jetlang】一个高性能的Java线程库
    【项目管理】 并发服务设计的三种架构
    【Go】为什么用go; Golang Erlang 前世今生
    【Go】 http webserver
    Arcane Numbers 1
    给定4根长度的线段,求组成四边形的最大面积
    #410div2D. Mike and distribution
  • 原文地址:https://www.cnblogs.com/maomaoroc/p/3531330.html
Copyright © 2011-2022 走看看