2011-09-20 70 views
2

我有一個具有標籤規則的外部樣式表,使整個項目中的表單看起來更好。它們如下...爲什麼內部樣式表使用由外部樣式表覆蓋的類選擇器?

label { display:block; font-weight:bold; margin:7px 0; } 
/* For testing purposes, I also added the following. 
label { color:gold; } 

有我使用的iframe(雖然我有一個標準的ColdFusion頁面上測試,它會導致同樣的問題)具有用於標籤以下規則內部樣式表與錯誤的類。

label.error { display:inline; 
       color:red; 
       float:none; 
       padding-left:.5em; 
       vertical-align:top; } 

這些標籤當前隱藏與顯示:通過jQuery的驗證插件(在http://bassistance.de/jquery-plugins/jquery-plugin-validation/發現)無屬性。當表單字段沒有正確驗證時,會顯示標籤。當顯示標籤時,上述所有規則都可以正常工作,但顯示屬性除外。

正如你可以在頂端的帖子中看到的,問題不是那個label.error不覆蓋已經創建的規則,因爲我第一次懷疑可能是問題。

我沒有絲毫的線索爲什麼顯示屬性不能正確設置,但如果有人能幫助我,這將是很棒的!

感謝,

沮喪開發

編輯:這個問題是固定我的老闆,誰告訴我,我的CSS需要更加精細。我從父級樣式表中選取了EXACT標籤選擇器並添加了類選擇器,然後根據需要更改和添加規則。如果您有興趣瞭解更多信息,請查閱關於CSS繼承的文檔。

+0

這並不顯得CSS問題。你明確地重寫顯示:無。如果你不顯示:沒有開始,他們顯示正確嗎?如果是這樣,那麼你的javascript是一個問題,而不是CSS。 –

+0

我沒有使用CSS屬性display:none。顯示:沒有自動從jQuery驗證插件放置,我相信每個標籤的類「錯誤」。我沒有真正閱讀插件源,所以我對此不積極,但我沒有明確地使用display:none。 – TaylorPLM

+0

「這些標籤當前隱藏了jQuery的驗證插件的display:none屬性」<<您正在使用display:none,或者您需要更正您的帖子。您的CSS在運行時被您的屬性的JavaScript修改覆蓋。 –

回答

1

我認爲它可能與jQuery顯示方法(淡入淡出,顯示等),重新應用display:block使元素再次出現。因爲jQuery有自己的方式讓事情可見。你可能需要做的是不使用例如.show(),而是使用.css({display : 'inline'});使元素再次可見。

爲了確定我說的是真是假,或者在你的螢火蟲中的腳本變得可見之後,檢查應用於標籤元素的CSS。

如果你設置了的jsfiddle或發送一些鏈接或代碼示例社區能更好地建立你的問題的原因

1

我首先想到的是,jQuery驗證插件設置顯示屬性的元素,從而覆蓋你的css規則。

如果您將!important追加到您的css文件中顯示規則的末尾,您應該能夠解決此問題。這是一個非常討厭的解決方案,國際海事組織,你或許應該看看不同的方式與 jQuery.validate工作,而不是針對,但是這取決於你:)

+0

!重要的是用戶樣式表的一種方法,因此殘疾/視力受損的用戶可以覆蓋他們無法閱讀的樣式。對於由於對CSS繼承缺乏理解而引起的任何場合,或者根本就不用擔心找到問題的原因,使用此屬性是非常糟糕的做法。 – XGreen