搜尋
首頁web前端css教學css float 屬性和position:absolute比較

css float 屬性和position:absolute比較

Aug 11, 2017 pm 02:54 PM
floatposition

相信很多人都有這樣的問題,在頁面佈局中float和position:absolute哪個比較好用呢?既然是佈局,就用float好,這我比較常用。這個浮動是可以清除的,一般不會影響整體佈局。 而position,定位,是不受約束的,這個貌似都談不上佈局了,一般要是做什麼特殊的定位或者浮動層的時候,可以考慮使用。正常頁面佈局,我個人建議用FLOAT

1.float 屬性定義元素在哪個方向浮動。以往這個屬性總應用於圖像,使文字圍繞在圖像周圍,不過在 CSS 中,任何元素都可以浮動。浮動元素會產生一個區塊級框,而不論它本身是何種元素。 p一個典型的區塊級元素,會單獨佔據一行。

先來看看最基本的區塊級元素如何排列的。 html程式碼,以下樣式都是基於此。

複製程式碼 程式碼如下:



       


        框框1
       


       

        框框3
       



css

















複製程式碼:


.boxBg{
    margin: 0 auto;
    width:500px;
    height:200px;## #    .box1{

    width:100px;

    height:50px;

    background-color:red

   px; css float 屬性和position:absolute比較    background-color:blue

    }

    .box3{

    width:100px;

    height:50px;## 執行結果:



由於p是區塊級元素,所以框會以縱向形式排列。在實際操作中往往需要將框橫向排列。有兩種方式可以實現。第一種將display:inlin-block;


複製程式碼
程式碼如下:

##.boxBg{
    margin: 0 auto;
width:500px;
    height:200px;
    border:2px solid #ccc
    }
    . -color :red;
    display:inline-block
    }
    .box2{
    width:100px;
    height:50px;
color: -block
    }
    .box3{
    width:100px;
    height:50px;
   

執行結果:

css float 屬性和position:absolute比較

至於中間的縫隙,追溯到本質原因是元素之間的空白符號引起的,所以在父元素設定fone- size的大小,可以調整空白縫隙的大小。

複製程式碼 程式碼如下:


.boxBg{
    margin: 0 auto;
    width:500px;
    height:200px ;
    border:2px solid #ccc;
    font-size:34px;
}

##將font-size:34px之後,那麼縫隙就會變寬。

執行結果:

css float 屬性和position:absolute比較

同理,要去掉縫隙,那麼就需要將font-size:0;

複製程式碼 程式碼如下:


.boxBg{
    margin: 0 auto;
    width:500px;
    height:200px #   order:2px height:200px #   ##}


執行結果:

如此便實現了想要的佈局,框裡邊的文字也跟著消失了,同樣也證明文字的大小會影響縫隙。只需要在子元素裡重新設定就可以了。當然今天的重點不是這個。同樣的效果float:left;也可以輕鬆實現。 css float 屬性和position:absolute比較

複製程式碼

程式碼如下:

    .boxBg{

    margin: 0 auto;
    width:500px ;
    height:200px;
    border:2px solid #ccc;
    }
    .box1{ #   ;
    float:left
    }
    .box2{
    width:100px;
    height:50px;
 
    .box3{
    width:100px;
    height:50px;
    background-color:green;
   ;

執行結果:




元素加入float之後,此浮動元素會在其碰到父級元素邊框或另一個浮動元素邊框,緊鄰其後顯示。例如下邊的例子,在浮動元素總寬度大於父級元素時,換行,換行的時候遇到前一個float並在其後顯示


複製代碼
代碼如下:




執行結果:









#執行結果:






# 執行結果:

css float 屬性和position:absolute比較

##執行結果:




#如果使用inline-block,結果會是怎麼樣呢?


複製程式碼
程式碼如下:


    height:50px;

    background /style>

css float 屬性和position:absolute比較執行結果:

#此時框3是另起一行而不是跟在框1之後,(1,2之間的縫隙這裡就不說了) 這也是一個使用inline-block和float的判斷,如果模組寬度不一樣使用float排版可能會導致跟預想結果不一樣,所以在寬高不變的情況下使用float是極好的,如果不一致的話需要看具體的佈局,使用恰當的屬性。 ######以下貼程式碼,只貼修改的部分,其他不變,結構不變。 ###

如果去掉box3的float:left會是什麼結果?依照理解,浮動元素不佔據空間,也就是框框3會無視框1,框框2直接緊鄰父元素的邊框顯示,也就是框框1會蓋住框3?那結果呢?

複製程式碼 程式碼如下:


.box3{
    width:100px;
    height:50px;
    background-color: green;
}

執行結果:

css float 屬性和position:absolute比較

#為何框3的文字會出現在下邊而不是被框1覆蓋?接著看程式碼,看圖片

複製程式碼 程式碼如下:


.box3{
    height:50px;
    background-color:green ;
}

執行結果:

css float 屬性和position:absolute比較

#看出不一樣了沒?是的。 box3沒有定義width;去掉了width,不定義寬度的情況下預設寬度就是父元素的寬度,也就是說此時width:500px;浮動元素覆蓋非浮動元素,也就是框3前邊200px的寬度被浮動元素覆蓋了,之所以文字沒有被覆蓋而且文字被浮動元素擠在200px之後的位置,原因呢?

  浮動元素不會佔據區塊的空間,所以框三就是100%的父容器寬度500px,但是浮動元素會佔據另外的空間,也就是行框空間,通俗的講就是文本所佔的空間。

這也是圖片float之後,文字會自動環繞圖片的原因。浮動元素不佔據塊級空間,但會影響塊級元素之內的文字以及內聯元素。

如此的話如果想要三個框寬一樣,那麼只需要將框三width:300px;

複製程式碼 程式碼如下:


#.box3{
    width:300px;
    height:50px;
    background-color:green;
}

執行結果:

css float 屬性和position:absolute比較

到這裡基本的浮動說完了,那就要說說問題了,浮動雖然好用,但是也會在實際中出現很多問題。例如:

1; :

css float 屬性和position:absolute比較

很常見的問題,正常情況下。應該灰色的背景會跟框一樣高,可事實總是不會盡如人意:)

這種情況產生的原因,都知道是因為浮動造成的,是的,是浮動,很多地方有說浮動元素會脫離普通流,所以普通元素可以當浮動元素不存在,所以這裡就不會撐開背景了,但是認真看的同學,一定會記得上邊有提到浮動元素不會影響塊框,但會影響行框,也就是文字或內嵌元素,不管是區塊級元素或內聯元素都屬於普通流,如果浮動元素脫離普通流又為何會影響行框?其實我覺得不必要糾結於這些概念性的東西。依照我的理解浮動元素就是跟塊級元素不在一個水平空間,跟文字內聯元素在一個空間,所以這裡邊框就相當於在背景之上,所以不會影響背景元素,平常所說的清除浮動,並不是說把浮動元素的float屬性去掉,而是清除其周圍的浮動元素,使其自身周圍沒有浮動元素,所以如果想讓框三到第二行,不能在框2裡邊用clear:right;而是需要在框3裡邊使用clear:left;

複製程式碼 程式碼如下:


.box3{
    float:left;
    width:100px;
    height:50px;
    前言

##執行結果:

ok!理解了這個,下來再說說如何使背景和框等高,第一種:最直接的方法就是直接設定背景高度和框相等就Ok了,當然這個不是重點,下面來說說清除浮動。首先先來看看範例:css float 屬性和position:absolute比較

複製程式碼

程式碼如下:

以上是css float 屬性和position:absolute比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
@rules具有多少特異性,例如@keyframes和@media?@rules具有多少特異性,例如@keyframes和@media?Apr 18, 2025 am 11:34 AM

前幾天我得到了這個問題。我的第一個想法是:奇怪的問題!特異性是關於選擇者的,而在符號不是選擇器,那麼...無關緊要?

您可以嵌套@Media和@support查詢嗎?您可以嵌套@Media和@support查詢嗎?Apr 18, 2025 am 11:32 AM

是的,您可以,而且它並不重要。不需要CSS預處理器。它在常規CSS中起作用。

快速吞噬緩存破壞快速吞噬緩存破壞Apr 18, 2025 am 11:23 AM

您應該肯定會在CSS和JavaScript(以及圖像和字體以及其他內容)等資產上設置遙遠的高速緩存標頭。告訴瀏覽器

尋找可以監視CSS質量和復雜性的堆棧尋找可以監視CSS質量和復雜性的堆棧Apr 18, 2025 am 11:22 AM

許多開發人員寫瞭如何維護CSS代碼庫的文章,但並沒有很多關於如何測量該代碼庫質量的文章。當然,我們有

數據學家用於建議不執行值的值數據學家用於建議不執行值的值Apr 18, 2025 am 11:08 AM

您是否曾經有一種需要接受簡短而任意的文本的表格?喜歡名字或其他。那完全是用的。有很多

蘇黎世的最初會議蘇黎世的最初會議Apr 18, 2025 am 11:03 AM

我很高興能前往瑞士蘇黎世參加前界(Love the Name and URL!)。我以前從未去過瑞士,所以我很興奮

使用CloudFlare工人建立全棧無服務器應用程序使用CloudFlare工人建立全棧無服務器應用程序Apr 18, 2025 am 10:58 AM

我在軟件開發方面最喜歡的發展之一是無服務器的出現。作為一個傾向於陷入細節的開發人員

在NUXT應用程序中創建動態路由在NUXT應用程序中創建動態路由Apr 18, 2025 am 10:53 AM

在這篇文章中,我們將使用我構建和部署的電子商務商店演示來進行Netlify,以展示如何為傳入數據製作動態路線。這是一個公平的

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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

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 CS6

Dreamweaver CS6

視覺化網頁開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境