:before偽元素模擬list-style-image時, 怎樣模擬list的inside效果?

背景:

需要給list加list-style-image.

但因為要用sprite生成圖片, 這一步是rails3後台自動完成的, offset不能提前知道. 我所知道的寫法是在scss文件中寫 @include sprite-folder("image-file"). 但這種方法只會生成background的圖片. 不知道對於list-style-image, scss文件應該怎麼寫?

後來想到用li:before來模擬list-style-image. 效果還可以, 但是第二行以後的縮進不對. 有簡單的方法可以模擬list的inside效果么


好吧,我最近團隊的一個項目中也遇到了這樣的問題,先上圖:

行數非常多的時候:

行數少的時候:

如果你想要這樣的效果,那麼我說一下實現思路:

這種布局的難點在於左側列表項需要寬度自適應,也就是當行數很多的時候,前面想列表項寬度會變得很大,通常的 list-style 只能固定一個最大寬度,無法滿足自適應的需求。

這裡的核心在於使用CSS3 display:table-cell,當然不支持IE6-7,現代瀏覽器獲得最佳效果。

ol{display:table;}

li{counter-increment: list; display:table-row;}

li:before{ content:counter(list)"."; min-width:30px; display: table-cell; text-align:right; }

li:last-child { counter-reset: list 284801; }/* 僅供測試 */

具體的例子請看:http://www.iyunlu.com/demo/list-type/


左浮動或將其顯示為行內塊都可以達到目的,看你自己的喜好。


推薦閱讀:

帶你入門 CSS Grid 布局
更快的火狐!超快速 CSS 引擎:Quantum CSS
【修真院「純潔」系列之一】四臉蒙逼
張鑫旭:說說CSS學習中的瓶頸

TAG:前端開發 | HTML | CSS |