css3種方法實現元素的絕對居中


元素的絕對居中應該是很多人熟悉的一個小應用,我記得很多年前去神州數碼面試的時候就遇到過這個面試題。方法比較簡單,代碼如下:

復制代碼
.node{ width : 300px; height : 400px; position : absolute; left : 50%; top : 50%; margin-left : -150px; /*一半的高度*/ margin-top : -200px; /*一半的寬度*/ }
復制代碼

這樣的用法網上很多,我那時候也是只知其然不知其所以然,margin負值是一方面,這里要說的是left和top的百分比。

先看下w3c里面對這個概念的介紹:

其實這里也沒有清楚,這里left和top的百分比,我覺得應該標尺應該是父元素,也就是分別是 left的50% 其實是父元素寬度的50%,top值為50%,也是父元素高度的50%,

並且這個值是可以實時計算的,改變瀏覽器窗口的大小時,會發現元素始終居中,就是實時計算的結果。

了解了這一點就簡單了。

畫個圖說明一下:

(吐個槽:好久不用ps 畫個這么簡單的圖都笨的不行了)

通過postion的定位,現在子元素被定到了黃色區域,這個時候,通過margin的負值,就可以移到絕對居中的位置了

本想再畫個圖的,畫圖技能太差,這一點也比較好理解,就不畫了。

 

除了這種常用的居中方法外,還有一種css3的方法,也比較好理解,是當前方法的一個改進,不需要知道元素的寬和高。

復制代碼
.node { width: 600px; height: 400px; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); /* 50%為自身尺寸的一半 */ }
復制代碼

這個用法主要是用到css3中的transform,這里就不多介紹了,但是在網上,看到了還有一種方式,用的是margin:auto;我覺得比較好玩。

復制代碼
.node { width: 600px; height: 400px; position: absolute; left: 0; top: 0; right: 0; bottom: 0; margin: auto; /* 有了這個就自動居中了 */ }
復制代碼

有點神奇


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM