這是一個奇怪的問題,那已經耗費了我很多小時的時間。這裏有一張照片,因爲我只能放1個鏈接:http://www.screencast.com/t/byVmPE6H。接下來的解釋。IE8中的CSS填充消失/ jquery
基本上,我需要實現的是照片中的第1點。
請注意,左側填充大於右側填充。初始填充屬性爲:
padding: 12px 15px;
(即12px垂直填充,15px水平)。
然後,通過jQuery,在頁面加載時,我設置了左填充一些值,像這樣:
$(links[0]).attr("style","padding-left : "+padding+"px;");
(我可能已經使用的CSS(),效果和問題保持不變)
這在所有瀏覽器中都能很好地工作,除IE之外,你猜對了。我不是在談論版本6或7,但只有IE 8.所以,在IE 8中,在頁面加載時,我從上面的照片中獲得第2點。
請記住,這隻發生在頁面加載。當我將鼠標指針放在鏈接上時(即觸發mouseover事件),正確的填充將跳回原位並且看起來很完美,就像在第一個鏈接中一樣(實際上第一張圖片來自IE8!)。
消除上面的jquery行不會觸發相同的行爲,15px填充是好的。在鏈接上沒有註冊「鼠標懸停」的事件處理程序。這裏只有這個CSS屬性的鼠標懸停:
#navigation li.first:hover a{
background: transparent url(../images/menu_on_left.png) left top no-repeat;
}
(即只背景圖像的變化,絕對沒有別的)
所以,當頁面加載,如果我使用jquery來改變左邊的填充,右邊的消失。在鼠標懸停時,正確的填充將彈出回到視圖中。我無法解釋爲什麼會發生這種情況。如果我找不到解決方案,我實際上正在考慮計算所有菜單項的位置並將其排列在絕對位置。聽起來真的很糟糕,我知道。
任何人都可以啓發我嗎?