POST TIME:2017-11-13 00:01
在安裝調(diào)試跟版網(wǎng)手機(jī)版網(wǎng)站的時(shí)候,發(fā)現(xiàn)一個(gè)問(wèn)題,圖片無(wú)法很好的適應(yīng)屏幕,寬度可以與屏幕同寬,而高度卻沒(méi)有按比例調(diào)整,導(dǎo)致圖片看起來(lái)像被擠扁了一樣,為什么會(huì)這樣呢?
一般為了要達(dá)到圖片自適應(yīng)屏幕寬度的目的,我們?cè)趇mg標(biāo)簽的樣式中定義max-width:100%;height:auto;就可以了,可是這次設(shè)置了也沒(méi)有效果。
沒(méi)辦法,由于用手機(jī)無(wú)法查看源代碼,所以就在電腦上打開(kāi)網(wǎng)站,然后查看源代碼,發(fā)現(xiàn)文章中的圖片還是保留了PC網(wǎng)頁(yè)img標(biāo)簽原有的格式設(shè)定沒(méi)有過(guò)濾掉,從而導(dǎo)致css文件中設(shè)置的img樣式無(wú)效。如下圖:
手機(jī)網(wǎng)站一般都會(huì)把文章的HTML進(jìn)行修改,去掉一些復(fù)雜的樣式,完成這些操作的代碼是在wap.inc.php文件。
打開(kāi)wap.inc.php看了一下,發(fā)現(xiàn)了問(wèn)題。由于要過(guò)濾掉復(fù)雜的html標(biāo)示,但是還需要保留圖片,所以在過(guò)濾的時(shí)候,先把整個(gè)img標(biāo)簽給替代掉了,等過(guò)濾完之后,又替代回來(lái),這樣就導(dǎo)致了img標(biāo)簽里面的style 無(wú)法被過(guò)濾。
原因找到了,辦法也很簡(jiǎn)單,我們只需在最后輸出的時(shí)候過(guò)濾掉style=“”里面的信息,就可以讓我們的自適應(yīng)樣式設(shè)定生效了。在/include/wap.inc.php中添加這句代碼(紅字部分):
$content = preg_replace("/style=.+?[*|\&;]/i", "", $content);
$content = preg_replace("/&[a-z]{3,10};/isU", ' ', $content);
return $content;
修改完之后保存,再開(kāi)啟頁(yè)面的時(shí)候,查看源代碼,style標(biāo)簽的內(nèi)容已經(jīng)被過(guò)濾掉了,圖片已經(jīng)按比例縮小,不會(huì)出現(xiàn)比例失調(diào)的狀況了。
