從事web前端開發(fā)最近手上的項目有很多產(chǎn)品列表模塊,從布局上來說以前習(xí)慣性用float來進行排版,這種方式的優(yōu)點在于思路簡單,算好比例,給出margin進行間隔控制,然后將最右邊的一個產(chǎn)品的margin用css選擇器:nth-child() 取消即可,但是這樣一來就有一個弊端,那就是浮動會給上下連接的其他頁面模塊帶來偏移,在之前我都是在產(chǎn)品列表外圍div里加上display:table來消除這個影響的,這樣做出來的效果也確實不錯,但是有些特殊情況的時候display:table這個屬性會將網(wǎng)頁撐開、出現(xiàn)橫向滾動條,這個時候?qū)able換成inline-block就能解決。這樣下來就感覺比較耗時間,而且有時候排查問題一時間也想不到這個點上來。
到后面漸漸的開始接觸flex布局,發(fā)現(xiàn)是真的簡單明了,一個display:flex就解決了產(chǎn)品列表單個默認(rèn)自動換行的問題,不需要float來進行排列了。然后就是justify-content屬性:flex-start、flex-end、center、space-betwe、space-arou這些屬性,分別實現(xiàn)了從左邊開始排列、從右邊開始排列、居中排列、兩端對齊模塊中間間隔等分排列、模塊兩側(cè)間隔相等排列。
而這個屬性不僅僅用于列表排列,同樣適用于文字排列,一些a標(biāo)簽里的文字,上下左右居中的話,加個justify-content:center就水平居中了,垂直居中的話還需要加一個align-items:center就行了,這樣就不用寫死等高的行高,靈活度大大增加。
一般來說一些產(chǎn)品、新聞列表??;橫向?qū)Ш綑诘臋谀堪?,都是用的justify-content:space-betwe來進行欄目模塊間的間隔控制,只需算好欄目模塊的寬度占比就ok了。但是在多個產(chǎn)品多排排列的時候加了flex-wrap:wrap進行換行外,在產(chǎn)品不夠排滿的時候,會出現(xiàn)尾排產(chǎn)品左右兩邊對齊,中間空格太多,影響排列規(guī)律美觀的情況,這種尾排未滿的情況還是經(jīng)常遇到的,所以一般這種排列的時候,就需要從左開始排列,也就是justify-content:start這個屬性,然后給每個欄目模塊margin值進行中間間隔控制,運用:nth-child()選擇器進行最右邊清除margin。雖然這樣做看起來和運用float + margin來排列差不多,但是這樣做不需要考慮清除浮動的問題。算是比較方便的處理方法了。
日常頁面開發(fā)中列表欄目排版的處理運用以上方法基本就ok了。至于其他方面,就見仁見智了。
如沒特殊注明,文章均為方維網(wǎng)絡(luò)原創(chuàng),轉(zhuǎn)載請注明來自http://m.oulysa.com/news/5316.html