2011-08-13 70 views
3

我開始在現有項目中使用TinyMCE。不幸的是,這個項目使用了一個樣式表,它爲選擇器#content td聲明CSS規則,這是設計師的錯誤決定。這些規則打破了TinyMCE主題。但是,這些規則在項目中經常應用。因此,更換它們會花費太多精力。TinyMCE:使用鏈接標記手動加載樣式表

#content td規則具有更高的優先級,因爲它們在TinyMCE從JavaScript加載它的CSS規則之前加載。如果我能夠使用<link>標籤加載TinyMCE CSS,我可以通過在項目樣式表之前加載TinyMCE樣式表來解決問題。

  • 該假設是否正確?
  • 有沒有辦法通過鏈接標籤手動加載tinyMCE樣式表?
  • 您有任何其他想法?

回答

1

使用鏈接標籤與javascript加載tinyMCE的樣式並不能解決問題,因爲問題在於CSS的特殊性。

CSS的規則表明具有最高特異性的最後一個有效規則優先。

TinyMCE的表規則的格式爲.mceitemtable td,它的特異性爲0,1,1。 您的#content td規則以ID爲特徵,其ID爲1,0,1。

因此,ID規則總是會勝過tinyMCE的基於類的規則,而不管它們加載的順序如何。

有關CSS特異性的更多詳細信息,請參閱http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html。 (除此之外:我不認爲TinyMCE通過JavaScript加載它的CSS嗎?tinyMCE的默認行爲是將編輯器加載到iframe中,並檢查iframe是否顯示通過<link>標籤加載它自己的CSS。)

+0

感謝您對特異性的詳細解釋,我還不知道。 TinyMCE不會加載到iframe中,但那會很棒。有沒有選擇?我找不到任何有關這方面的信息... – fishbone

+0

Tinymce創建了一個可滿足的iframe並隱藏了底層元素(div,textarea)。然後,iframe用於編輯內容並獲取樣式。 – Thariama

+0

在我的情況下,它不。我使用Firebug查看DOM樹,但無法看到iframe。如果TinyMCE位於iframe中,則根本沒有關於樣式的問題。 iframe行爲是可配置的嗎? – fishbone

0

您可以加載自己的樣式表,以覆蓋默認的tinymce css。看看tinymce設置content_css.

+0

我認爲覆蓋TinyMCE CSS將會是太多的努力以及替換「#content td」規則,這將是「最乾淨」的解決方案。 – fishbone

+0

這是tinymce編輯器的推薦方式 – Thariama