2012-04-12 59 views
2

這可能不可行,但我想確認一下。更改個別元素的選定文本顏色

您可以全局更改頁面的選擇的文本高亮顯示顏色與

::selection { 
    background: #cccccc; 
} 
::-moz-selection { 
    background: #cccccc; 
} 

但有可能改變高亮顯示的顏色在JavaScript中的單個元素?

例如,如果s是一個元素的樣式屬性,你可以使用

s.color = s.backgroundColor = "#cccccc"; 

是有風格改變的元素突出顯示顏色更改文字和背景顏色?

這必須是老式的JavaScript,沒有JQuery。

編輯: 另外,由於性能,我需要改變這個元素本身。 CSS類交換表現很差。用例是,我不擁有的頁面中的每個詞都將成爲它自己的元素。在平均頁面上,通過腳本添加CSS類需要20-30秒,而更改內聯樣式可以在1以內完成。

+0

您是否需要選擇其他顏色的每個元素?或者他們會是相同的顏色/風格? – Zeta 2012-04-12 18:10:41

回答

2

僞元素和僞類不在DOM中,但可以使用類來實現你的結果。

所以像

.selectionclass::-moz-selection { 
    background: #cccccc; 
} 

增加一條規則,樣式表並添加類名selectionclass你的元素。

+0

但是,這可以通過JavaScript來完成,而不是通過向元素添加類。沒有太多細節,我必須爲頁面上的成千上萬個元素執行此操作,而添加/刪除類方法的性能遠遠低於單個元素的樣式(如果這是一個詞)。我會在這個問題上加上這個。雖然很好的方法。根據我提供的信息給解決方案+1。 – Laramie 2012-04-12 18:06:04

+0

剛剛看到您對DOM中僞元素的評論。所以判決是「不可能的」? – Laramie 2012-04-12 18:11:37

+0

不幸的是,這是不可能的。爲了對元素的僞類或僞元素進行樣式設置,您需要樣式表中的選擇器,而不是內聯樣式。對不起:/ – Zeta 2012-04-12 18:23:47