display:none 小記

我們經常會使用 display:none 來隱藏我們不需要顯示的控件(不會佔用空間),但是呢,由於不同的瀏覽器對這丫的解釋不一樣會給我們帶來麻煩、下面的是我在網上看到的解釋: 
原來Firefox、Opera、IE、Chrome對display:none的理解是不一致的。
Firefox、Opera理解display:none中的內容無需在初次加載中顯示,所以它們會延後裏面的內容加載,甚至在動態改變其display屬性爲顯性的,才進行動態加載裏面的內容。
而Chrome和IE理解display:none中的內容需要事先準備裏面的內容,好在動態改變其display屬性爲顯性時立刻做出反應,所以其內容會和document其他內容一起加載。
貌似這個特性能夠用來異步加載頁面,不知道有沒有什麼可以用來設定,暫時先把這個想法記下來吧~~~

在這裏用我自己的一個例子來解釋:
需求:使用input text和image(當做按鈕使用)來模擬file的上傳,(因爲file是系統的控件,是不允許對file進行動態賦值的,再者我需要對選擇的文件進行類型的校驗,當符合時顯示正常樣式。不符合時顯示error樣式)
代碼:<input type="file" id="file_4" style="display: table-cell; width:0px; height:0px;"οnchange="document.getElementByIdx_x('file_4_upfile').value=this.value;ondeto('file_4_upfile','name_error6')"/>
<input type="text" size="20" style="width:310px;border: 1px solid #acacac;padding: 5px;" id="file_4_upfile" reg= ".*png|gif|jpg|jpeg|PNG|GIF|JPG|JPEG$"  />
<input  type="image" src="images/forms/choose-file.gif" width="75" height="21" οnclick="clickFile('file_4')"/>

紅色顯示代碼是這個問題的關鍵:當使用display:none時,在IE和火狐下是正常的。在谷歌下是完全沒有反應的。因爲谷歌是不會去識別這丫的。只能讓他顯示着。不能隱藏丫的。但是還要使用它,就只能手動修改它的大小了,這樣雖然是看不見了,但是呢他會把後面的text往右控件擠壓,怎麼辦呢。加display: table-cell;,問題解決。
一些簡單的理解奉上,以此來紀念我蛋疼的一天!!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章