2011-01-13 70 views
1

w3c規範指出寬度和高度是隱含的而不是必需的。無論如何,我總是被告知你應該把它放進去。如果我沒有記錯,他的理由是瀏覽器可能無法正確檢測圖像大小。這是真的?定義不帶高度和寬度的img標籤

回答

2

它回到了Netscape在v4和更早版本中的黑暗日子。渲染引擎是原始的,並且在構建頁面並計算出大小時不會「迴流」內容。如果您沒有指定圖片大小,一旦圖片下載並解析了高度/寬度,整個頁面的渲染就會暫停(或整個頁面的刷新將被取消)。從用戶的角度來看,這看起來很糟糕,所以規則總是要指定一個大小。

現在,引擎更好,並且可以優雅地處理未指定的圖像大小。迴流內容仍然是一個相當昂貴的操作,但從用戶的角度來看,看起來很酷,因爲隨着圖像的彈出和文本的移動,事物會滑動/流動。

1

原因是如果你不把它們放進去,瀏覽器會放入一個默認大小,下載圖像,找到實際大小,然後不得不圍繞新大小重新流動所有東西。

重新流動是昂貴的操作 - 屏幕上的渲染必須更新每個這樣的圖像。

如果提供大小,瀏覽器將放入正確大小的佔位符,並且在下載圖像後不必重新流動。

1

根據我的經驗,不提供寬度和高度標籤將導致瀏覽器呈現原始大小的圖像。

我發現這種行爲在現代瀏覽器中是一致的。另外,我總是試圖以我想要渲染的大小提供圖像,以減少使用的帶寬量並確保圖像質量。

1

我不確定瀏覽器沒有正確檢測到它,我從來沒有見過這種情況。

但是要回答你的問題,我認爲答案更多取決於你正在努力做什麼,可能會做什麼,這會產生變化。

例如,如果您要添加的圖像是需要符合預定高度/寬度的橫幅廣告,那麼通過所有方法,硬編碼高度和寬度。

但是,如果圖像是可能隨時間而變化的東西,我會建議不要編碼高度和寬度,因爲這很可能意味着新圖像(如果不是與舊圖像相同的高度/寬度)現在會被扭曲。在動態網站上,圖像一直在變化的情況下尤其如此。