果凍公開課第八課:如何定位

為什么會有position定位

基于定位的常見需求

不同需求的解決方案

動畫視頻:

果凍公開課第八課:如何定位


文字解析:

我們知道每一個元素都是盒子

期望布局像搭積木一樣

從上往下挨個堆盒子就能完成各式各樣的頁面

然而多實現(xiàn)幾個頁面就會發(fā)現(xiàn)

文檔流中任意一個元素位置調整都會影響到后面的元素

簡直是牽一發(fā)動全身

每每捫心自問敢動嗎

都只能回答不敢動不敢動

有一種脫離文檔流的解決辦法就是浮動

但浮動規(guī)則的局限性很大

它會向左上角或右上角靠過去

可惜這兩個方向并不是布局的全部

日益增長的網(wǎng)頁復雜度

和落后的css布局方式之間的矛盾越來越大

讓定位需求變得越來越復雜:

1.讓元素可以相對于它自己的位置定位

2.讓元素可以在父元素范圍內(nèi)任意位置定位

3.讓元素可以在屏幕范圍內(nèi)任意位置定位

對于第一種需求

讓元素可以相對于它自己的位置定位

比如像這樣

讓元素相對于自身向下向右偏移一點

也許有人會想到用margin 或padding

但這樣搞會影響到后面的元素

后面的元素又要想盡各種辦法歸位

過程曲折到可以寫一部30集的連續(xù)劇

用一次就會感到萬分沮喪甚至開始懷疑人生

所以我們希望有一種定位方式

讓元素相對于自身偏移

且不會影響文檔流

首先設置元素的postion為relative

讓元素準備偏移

此時 從視覺上來看它并沒有發(fā)生變化

接下來設置top right bottom或left來讓元素位移

比如top: 20px

意味著元素上邊界與它原本位置的上邊界距離20像素

bottom:20px

則意味著元素下邊界與它原本位置的下邊界距離20 像素

left和right

一個控制左邊界一個控制右邊界 也是同理

這里值得注意的事情有兩點

第一.相對定位的元素沒有脫離文檔流

第二.對非定位元素設置top等方向屬性是沒有效果的

對于第二種需求

讓元素可以在某個祖先級容器范圍內(nèi)任意位置定位

比如像這樣想讓元素相對于某個祖先級元素容器定位

這就意味著元素不被局限在父容器內(nèi)

它可以在更廣闊的空間里放飛自我

浮動是肯定不行的

浮動只能在父容器里作威作福

這就需要一種完全脫離文檔流的定位方式

position:absolute絕對定位

不再區(qū)分這個元素是塊級元素還是行內(nèi)元素

它的父容器會將它視為不存在

就好像設置了display為none一樣

事實上這里設置display都是沒有效果的

然后對它的祖先級元素容器設置標識 postion:relative

讓它可以相對于被標識的元素定位

最后通過top和right設置它在指定容器中的位置

在這個例子里

被絕對定位的元素是沒有設置寬和高的

它脫離了普通文檔流并且不預留任何空間

因此它會按內(nèi)容大小彈性地調整大小

當然也可以為它設置固定的寬高

它會按指定的寬高顯示

不過如果是對于沒有指定寬高的絕對定位元素

同時設置top right bottom和left

這些屬性會同時生效

像這一段代碼

絕對定位元素的top和bottom相等

left和right相等就能在目標容器中實現(xiàn)完美居中

對于第三種需求

讓元素可以在屏幕范圍內(nèi)任意位置定位

比如像這樣

要讓元素保持在頁面右下角在屏幕滾動時不會改變

是以視窗為畫布來定位的

即使頁面上下滾動

它還是會固定在相同的位置

所以為元素設置position:fixed,固定定位

這樣的需求其實和前一個需求是非常類似的

同樣的也會脫離文檔流

只不過一個是相對于某個祖先級元素定位

一個是相對于視窗定位

因此想要讓它顯示出來

需要設置它的寬高和位置

不同的是

并不需要為它設置目標容器

因為它的目標就是頁面的可視部分

現(xiàn)在你可以仔細看看這段CSS代碼

在設置寬高后

設置right指定它 的右邊界到視窗右邊界的距離

再設置bottom指定它的下邊界到視窗下邊界的距離

在頁面滾動后

它相對于視窗仍處于同一位置上

可以說有了定位的這幾種方式

大大的擴展了布局的靈活性

它們分別是

absolute、fixed、relvtive

另外定位還需要一個默認值static

設置它后就能讓元素回到當初

假裝什么都沒發(fā)生的樣子

怎么樣是不是很簡單?

趕緊上手寫點代碼練習一下吧~

入QQ群:717415872? ? ?了解課程動態(tài)、幕后花絮,還有機會參與到課程制作,成為聯(lián)合制作人喲,記得備注來自果凍課堂!

更多內(nèi)容,歡迎加大師姐微信:it_xzy

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 當在這一個頁面上實現(xiàn)布局和定位有幾種不同的技術。使用哪種技術,很大程序上取決于內(nèi)容和目標頁面,因為有很多技術比別人...
    lulu_c閱讀 1,224評論 0 5
  • 一、CSS入門 1、css選擇器 選擇器的作用是“用于確定(選定)要進行樣式設定的標簽(元素)”。 有若干種形式的...
    寵辱不驚丶歲月靜好閱讀 1,739評論 0 6
  • relative:生成相對定位的元素,通過top,bottom,left,right的位置相對于其正常位置進行定位...
    zx9426閱讀 1,081評論 0 2
  • 工具類 使用
    _凌浩雨閱讀 999評論 0 1

友情鏈接更多精彩內(nèi)容