有時候一個簡單Bug的出現,每每是因爲一點知識小細節;但每每這點小細節看似簡單,其背後卻很有韻味。
看起來相對比較簡單,分析下結構:css
// <span className="check" /> .check{ position: relative; display: inline-block; width: 16px; height: 15px; margin: 0 10px; &::after{ content: ""; position: absolute; left:0; width: 100%; height: 50%; border: 2px solid #000; border-radius: 1px; border-top: none; border-right: none; background: transparent; transform: rotate(-45deg); } }
// 部分代碼,做用就是循環生成列表 <ul className="detail" > { storeTypeInfoMap[type].map(item => ( <li> {item} <span className="check" /> </li>)) } </ul> // css .detail { font-size: 12px; color: $c-gray; li { display: flex; justify-content: space-between; align-items: center; text-align: left; line-height: 3em; padding-right: 10px; .check{ position: relative; display: inline-block; width: 16px; height: 15px; margin: 0 10px; &::after{ content: ""; position: absolute; left:0; width: 100%; height: 50%; border: 2px solid #000; border-radius: 1px; border-top: none; border-right: none; background: transparent; transform: rotate(-45deg); } } } }
list-style-type: disc;
,仍是沒用?問題在於display ?:segmentfault
display:list-item
啊;list-style
屬性是由於,瀏覽器對li的默認display:list-item
,就像內斂元素display默認爲inline
;<ul className="detail" > { storeTypeInfoMap[type].map(item => ( <li> <p className="detail-item"> {item} <span className="check" /> </p> </li>)) } </ul>
兩個解決方案:瀏覽器
list-style-position
屬性,設置爲inside將圖標放進li中就好(用這個把):display: inline-flex
看看:display:inline-XXX
inline-block
標籤設置寬度(根據內容自動,固然能夠設置寬度%給圖標騰出位置,但這樣處理後期更改寬度相對麻煩),以致於當內容不足以一行容下時,p寬度就別撐到父容器的寬度,便換行;那麼有什麼辦法解決呢(聯繫下處理inline—block佈局問題的方式)?ide
font-size: 0
font-size
能夠控制其大小;white-space: nowrap
white-space: pre-wrap
試試list-style-position: outside;
而後容器ul設置margin囉)學無止境,積累點滴;把小簡單變成大簡單。