今天很鬱悶,本來以為馬上就能完稿了,結果被編輯打擊了一番,說書裡面的圖不夠吸引人,例項不夠多不夠漂 亮,沒有發揮彩書的特點等等,讓我從本來已經望見彼岸的興奮一**入黑暗的深淵。這篇文,是書裡面的乙個小節,正好整理到這裡,想起每天在群裡面對的很多 問題,於是覺得還是貼出來,幫助初學者能更好地入門。看來還要繼續把捨棄的最後一章完成,苦難的日子啊,又要繼續。
雖然瀏覽器可能存在著很多bug,但是並不是與自己感覺不一樣的時候就是出現了bug。產生問題的原因可能有很多種,因此製作者需要一定的方法來排查問題。
選擇乙個先進的瀏覽器進行測試是明智的做法,例如對css 2.1支援比較好的opera 9.2、firefox 2.0或者 safari 3.0,而不要使用ie 6作為唯一的測試瀏覽器,因為ie 6的問題是最多的,這非常不利於製作者(特別是初學者)理解css 2.1的 規範與判斷瀏覽器的表現是否正確。
如果在先進的瀏覽器內測試是正確的,而在ie內有問題,那基本上可以判定是ie的問題。
如果在先進的瀏覽器內的顯示不正確,那麼可以先進行如下初步判斷:
1. 拼寫是否正確
可以使用w3c的校驗,或者網頁編輯軟體的校驗功能,來檢查(x)html文件內的標籤是否配套、巢狀順序是否正確、空標籤是否閉合,css拼寫是否正確。
不正確的巢狀、錯誤的拼寫是非常常見的錯誤。
2. 是否有合適的dtd
在本書的其他章節裡,曾經不止一次地強調過doctype的重要性,不同的doctype直接影響瀏覽器對於(x)html和css的解釋。
3. css屬性瀏覽器是否支援
雖然現代瀏覽器支援絕大部分的css 2.1規範和部分的css 3規範,但是在前面的章節也介紹過,有一些css屬性還沒有被瀏覽器廣泛支援,因此在某個屬性沒有生效的時候,請確定瀏覽器是否支援。
4. 隔離問題
將有問題的地方突出出來,例如給元素加乙個醒目的邊框或者背景顏色。
如果增加了邊框就可以解決問題,那麼就是邊距重疊的問題。
如果增加了背景,但是背景不顯示,那麼有可能是特殊性或者浮動元素沒有閉合。
嘗試修改一些屬性,特別是會觸發ie的haslayout的屬性,判斷是否是ie常見的bug,讀者可以參見[16.4.3 瀏覽器常見bug]一節。
5. 建立基本測試
如果還不能解決問題,則可以複製問題檔案,然後刪除多餘的(x)html,只留下有問題的部分。
刪除(x)html內的注釋問題,看問題是否會消失。
刪除元素間的空格,看問題是否會消失。
然後分塊注釋掉樣式表,直到問題消失,則剛注釋掉的樣式即為問題所在。
6. 解決問題而不是解決現象
找到問題根源的所在並解決它是最終目,而不是為了遷就表現而使用複雜的hack來讓網頁「看上去很美」。不從根源上解決問題,當瀏覽器公升級以後,可能會遇到更多的問題。同時,hack的時候可能會造成新的問題的出現,特別是觸發或者避免觸發ie的haslayout屬性。
換一種思路也許也可以避免問題的出現,例如將元素的margin屬性取消,改為設定其父元素的padding屬性。
只有實在無法解決的時候,再使用hack。
發現問題,解決問題
這幾年的博士生涯,其實學到的不少東西。雖然並沒有做出什麼東西來,但是自身專業知識提高了不少,相比較剛入學來說。自從定了課題後,雖然課題方向也不是我自己定的。因為入學時基礎特別差,從力學轉過來,專業方向欠缺太多知識。根本無法一時半會找到合適的方向。定了課題後,看了一年的 收穫不多其實。大海浬撈針一樣,...
問題以及發現問題和解決問題
發現問題比解決問題更重要,如果發現了問題的所在,解決它僅僅是乙個時間的問題,可能有些問題永遠解決不了,但是我們最終知道它永遠解決不了也算是解決了問題。問題的實質其實是一種反差,也就是期望和實際的反差,這是好事,如果每件事都和我們期望的一致,那麼我們的腦子裡面就不會有問題了,思維就僵化了。解決問題的本...
問題以及發現問題和解決問題
發現問題比解決問題更重要,如果發現了問題的所在,解決它僅僅是乙個時間的問題,可能有些問題永遠解決不了,但是我們最終知道它永遠解決不了也算是解決了問題。問題的實質其實是一種反差,也就是期望和實際的反差,這是好事,如果每件事都和我們期望的一致,那麼我們的腦子裡面就不會有問題了,思維就僵化了。解決問題的本...