有很多方法可以實現您的目標。最簡單的方法是將靜態類設置爲嵌套的ul
元素。這是因爲它們只有在由父級的懸停事件觸發時纔可見。例如:http://jsfiddle.net/deloretta/gspnK/(注意:爲了防止父元素內部的文本「跳躍」,可以嘗試向元素添加1px的填充並在懸停時將其刪除,或集中對齊文本或任何您喜歡的方法)。
其次,更低效的方式(但有它的用途,我不會去到這裏)你可以找出這個元素有兒童和應用類給他們,像這樣:http://jsfiddle.net/deloretta/XVrr6/
理想情況下,IE7 +樣式將駐留在其自己的樣式表中(因爲IE7 +支持!important
語法),您可以使用條件註釋訪問它們。基本上,去掉border
屬性並將它們放入IE特定的樣式表中。 IE將忽略-moz-
和-webkit-
聲明並正確呈現border
屬性,而moz/webkit忽略條件註釋並呈現方塊陰影。可愛可愛。
希望這會有所幫助!
編輯 - 回覆您的初始評論:
我想我理解您的評論。如果沒有,請告訴我,我會盡力幫助。
要使這個工作與條件註釋你應該分開這兩種樣式。一個特定於IE,另一個特定於所有其他瀏覽器。你可以是這樣做的:
<link rel="stylesheet" type="text/css" href="/style.css">
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="/style_ie.css">
<![endif]-->
然後,您應該修改現有的樣式表,包含以下信息:
#nav #link1.selected > a {
padding-bottom: 10px;
margin-bottom: 0;
-webkit-border-radius: 5px 5px 0 0;
-moz-border-radius: 5px 5px 0 0;
border-radius: 5px 5px 0 0;
/*the border declaration used to be here
but we moved to another stylesheet
specifically for IE*/
-webkit-box-shadow:0px 1px 1px #f0f;
-moz-box-shadow:0px 1px 1px #f0f;
}
.static_class{
/*border used to be here*/
-webkit-box-shadow:0px 1px 1px #f0f;
-moz-box-shadow:0px 1px 1px #f0f;
}
接下來,創建一個名爲styles_ie.css
一個獨立的樣式表 - 這將容納邊界信息,我們從其他樣式表中刪除。像這樣:
#nav #link1.selected > a {
border-bottom:1px solid #f0f;
border-left:1px solid #f0f;
border-right:1px solid #f0f;
}
.static_class{
border-bottom:1px solid #f0f;
border-left:1px solid #f0f;
border-right:1px solid #f0f;
}
那麼...會發生什麼?
Internet Explorer是唯一支持條件註釋的瀏覽器。因此,當Firefox,Safari或Chrome登陸頁面時,他們會忽略註釋,因此,不要在註釋中呈現樣式錶鏈接。
當Internet Explorer着陸頁面時,它將呈現從styles.css
- 它忽略border-radius
和box-shadow
屬性等等(因爲它不理解它們)而理解的所有內容。然後它轉向條件註釋(它理解),然後加載樣式表styles_ie.css
,然後將額外樣式應用於元素。易鬆脆,檸檬榨汁:]
來源
2011-04-26 05:49:30
dan
謝謝!無論如何,要去除位於下拉菜單最底部的頂部/深色1px線?我正在使用第一種方法。 – Cofey 2011-04-26 19:10:01
@Cofey - 你在用什麼瀏覽器?你能提供一個截圖嗎?有關更多詳細信息,請參閱我的原始答案以獲取更新 – dan 2011-04-27 05:30:04
當然:你在這裏:https://img.skitch.com/20110427-bs3qetw8wf65axsdnuu2y51c9t.jpg(注意它是底部的兩個像素而不是一個)。我正在使用最新版本的Chrome,並注意到它也在Firefox 3.6中執行此操作。 – Cofey 2011-04-27 14:22:27