近日在做一個網頁標籤列表,要求不能換行,一開始以為比較容易,三兩下就把程式碼寫完了,並且在Firefox和Chrome瀏覽器測試通過,不過,在IE11一看,卻出人意料的沒有達到預期效果,li inside-block 在IE11裡竟然無效!照樣換行!
li inside-block在IE11照樣換行?
li inside-block 在IE11照樣換行!為何無效?難道程式碼還要hack一下IE11?但我看別人網站裡的寫法並沒有hack IE11。
其實程式碼挺簡單,在Chrome和Firefox瀏覽器完全達到預期效果。
css核心程式碼如下:
ul li{ display:inline-block; padding:3px 4px 3px 4px; margin:3px 3px 3px 0px; }
使用 display:inline-block 可設定 li 列舉不換行。
html核心程式碼如下:
<ul> <li>tag1</li> <li>tag2</li> <li>tag3</li> </ul>
出來的效果應該是這樣:
使用 display:inline-block 可設定 li 列舉不換行
而不是這樣:
無 display:inline-block 時 li 列舉行
#在京東網頁html程式找到IE11無效的原因
上述問題困擾了我好幾天,一度放棄了 li 列舉的這種代碼方式而採用 div 的寫法,但是還是心有不甘,因為 li 的寫法才是正道,且代碼更加簡潔。
今天在京東網瀏覽手機,側邊欄的標籤清單吸引了我,透過查看其網頁html原始碼,發現它也是用 li 列舉使用 display:inline-block 來實現的。
京東的標籤清單
我決意一定要從京東的這張網頁上找到同時適用IE11的標籤清單程式碼。
一刻不能再等了,立即動手。
在本地搭建的調試環境新建一html文件,把京東網頁的html源碼複製過來,接著採用「排除法」逐步刪減程式碼,直到最後只剩下這個標籤列舉的DIV。
透過一段時間的程式碼刪除工作,最後剩下的程式碼越來越少,答案也應該越來越明朗了。
功夫不負有心人,最後終於找到答案了!困擾多天的問題終於得以解決了!
原來是網頁
裡需要加入這句話:這句話的意思是,該網頁不使用IE相容性視圖。
IE相容性視圖是使用低版本的IE瀏覽器來渲染網頁,以免網頁佈局產生錯亂,但現在我們明白了,相容性視圖會抹殺某些樣式,使網頁某些區塊的佈局不能達到預期效果。因此,在設計網頁的時候,我們應該告訴IE瀏覽器不要使用相容性檢視來渲染此網頁。
以上是li inside-block在IE11換行無效的原因的詳細內容。更多資訊請關注PHP中文網其他相關文章!