搜尋
首頁web前端css教學有關CSS浮動和定位定義和用法介紹


一、浮動

1.浮動元素

1.對於浮動元素,有幾點需要記住:
首先,會以某種方式將浮動元素從文檔的正常流中刪除,不過他還是會影響佈局;
2. 採取css的特有方式,浮動元素幾乎“集自成一派”,不過他們還是對文檔的其餘部分有影響;
3. 當一個元素浮動時,其他元素會「環繞」該元素。浮動元素周圍的外邊距不會合併。
4.不浮動:float:none用來防止元素浮動。

2.浮動的詳細內幕

      在詳細了解浮動的內容之前,首先我們要知道什麼是包含區塊。
浮動元素的包含區塊時是其最近的區塊級祖先元素。
css提供了一系列的規則來控制浮動元素的擺放:

  • 浮動元素的左(或右)外邊界不能超出其包含區塊的左(或右)內邊界;

  • 浮動元素的左(或右)外邊界必須是來源文件中先前出現的左浮動(或右浮動)元素的右(或左)外邊界,除非後出現浮動元素的頂端在先出現浮動元素的底端下方。

  • 左浮動元素的右外邊界不會在其右邊右浮動元素的做外邊界的右邊。

  • 一個浮動元素的頂端不能比其父元素的內頂端更高;

  • 浮動元素的頂端不能比之前所有的浮動元素或區塊級元素的頂端較高。

  • 如果來源文件中一個浮動元素之前出現另一個元素,浮動元素的頂端不能比包含該元素所產生框的任何​​行框的頂端更高

  • 左(或右)浮動元素的左邊(右邊)有另一個浮動元素,前者的右外邊界不能在其包含塊的右(左)邊界的右邊(左邊)

  • 浮動元素必須盡可能高的放置

  • 左浮動元素必須向左進盡可能遠,右浮動元素則必須向右盡可能遠。

3.實用行為

      首先,我們先來看看浮動元素比其父元素高時會有什麼結果。
css2.1澄清了浮動元素行為的一個面向:浮動元素會延伸,從而包含其所有後代浮動元素。 所以,將父元素置為浮動元素,就可以把浮動元素包含在其父元素內。

4.負外邊距

      負外邊距可能導致浮動元素移到其父元素的外部。透過設定負外邊距,元素可能看起來比其父元素更寬,同樣的道理,浮動元素也可能超過其父元素。
看上去,這個規則好像是和前面的相矛盾(浮動元素放在其父元素之外了);
但是仔細研究一下上一節的規則就可以發現,這個在技術上其實是允許的,一個浮動元素的外邊界必須在父元素內,不過由於外邊距為負,放置浮動元素的內容時就好像覆蓋了自己的外邊界一樣。

5.浮動元素、內容和重疊

      還有一個有趣的問題,如果一個浮動元素與正常流中的內容重疊會怎麼樣?
css2.1指定以下規則:

  • 行內框與一個浮動元素重疊時,其邊框,背景和內容都在浮動元素「之上」顯示。

  • 方塊框與一個浮動元素重疊時,其邊框和背景在該浮動元素「之下」顯示,而內容在浮動元素「之上」顯示。

6.清除

      有時候,我們可能不總是希望內容流過浮動元素,某些情況下,可能要刻意避免這種行為。例如:
      為了確保所有的h3元素不會放在左浮動元素的右邊,可以設定h3{clear:left;}。這可以理解為「確保一個h3的左邊沒有浮動圖像」;

二、定位

#1.基本概念

      利用定位,可以準確的定義元素框相對於其正常位置應該出現在哪裡,或相對於父元素、另一個元素設定瀏覽器視窗本身的位置。

2.定位的類型

  • static(初始值):
    元素框正常生成,區塊級元素生成一個矩形框,作為文件流的一部分,行內元素則會建立一個或多個行框,置於其父元素中。

  • relative:
    元素框偏移某個距離。元素仍保持其未定位前的形狀,他原本所佔的空間仍保留。

  • absolute:
    元素框從文件流完全刪除,並相對於其包含區塊定位,包含區塊可能是文件中的另一個元素或初始包含區塊。元素原先在正常文件流中的所佔的空間會關閉,就好像該元素原來不存在一樣。元素定位後產生一個區塊級框,而不論原來他在正常流中產生何種類型的框。

  • fixed:
    元素框的表現類似於將position設為absolute,不過其包含區塊是視窗本身。

3.包含區塊

對於浮動元素,其包含區塊的定義為最近的區塊級祖先元素。
對於定位,情況則比較複雜:
- 「根元素」的包含塊(也稱初始包含塊)由用戶代理建立,在HTML中,根元素就是html元素,不過有些瀏覽器會使用body作為根元素。
- 對於一個非根元素,如果其position值是relative或static,則包含區塊則由最近的區塊級框、表單元格或行內區塊祖先框的內容邊界過程。
- 對於一個非根元素,如果其position值是absolute,則包含區塊設定為最近的position值不是static的祖先元素。

4.偏移屬性

      上面我們介紹了三種定位機制使用了四種屬性來描述定位元素各邊相對於其包含區塊的偏移。我們將這四個屬性成為偏移屬性,這對於完成定位是很重要的一部分。
- 對於top和bottom,相對於包含區塊的高度
- 對於right和left,相對於包含區塊的寬度
      這些屬性描述了距離包含區塊最近邊的偏移,所以又得名offset。

5.寬度和高度

設定寬度和高度

      如果想為定位元素指定一個特定的寬度,顯然要用width屬性,類似的,利用height,也可以為定位元素聲明特定的高度。

限制寬度和高度

      可以使用min-width和min-height,為元素的內容區定義一個最小尺寸。
類似的,也可以使用屬性max-width和max-height來限制元素的尺寸。

6.內容溢出與剪裁

溢位

      假設因某些原因,一個元素固定為某個特定大小,但內容在元素中放不下,此時就可以利用overflow屬性來控制這種情況;
- visible:
預設值,表示元素的內容在元素框之外也能看見。一般的,這會導致內容超出自己的元素框,但不會改變框的形狀。
- hidden:  
元素的內容會在元素框的邊界處裁剪,不會提供滾動介面使用戶存取超出剪裁區域的內容;
- scroll:
元素的內容會在元素框的邊界處裁剪,但是會提供一個滾動機制供使用者使用。

7.內容剪裁

      如果一個絕對定位元素的內容溢出其內容框,而且overflow設定為要求裁剪該內容,透過使用屬性clip可以改變剪裁區域的形狀。
clip:rect(top,right,bottom,left);

8.元素可見性

      除了剪裁溢出,也能控制整個元素的可見度。
visibility:  
- visible 可見的
- hidden 不可見的。
- collapse  
- inherit
visibility:collapse 當在表格元素中使用時,此值可刪除一行或一列,但它不會影響表格的佈局。被行或列佔據的空間會留給其他內容使用。如果此值被用在其他的元素上,會呈現為 “hidden”。
visibility:hidden 當元素透過設定visibility處於「不可見」狀態時,元素還是會影響文件的佈局,就好像他還是可見一樣。換句話說,元素還在那裡,只是你看不見它。這與display:none有差別,後者不但不可見。也會從文件中刪除,所以對文件佈局沒有影響。

9.絕對定位

包含區塊與絕對定位元素

      元素絕對定位時,則會完全移除文件流程。然後相對於其包含塊定位。這說明,絕對定位的元素可能覆蓋其他元素,或被其他元素覆蓋。
      絕對定位元素的包含區塊是最近的position值不為static的祖先元素,創作人員通常會選擇一個元素作為絕對定位元素的包含區塊,將其position指定為relative而且沒有偏移。

自動邊偏移

      元素的靜態位置一詞大致的意義是:元素在正常流中原本的位置。更確切的講,「頂端」靜態位置是從包含區塊的上邊界到假想框的上外邊距邊界之間的距離。

10、非替換元素的放置和大小

      一般地,元素的大小和位置取決於其包含區塊。各個屬性的值也會有一些影響,不過最主要的還是其包含塊。

11.替換元素的放置與大小

      非替換元素和替換元素的定位規則大不相同。這是因為替換元素有固有的高度和寬度,因此其大小不會改變。
      在決定替換元素位置與大小時,所涉及的行為以下列規則描述最為容易:
- 如果width設定為auto,width的實際使用值由元素內容的固有寬度決定。
- 從左向右讀的語言中,如果left的值為auto,要把auto換成靜態位置。從右向左同理;
- 如果left或right仍為auto,則將margin-left或margin-right的auto值替換為0;
- 如果此時margin-left和margin-right都還定義為auto,則將他們設定為相等的值,從而將元素在其包含區塊中居中;
- 在此之後,如果只剩下一個auto值,則將其修改為等於等式的餘下部分。

12、Z軸上的放置

##透過屬性z-index進行控制

13、固定定位

      固定定位和絕對定位很類似,只不過固定元素的包含塊是視窗。固定定位時,元素會完全從文件流程中移除,不會有相對於文件中任何部分的位置。

14、相對定位

      理解起來最簡單的定位機制就是相對定位。採取此機制時,將透過使用偏移屬性來移動定位元素。

以上是有關CSS浮動和定位定義和用法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
軌道力學(或我如何優化CSS KeyFrames動畫)軌道力學(或我如何優化CSS KeyFrames動畫)May 09, 2025 am 09:57 AM

重構自己的代碼看起來是什麼樣的?約翰·瑞亞(John Rhea)挑選了他寫的一個舊的CSS動畫,並介紹了優化它的思維過程。

CSS動畫:很難創建它們嗎?CSS動畫:很難創建它們嗎?May 09, 2025 am 12:03 AM

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

@KeyFrames CSS:最常用的技巧@KeyFrames CSS:最常用的技巧May 08, 2025 am 12:13 AM

@keyframesispopularduetoitsversatoryand and powerincreatingsmoothcsssanimations.keytricksinclude:1)definingsmoothtransitionsbetnestates,2)使用AnimatingMultatingMultationMultationProperPertiessimultane,3)使用使用4)使用BombingeNtibalibility,4)使用CombanningWiThjavoFofofofoftofofo

CSS計數器:自動編號的綜合指南CSS計數器:自動編號的綜合指南May 07, 2025 pm 03:45 PM

CSSCOUNTERSAREDOMANAGEAUTOMANAMBERINGINWEBDESIGNS.1)他們可以使用forterablesofcontents,ListItems,and customnumbering.2)AdvancedsincludenestednumberingSystems.3)挑戰挑戰InclassINCludeBrowsEccerCerceribaliblesibility andperformiballibility andperformissises.4)創造性

使用捲軸驅動動畫的現代滾動陰影使用捲軸驅動動畫的現代滾動陰影May 07, 2025 am 10:34 AM

使用滾動陰影,尤其是對於移動設備,是克里斯以前涵蓋的一個微妙的UX。傑夫(Geoff)涵蓋了一種使用動畫限制屬性的新方法。這是另一種方式。

重新訪問圖像圖重新訪問圖像圖May 07, 2025 am 09:40 AM

讓我們快速進修。圖像地圖一直返回到HTML 3.2,首先是服務器端地圖,然後使用映射和區域元素通過圖像上的單擊區域定義了可單擊區域。

DEV狀態:每個開發人員的調查DEV狀態:每個開發人員的調查May 07, 2025 am 09:30 AM

開發委員會調查現已開始參與,並且與以前的調查不同,它涵蓋了除法:職業,工作場所,以及健康,愛好等。 

什麼是CSS網格?什麼是CSS網格?Apr 30, 2025 pm 03:21 PM

CSS網格是創建複雜,響應式Web佈局的強大工具。它簡化了設計,提高可訪問性並提供了比舊方法更多的控制權。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境