position:absolute、float、display:inline-block 都能實現(xiàn)相同效果,區(qū)別是什么?
問題描述
問題解答
回答1:個人來看
1、絕對定位完全脫離了普通流(flow,后面不再說明),無法跟普通流建立交互關系(普通流能影響絕對定位,但絕對定位不影響普通流)。這樣來說,在一些彈性布局的場景中,絕對定位就存在一些缺陷,它只適應也固定布局場景。
2、浮動,本身不是用來做布局的,而是做文字環(huán)繞效果。但是CSS2.1好像也就這個屬性能夠快速地滿足一些需求,因此才有了浮動布局。浮動相對絕對定位好處是,它可以影響IFC,也可以通過 clear 清除浮動影響塊級布局,可以與普通流建立良好的交互。 而且浮動本身是脫離普通流的,在頂端對齊和右對齊上有特別的優(yōu)勢。而 inline-block 的垂直對齊上有更多選擇。
3、inline-block,這個屬性也不是用來布局的(偏向于排版),但是在 CSS3 普及之前,它的用處也很大。該元素的盒子在行框中進行格式化,其順序與源HTML中的順序一一對應。 同時該元素不脫離普通流,這比浮動來說有更大的優(yōu)勢,它可以跟普通流產(chǎn)生自然交互,而不必要借助去其他屬性。而且相比浮動,相鄰元素間的垂直對齊方式,inline-block 比 float 更加靈活, float 格式化時有一條規(guī)則,就是越高越好(因此常常表現(xiàn)為頂端對齊),而 inline-block 在行內(nèi)格式化,擁有更靈活的垂直對齊方式。
應用:
如果使用了浮動,清除浮動就會成為你的副作用,而且如果你沒有良好的HTML/CSS 結構的話,清除浮動是一個很復雜的事情。
inline-block 雖然避免了清除浮動的事情,但是會有另一個副作用,即空白符問題。這個問題的解決方案也令人十分蛋疼,因為畢竟 inline-block 不是布局屬性,它僅僅是行內(nèi)級塊容器盒子。 同時,垂直居中、行高等問題也有可能是一個副作用。
其他:
其實在 CSS2.1中,利用表格 table 布局也是非常強大的方法。表格布局在同行等高,同列等寬,垂直居中對齊上面的優(yōu)勢是其他方法很難媲美的。甚至于在自適應場景中,表格布局的靈活性也非常出眾。
相關文章:
1. mysql - oracle物化視圖和臨時表的區(qū)別是什么?2. java - 輕量級線程和重量級線程的定義是什么,他們的區(qū)別是什么?如何區(qū)分?3. 超融合服務器跟云服務器本質(zhì)區(qū)別是什么?4. java - jdk8u, jdk9, jdk10是側重和區(qū)別是什么?為什么分了這幾個分支呢?5. mysql索引 - mysql的范圍查詢和多值精確查詢在查詢原理上的區(qū)別是什么?6. HTML5中的article和section的主要區(qū)別是什么?7. javascript - vue.js插件中的全局方法,全局資源和實例方法區(qū)別是什么?8. linux - 快照和鏡像的區(qū)別是什么?這個快照怎么使用?
