近日在做一個(gè)網(wǎng)頁(yè)標(biāo)簽列表,要求不能換行,一開始以為比較容易,三兩下就把代碼寫完了,并且在Firefox和Chrome瀏覽器測(cè)試通過(guò),不過(guò),在IE11一看,卻出人意料的沒有達(dá)到預(yù)期效果,li inside-block 在IE11里竟然無(wú)效!照樣換行!
li inside-block在IE11照樣換行?
li inside-block 在IE11照樣換行!為何無(wú)效?難道代碼還要hack一下IE11?但我看別人網(wǎng)站里的寫法并沒有hack IE11。
其實(shí)代碼挺簡(jiǎn)單,在Chrome和Firefox瀏覽器完全達(dá)到預(yù)期效果。
css核心代碼如下:
ul li{ display:inline-block; padding:3px 4px 3px 4px; margin:3px 3px 3px 0px; }
使用 display:inline-block 可設(shè)置 li 列舉不換行。
html核心代碼如下:
<ul> <li>tag1</li> <li>tag2</li> <li>tag3</li> </ul>
出來(lái)的效果應(yīng)該是這樣:
使用 display:inline-block 可設(shè)置 li 列舉不換行
而不是這樣:
無(wú) display:inline-block 時(shí) li 列舉換行
在京東網(wǎng)頁(yè)html代碼找到IE11無(wú)效的原因
上述問(wèn)題困擾了我好幾天,一度放棄了 li 列舉的這種代碼方式而采用 div 的寫法,但是還是心有不甘,因?yàn)?li 的寫法才是正道,且代碼更加簡(jiǎn)潔。
今天在京東網(wǎng)瀏覽手機(jī),側(cè)欄的標(biāo)簽列表吸引了我,通過(guò)查看其網(wǎng)頁(yè)html源碼,發(fā)現(xiàn)它也是用 li 列舉使用 display:inline-block 來(lái)實(shí)現(xiàn)的。
京東的標(biāo)簽列表
我決意一定要從京東的這張網(wǎng)頁(yè)上找到同時(shí)適用IE11的標(biāo)簽列表代碼。
一刻不能再等了,立即動(dòng)手。
在本地搭建的調(diào)試環(huán)境新建一html文件,把京東網(wǎng)頁(yè)的html源碼復(fù)制過(guò)來(lái),接著采用“排除法”逐步刪減代碼,直至最后只剩下這個(gè)標(biāo)簽列舉的DIV。
通過(guò)一段時(shí)間的代碼刪減工作,最后剩下的代碼越來(lái)越少,答案也應(yīng)該越來(lái)越明朗了。
功夫不負(fù)有心人,最后終于找到了答案!困擾多天的問(wèn)題終于得以解決了!
原來(lái)是網(wǎng)頁(yè) <head></head> 里需要加入這句:
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
這句話的意思是,該網(wǎng)頁(yè)不使用IE兼容性視圖。
IE兼容性視圖是使用低版本的IE瀏覽器來(lái)渲染網(wǎng)頁(yè),以免網(wǎng)頁(yè)布局產(chǎn)生錯(cuò)亂,但現(xiàn)在我們明白了,兼容性視圖會(huì)抹殺某些樣式,使網(wǎng)頁(yè)某些區(qū)塊的布局不能達(dá)到預(yù)期效果。因此,在設(shè)計(jì)網(wǎng)頁(yè)的時(shí)候,我們應(yīng)該告訴IE瀏覽器不要使用兼容性視圖來(lái)渲染此網(wǎng)頁(yè)。