2011-01-26 57 views
3

我有一個基於javascript的網站,但我仍想讓它很容易被CSS修改。
拿這個例子...有一個div,它在通過jQuery懸停時修改了不透明度,但我希望設計師能夠選擇不透明度的值。
我想創造在CSS塊剛剛宣佈這個常量,例如:從jquery訪問css塊的屬性

.constants_someid{ 
    opacity: 0.5; 
} 

然後通過jQuery的我藉此混濁狀

var opacity = jQuery('css:constants_someid').attr('opacity'); 

我不知道,如果這是做這些常量聲明的一個好方法,但那是現在想到的。

你們想什麼?

謝謝,

回答

2

定義他們的JavaScript文件來代替:

var settings = { 
    opacity: 0.5 
}; 

那種語法應該是很容易爲設計者修改。您可以使用它作爲settings.opacity

然後,您可以使用$.extend合併由設計師與您的默認設置中定義設置:

var defaults = { 
    opacity: 0.9, 
    speed: 500 
} 

settings = $.extend({}, defaults, settings); 
// returns { opacity: 0.5, speed: 500 } 
+0

這讓我覺得,它將使設計師懶惰創造的東西,做u有什麼感想? – Jonathan 2011-01-26 12:54:57

+0

@Jonathan不知道你的意思是什麼.. – lonesomeday 2011-01-26 12:58:52

+0

我的意思是設計師都是CSS,當他們不得不編輯其他文件時,他們往往不這樣做。但我想我會用你的答案,因爲是最合適的解決方案 – Jonathan 2011-01-26 13:06:36

0

定義他們爲CSS類是因爲一個很好的方法,正如你所說,它可以更好地保持。

但是,我認爲你不應該從單個CSS constants類中提取單個屬性。相反,定義多個,有意義的類,並使用jQuery添加/刪除它們。

例如,個人的CSS類動態添加:

.faded-out { 
    opacity: 0.5; 
} 

.highlight { 
    background: yellow; 
} 

以及相關的jQuery:

jQuery('.someElements').addClass('faded-out'); 
jQuery('.otherElements').removeClass('highlight'); 
2

@lonesomdays解決方案是明顯的,而且是一個很好的一個。 這是我的;

function getConfig(className,property) 
{ 
    var dummy = $('<span class="' + className + '" />'); 
    var value = dummy.appendTo('body').css(property); 
    dummy.remove(); 
    return value; 
} 

要叫它使用getConfig('constants_someid','opacity')

工作小提琴:http://jsfiddle.net/5GWHU/