首頁 web前端 css教學 CSS浮動、定位、父容器塌陷問題

CSS浮動、定位、父容器塌陷問題

Feb 27, 2017 pm 03:00 PM

  怎麼說呢,從接觸前端起,到現在已經有三個月了,這麼長時間的學習呢,我的水平依然一般,前幾天參加了IFE2017,下面總結一下對CSS中浮動、定位、分列佈局、父容器塌陷問題的一些心得。

  首先,浮動和定位是CSS中佈局的基礎,透過浮動和定位,可以實現每個盒模型精確到像素層級的控制,可見其重要性。

  先談談浮動:

  在HTML的文檔物件模型裡,採用的是串流佈局,也就是說,區塊級元素是獨佔一行的,想讓區塊級元素並排,主要是兩種辦法,一種是在CSS裡設定區塊級元素的display為inline-block。但很多時候不適合用這種辦法,更多時候我們會採取浮動的辦法。

  浮動,主要有兩種float:left;和float:right;浮動可以讓區塊級元素脫離標準文檔流,可以理解成為定義了浮動的元素,就要向所定義方向去移動,直到被阻擋或碰到了父容器邊界。如果當行剩寬度不足,那麼所浮動的盒子,就會浮到下一行。浮動為實現頁面佈局提供了一種解決方案。

  但是,不能忽略的是,有時候透過簡簡單單的浮動不能達到我們對介面佈局的需求。這時候定位的重要性就體現了出來,定位可以分為四種:relative(相對定位)、absolute(絕對定位)、fixed(固定定位)、static。當我們不對元素套用定位屬性時,就相當於static。

  那麼,如何理解relative定位?應用了relative定位的元素(盒子模型)不脫離標準文檔流,可以對它設定top、left、right、bottom值,實現對元素(盒子模型)相對於原來位置的微調,top即元素相對於原來的位置下移(可設定負值,作用相當於設定正值bottom),left是元素相對於原來的位置右移。相同的,right為左移,bottom是上移。

  absolute定位:應用了absolute定位的元素會脫離文檔流,好像它從來沒有存在過,這時它的定位是相對於他的應用了relative定位的祖先元素而言的。而且它還有一個很重要的特性:就是會根據設定的位移值實現“跨越”,什麼意思呢?就是說,對其設定top、left、right、bottom是相對於他的祖先元素(盒子)的邊界而言的。如果要對其設定哪個位移方向,此元素(盒子)會先移動到那個方向的邊界,然後相對於邊界去移動。

  fixed定位:fixed定位同樣是脫離了標準文檔流,不過他是相對於瀏覽器的窗口而言的,不會隨著滾動條或者是界面的移動而改變,同樣可以設定top、left、right、bottom值。

  至於分列佈局,我個人常用的方法有以下幾種:

  1、如果是分兩列佈局,可以同時對兩個盒子應用浮動來進行佈局,可以設定左右兩個盒子自己的寬度或是寬度百分比。

  2、同樣是分兩列佈局,也可以對左邊的盒子應用左浮動佈局,對右邊的盒子應用定位或設定它的margin值來定位。

  3、對於三列佈局,最好採用浮動加定位的方法,對於左右兩側的盒子進行浮動處理,對於中間元素(盒子)進行設置其左右margin來實現定位。

  必須明白的是,浮動這一偉大的創舉,可能會導致父容器塌陷,也就是說,當容器內的全部元素浮動(會導致父容器高度為零)或者內部不浮動的當元素不足以撐起父容器時,父容器高度會為0或不足以滿足我們對頁面佈局的要求,那麼,我們必須想一些辦法來解決這兒問題,我這有幾個辦法:

  1、為父容器設定一個高度

  2、設定父容器overflow:hidden或overflow:auto;

overflow:hidden;
overflow:auto;
登入後複製

## 

#  3、設定父元素浮動(不建議)

  4、設定空元素對其(clearfix:both)

  5、為父元素套用下列樣式:

.clearfix:before,
.clearfix:after
{
    content:"";
    display:table;
}
.clearfix:after
{
    clear:both;
}
登入後複製

  總結來說,對於給網頁中元素的佈局,經常需要浮動和定位一起來用,綜合起來,方能達到我們需要的效果。

  以上就是我這段時間來對於CSS定位、浮動的一些小小體會,可能會有錯誤在裡面,希望大家可以給我提出來,方便我們大家一同進步,總結這些東西,看了許多大佬的文檔,所以很多東西借鑒了大佬的意見,說出來自己的一些理解,同時加深自己對其間知識體悟理解。希望大家在前端之路一同努力,每天都有進步!

更多CSS浮動、定位、父容器塌陷問題 相關文章請關注PHP中文網!


###
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱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

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1668
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
24
靜態表單提供商的比較 靜態表單提供商的比較 Apr 16, 2025 am 11:20 AM

讓我們嘗試在這裡造成一個術語:“靜態表單提供商”。你帶上html

使Sass更快的概念證明 使Sass更快的概念證明 Apr 16, 2025 am 10:38 AM

在一個新項目開始時,Sass彙編發生在眼睛的眨眼中。感覺很棒,尤其是當它與browsersync配對時,它重新加載

每周平台新聞:HTML加載屬性,主要的ARIA規格以及從iframe轉移到Shadow dom 每周平台新聞:HTML加載屬性,主要的ARIA規格以及從iframe轉移到Shadow dom Apr 17, 2025 am 10:55 AM

在本週的平台新聞綜述中,Chrome引入了一個用於加載的新屬性,Web開發人員的可訪問性規範以及BBC Move

帶有HTML對話框元素的一些動手 帶有HTML對話框元素的一些動手 Apr 16, 2025 am 11:33 AM

這是我第一次查看HTML元素。我已經意識到了一段時間,但是尚未將其旋轉。它很酷,

紙張形式 紙張形式 Apr 16, 2025 am 11:24 AM

購買或建造是技術的經典辯論。自己構建東西可能會感覺更便宜,因為您的信用卡賬單上沒有訂單項,但是

'訂閱播客”鏈接應在哪裡? '訂閱播客”鏈接應在哪裡? Apr 16, 2025 pm 12:04 PM

有一段時間,iTunes是播客中的大狗,因此,如果您將“訂閱播客”鏈接到喜歡:

它全部都在頭上:管理帶有React頭盔的React Power Site的文檔頭 它全部都在頭上:管理帶有React頭盔的React Power Site的文檔頭 Apr 15, 2025 am 11:01 AM

該文檔負責人可能不是網站上最迷人的部分,但是其中所處的內容對於您的網站的成功也一樣重要

See all articles