position定位——讓人又愛又恨的屬性

關于css中的position這個屬性,在使用的時候,有時很強大,有時又讓人很無奈。

強大的時候,對于div中的一些小物件不方便使用margin或者padding的時候,給與position:absolute;再配備left、right、top和bottom,基本上就是想放哪里放哪里了。

讓人無奈的時候,就是我們一旦濫用了position這個定位屬性,就會讓自己的布局飛的滿天是,又因為z-index沒有設定好,基本上,整體的布局就會讓你手足無措,找原因的話,又非常麻煩,最后,恐怕只能推倒重做了。

所以,對待position這個屬性,我們要詳細的了解到它運行的原理,以及應用的場景,這樣,我們才可以在想用的時候完美的驅使它來完成我們想要的效果。

廢話不多說,直接上步驟,先說position的概念吧

position,我們百度一下,就知道這個單詞的意思是方位,在css中,就是定位的意思,屬性名字是 position,屬性值有五個,分別是?static(默認定位)、absolute(絕對定位)、relative(相對定位)、fixed(固定定位)、inherit(繼承定位,不常用)

書寫規則:

position:static|absolute|relative|fixed|inherit

?

每個屬性值都介紹一下吧?

????? 1、position:static(默認定位)

????? 顧名思義,就是我們平常書寫的時候,每個div在文檔流中默認的排版,就是static屬性值,它不會讓div或者其他元素脫離文檔流,而是遵循排版的原則,從上到下,塊級元素換行,行內元素不換行等等通用原則,所以,如果不用定位屬性,那么這個position就不用設置。

????? 2、position:relative(相對定位)

????? 相對定位,就是相對于自己本身進行定為移動,它不會脫離文檔流,也就是說,我給一個元素設定了這個屬性,那么這個文件還會在這個文檔流中來回移動,至于怎么移動,下面再講。

????? 3、position:absolute(絕對定位)

????? 跟相對定位不同,它是相對于擁有相對定位屬性父元素進行定位移動,它會脫離文檔流。

????? 如果父元素中的所有子元素都設置了absolute,那么所有的子元素都會浮起來,然后堆疊到一塊兒,所以為了把各個元素攤開顯示,我們需要移動這些元素,而移動這些元素的方法,就是直接是style樣式表中書寫:left、right、top、bottom四個屬性,然后在屬性的后面寫上px(像素)、%(百分比)等可以表示距離的單位。

  在這里,我們要特別強調,left和right不能同時使用,top和bottom不能同時使用。

  并且,這四個元素,都是相對于擁有相對定位(relative)屬性的父元素進行移動的。如果父元素沒有相對定位,那么絕對定位就是相對于body進行定位的。

  所以,為了不讓自己設置的元素跑飛了,那就記得給父元素設置relative吧。

  4、fixed(固定定位)

  這個定位是相對于瀏覽器窗口進行的定位,移動方法跟相對和絕對定位一樣的。

  它也會脫離文案流,我們常見的側邊欄或者廣告圖就是用這個功能實現的。很實用,很強大的功能。

  5、inherit(繼承定位),就是從父元素繼承position定位屬性,不怎么常用。

?

  講到這里,我們就涉及到一個z-index?(層級)的問題。剛才我們講過,如果給子元素全部設置了absolute,那么所有的子元素就會堆疊在一起,互相遮蓋。

  如果我們需要在一個元素上堆疊好多層,那怎么給它們排序呢。這就需要用到z-index屬性了。

  z-index屬性的屬性值是數字。數字越大,那么它就顯示的最考上,比如說吧,

  z-index=0 的元素就會再 z-index=1的下面顯示,z-index=10會再z-index=8上面顯示,所以,堆疊它們的顯示順序,設置z-index就可以了。

  當然,如果不設置z-index的話,默認的,后面的元素會遮蓋前面的元素。

?

  使用時需注意的問題:

  1、float屬性不可以和position屬性共用,切記!

  2、使用absolute時記得給父元素加relative

  3、除了用left和top外,還有right和bottom,活學活用

  4、能不用position就不用position,畢竟容易把布局搞亂

  5、Javascript中調用position的方法是:div.style.positio=”absolute”類似 div是變量名

?

  上面只是簡單的講了一下position的基本東西,如果你在這里面沒有了解到你想要的答案,你可以在下面給我留言,我會積極回復的。

  最后,積極交流,共同進步!

轉載于:https://www.cnblogs.com/lianshouluguo/p/5851168.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457301.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457301.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457301.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CentOS 6.8安裝Python2.7.13

轉載自:http://www.cnblogs.com/94YY/p/6224441.html查看當前系統中的 Python 版本python --version返回 Python 2.6.6 為正常。檢查 CentOS 版本cat /etc/redhat-release返回 CentOS release 6.8 (Final) 為正常。安裝所有的開發工具包yum groupinstall -y "D…

新安裝數據庫sqlserver2008r2,使用javaweb連接不上問題處理

鼠標右鍵【計算機】--》【管理】,打開界面如下: 選擇自己數據庫的實例名: 選擇TCP/IP:右鍵【屬性】,將所有TCP動態端口的【0】刪掉,TCP端口設為1433;重啟服務,即可連接。PS:不知道這…

vue 鼠標點擊事件_VBA代碼解決方案第115講:點擊鼠標實現精準控制觸發事件的VBA代碼第二方案...

大家好,我們今日繼續講解VBA代碼解決方案的第115講內容:工作表事件中,根據Target參數不同,實現精準控制觸發事件的VBA代碼第二方案。在上一講中我們講了利用Address的屬性實現控制觸發事件的方案,今日講解第二方案&…

mysql注入5.0以上_[Injection]對MYSQL 5.0服務器以上版本注入

How to do a SQL Injection for MYSQL Server 5.01. Find a vulnerable add a ‘ at the end of the site example: news.php?id1 add a ‘ at the end of the 1 and see if you get a syntax error2. order by #–Keep upping the # until you get an error.3. union all sel…

動態規劃(制表法)模板及應用

int cache[100][100] 初始化為全體為 -1,這樣在 cache 中存儲的可以是其他任意非負整數,也可以是布爾類型 0/1 (true/false),1. 模板 int cache[2500][2500];// 初始化為 -1,memset(cache, -1, sizeof(cach…

(翻譯)31天Windows Phone學習-1-項目模板

今天在在外文網站Google關于Windows Phone 7的學習資料,無疑間Google到了Jeff Blankenburg的 31 Days of Windows Phone這個系列,感覺寫的比較基礎和淺顯易懂,適合我這種入們級的人學習,所以準備拿來對Windows Phone 7的簡單入門學…

Mssql 跨域查詢

有數據庫test1和數據庫test2。其中test1中有表 table1、table2;test2 中有表 table1。三個表的字段都為為:id、xingming、shijian、shuliang。接下來我們就以上面的條件為例來介紹跨數據庫查詢和跨表 查詢的方法。 SELECT * FROM OPENROWSET(sqloledb…

arch mysql日志位置_MySQL 日志文件與相關參數

1 、參數文件及mysql參數查看mysql 的 my.cnf 配置文件位置命令:>./bin/mysql --help | grep my.cnf查看mysql 的參數設置命令: mysql > show variables --顯示所有參數; // show variables like log_error% 顯示某匹配參數mysql > select se…

MOSS點滴(2):自定義Application Page

在MOSS中后臺管理的頁面都是Application Page,比如網站設置的頁面(settings.aspx)就是典型的Application Page,它不能被Sharepoint Desiger定制。如果我們要修改只能手動的使用其他工具來修改,我們也可以添加Application Page,必須…

wpf使用webbrowser時提示當前頁面腳本發生錯誤_win7系統internet腳本錯誤的應對辦法...

最近有win7系統用戶反饋,上網時遇到ie瀏覽器總會提示internet腳本錯誤的問題,不知如何解決,為此非常苦惱,那么win7系統提示internet腳本錯誤怎么辦呢?就此問題,下面小編教你win7系統internet腳本錯誤的應對辦法。有不…

JDK的目錄結構及結構圖

-bin目錄: JDK開發工具的可執行文件 -lib目錄: 開發工具使用的歸檔包文件 -jre: Java 運行時環境的根目錄,包含Java虛擬機,運行時的類包和Java應用啟動器, 但不包含開發環境中的開發工具 -demo: 含有源代碼的程序示例 -include: 包含…

java9-1.類,抽象類,接口的綜合小練習

1 /*2 教練和運動員案例(學生分析然后講解)3 乒乓球運動員和籃球運動員。4 乒乓球教練和籃球教練。5 為了出國交流,跟乒乓球相關的人員都需要學習英語。6 請用所學知識:7 分析,這個案例中有哪些抽象類,哪些接…

java發送c語言結構體_C語言中結構體直接賦值?

在C語言中結構體變量之間可以進行賦值操作嗎?簡單結構體的賦值先說結論:一般來說,C語言中的結構體變量可以用另一個變量對其進行賦值或初始化。簡單結構體(不包含指針成員)直接賦值沒有問題。我們先下面一段代碼:#include #includ…

Cacti 使用安裝詳解-企業級實例

Cacti是一套基于PHP,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具。Cacti是通過 snmpget來獲取數據,使用 RRDtool繪畫圖形,它提供了非常強大的數據和用戶管理功能,可以指定每一個用戶能查看樹狀結構、host以及任何一張圖,還…

MySQL 插入數據時,中文亂碼???問題的解決

在終端,mysql -u root -p 登錄; show variables like character%; 來查看當前數據庫的相關編碼集。 client為客戶端使用的字符集。connection為連接數據庫的字符集設置類型,如果程序沒有指明連接數據庫使用的字符集類型則按照服務器端默認的字…

mysql時間間隔interval_MySQL DATEDIFF函數獲取兩個日期的時間間隔的方法

描述返回兩個日期之間的時間間隔。語法DateDiff(interval, date1, date2 [ ,firstdayofweek[ , firstweekofyear]] )DateDiff 函數的語法有以下參數:參數描述interval必選。字符串表達式,表示用于計算 date1 和 date2 之間的時間間隔。有關數值&#xff…

linux教程:配置Tomcat開機啟動

我們在linux下安裝好tomcat之后;經常是需要配置到開機啟動的; 這樣的話就不需要我們每次重啟linux服務器之后自己在登陸運行startup.sh文件啟動tomcat了 本次的演示環境是在centos7中完成的;也在centos6.5中測試過;理論上所有版本…

操作系統內存分配算法_操作系統基礎45-伙伴系統和slab內存分配

當在用戶模式下運行進程請求額外內存時,從內核維護的空閑頁幀列表上分配頁面。這個列表通常使用頁面置換算法來填充,如前所述,它很可能包含散布在物理內存中的空閑頁面。也要記住,如果用戶進程請求單個字節內存,那么就…

Sublime Text 3新建工程

1. 創建工程 Project > Add Folder to Project 這時在sidebar中將出現剛剛添加的文件目錄,如果還需要添加其他目錄,則重復這一操作即可。 2. 保存工程 Project > Save Project As 點擊保存后Sublime Text將自動生成兩個文件: 如圖&…

鐘國晨 160809323

助教老師好,我是計科三班鐘國晨,我對我們專業并不是很了解,至少從目前來看是這樣,不過雖然感覺我們專業內容比較復雜,我還是對我們所學的知識挺感興趣的,我性格比較開朗,希望以后能和老師您多多…