1. 程式人生 > >CSS之Position詳解

CSS之Position詳解

CSS的很多其他屬性大多容易理解,比如字型,文字,背景等。有些CSS書籍也會對這些簡單的屬性進行大張旗鼓的介紹,而偏偏忽略了對一些難纏的屬性講解,有避重就輕的嫌疑。CSS中主要難以理解的屬性包括盒型結構,以及定位。正如positioniseverything,本文將主要講述關於position的理解,力求讓您看完本文後對position有著最全面的認識。

position的四個屬性值:

·        relative

·        absolute

·        fixed

·        static

下面分別講述這四個屬性。

<div id="parent">
     <div id="sub1">sub1</id>
     <div id="sub2">sub2</id>
</div>


1. relative

relative屬性相對比較簡單,我們要搞清它是相對哪個物件來進行偏移的。答案是它本身的位置。在上面的程式碼中,sub1和sub2是同級關係,如果設定sub1一個relative屬性,比如設定如下CSS程式碼:

#sub1
{
    position: relative;
    padding: 5px;
    top: 5px;
    left: 5px;
}


我們可以這樣理解,如果不設定relative屬性,sub1的位置按照正常的文件流,它應該處於某個位置。但當設定sub1為的position為relative後,將根據top,right,bottom,left的值按照它理應所在

的位置進行偏移,relative的“相對的”意思也正體現於此。

對於此,您只需要記住,sub1如果不設定relative時它應該在哪裡,一旦設定後就按照它理應在的位置進行偏移。

隨後的問題是,sub2的位置又在哪裡呢?答案是它原來在哪裡,現在就在哪裡,它的位置不會因為sub1增加了position的屬性而發生改變。

如果此時把sub2的position也設定為relative,會發生什麼現象?此時依然和sub1一樣,按照它原來應有的位置進行偏移。

注意relative的偏移是基於物件的margin的左上側的。

2. absolute

這個屬性總是有人給出誤導。說當position屬性設為absolute後,總是按照瀏覽器視窗來進行定位的,這其實是錯誤的。實際上,這是fixed屬性的特點。

當sub1的position設定為absolute後,其到底以誰為物件進行偏移呢?這裡分為兩種情況:

(1)當sub1的父物件(或曾祖父,只要是父級物件)parent也設定了position屬性,且position的屬性值為absolute或者relative時,也就是說,不是預設值的情況,此時sub1按照這個parent來進行定位。

注意,物件雖然確定好了,但有些細節需要您的注意,那就是我們到底以parent的哪個定位點來進行定位呢?如果parent設定了margin,border,padding等屬性,那麼這個定位點將忽略padding,將會從padding開始的地方(即只從padding的左上角開始)進行定位,這與我們會想當然的以為會以margin的左上端開始定位的想法是不同的。

接下來的問題是,sub2的位置到哪裡去了呢?由於當position設定為absolute後,會導致sub1溢位正常的文件流,就像它不屬於 parent一樣,它漂浮了起來,在DreamWeaver中把它稱為“層”,其實意思是一樣的。此時sub2將獲得sub1的位置,它的文件流不再基於 sub1,而是直接從parent開始。

(2)如果sub1不存在一個有著position屬性的父物件,那麼那就會以body為定位物件,按照瀏覽器的視窗進行定位,這個比較容易理解。

3. fixed

fixed是特殊的absolute,即fixed總是以body為定位物件的,按照瀏覽器的視窗進行定位。

4. static

position的預設值,一般不設定position屬性時,會按照正常的文件流進行排列。

相關推薦

CSSPosition

CSS的很多其他屬性大多容易理解,比如字型,文字,背景等。有些CSS書籍也會對這些簡單的屬性進行大張旗鼓的介紹,而偏偏忽略了對一些難纏的屬性講解,有避重就輕的嫌疑。CSS中主要難以理解的屬性包括盒型結構,以及定位。正如positioniseverything,本文將主要講述

CSSBFC

在瞭解BFC前,首先需要知道它是什麼,它有哪些特性,它是如何形成的。 一、什麼是BFC BFC(Block Formatting Context)塊級格式化上下文,是Web頁面中盒模型佈局的CSS渲染模式,指一個獨立的渲染區域或者說是一個隔離的獨立容器。 二、B

深入理解盒子模型——CSSBFC

  首先我們看看w3c對BFC是怎麼定義的:   Floats, absolutely positioned elements, block containers (such as inline-blocks, table-cells, and table-c

【JavaScript】div+css定位position

1、div+css中的定位position 最主要的兩個屬性:absolute(絕對定位)、relative(相對定位)    (1)absolute(絕對定位),位置將依據瀏覽器左上角開始計算。

CSS預處理器Less

如果能 order 不同 例如 什麽 諸多 選擇 程序 無需 本文最初發表於博客園,並在GitHub上持續更新前端的系列文章。歡迎在GitHub上關註我,一起入門和進階前端。 以下是正文。 CSS 預處理器 為什麽要有 CSS 預處理器 CSS基本上是設計師的工具,

[TimLinux] CSS float和position

spa 示例 css 相對 文章 有效 AR 關鍵點 非替換元素 1. float 詳解 1.1. 定義 摘自w3school:float 屬性定義元素在哪個方向浮動。以往這個屬性總應用於圖像,使文本圍繞在圖像周圍,不過在 CSS 中,任何元素都可以浮動。浮動元素會生成一個

CSS position

1.首先必須說明的,是瀏覽器渲染DOM的原理。瀏覽器根據html中的順序依次渲染,對文字圖片等進行分塊,一個塊接一個塊渲染。 2.接下來,要說明的是,可以設定塊的大小。 3.然後看一下position, position屬性有四個值,static、rela

CSS定位屬性Position

CSS中最常用的佈局類屬性,一個是Float(CSS浮動屬性Float詳解),另一個就是CSS定位屬性Position。 1. position:static 所有元素的預設定位都是:position:static,這意味著元素沒有被定位,而且在文件中出現在它應該在的位置。 一般來說,不用指定 p

javaweb監聽器

兩個 rec roman 虛擬 銷毀 mar host swap 技術 在servlet中定義了多種類型的監聽器,他們用於監聽事件源分別是servletContext,httpsession,servletrequest 這三個域對象。 servlet中監聽器主要有三類:

IO測試工具fio

沒有 性能 同時 rac 目前 code linux系統 安裝 enc 目前主流的第三方IO測試工具有fio、iometer和Orion,這三種工具各有千秋。 fio在Linux系統下使用比較方便,iometer在window系統下使用比較方便,Orion是oracle的I

多媒體開發庫 SDL

詳解 lang 模擬 llb 創建 mac os 視頻 內置 bsp SDL 簡介 SDL(Simple DirectMedia Layer)是一套開放源代碼的跨平臺多媒體開發庫,使用C語言寫成。SDL提供了數種控制圖像、聲音、輸出入的函數,讓開發者只要用相同或是相似的代碼

HadoopWordCount

ride 開始 zookeepe ati 程序 form 數組 -c 狀態 花了好長時間查找資料理解、學習、總結 這應該是一篇比較全面的MapReduce之WordCount文章了 耐心看下去 1,創建本地文件 在hadoop-2.6.0文件夾下創建一個文件夾data,在其

Vue 進階教程 v-model

com 方式 事件 變化 復習 簡寫 mage fine 需要 分享 Vue 官網教程上關於 v-model 的講解不是十分的詳細,寫這篇文章的目的就是詳細的剖析一下, 並介紹 Vue 2.2 v-model改進的地方,然後穿插的再說點 Vue 的小知識。 在 Vue 中,

CEF3開發者系列CefEnableHighDPISupport

html use enable val 情況 immediate zoom brush 放大 在CEF3中,CefEnableHighDPISupport()這個接口函數在使用時一般不為人所註意,但是如果稍有不慎,會造成打開的網頁不能填滿窗口的問題。如果是需要flash插件

Linux性能監控命令lsof

轉換 device symbol 能夠 基礎 打開 init 可執行文件 ive 1. lsof 命令介紹 lsof(list open files)是一個列出當前系統打開文件的工具。在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問

CSS 列表樣式

.com htm 天龍八部 分享 .cn font -s com str CSS列表用於前端的列表排列。 CSS列表屬性作用如下: 設置不同的列表項標記為有序列表 設置不同的列表項標記為無序列表 設置列表項標記為圖像 列表 在HTML中,有兩種類型的列表: 無序列表

Linux命令CP

linux命令之cp詳解Linux命令之CP詳解嘿嘿,又一周過去了,大家過的怎麽樣呢,在這一周時間裏,小編可是又學到不少新知識呢。今天呢,小編就和大家分享一下Linux中我們常用的CP的命令,這裏的cp可是copy的簡寫噢。(容我嘚瑟一下) 學過linux的都知道,在我們操作的過程中,我們常常會用到cp這個命

aNDROIDMEDIapLaYER

iap music media 詳解 list oid aid 5% layer %E8%BD%AC%E8%BD%BD%E4%B8%80%E4%B8%AA%E5%9B%BE%E7%89%87%E5%A4%84%E7%90%86%E5%B7%A5%E5%85%B7%E7%B1

MyBatisMapper及常用技巧

mybatis mapperselect先看一個簡單的案例:<select id="selectPerson" parameterType="int" resultType="hashmap"> SELECT * FROM PERSON WHERE ID = #{id} </selec

[持續交付實踐] pipeline:pipeline 使用語法

安裝工具 詳細 href 3.0 def 實現 能夠 action roo 一、引言 jenkins pipeline語法的發展如此之快用日新月異來形容也不為過,而目前國內對jenkins pipeline關註的人還非常少,相關的文章更是稀少,唯一看到w3c有篇相關的估計是