2011-01-26 58 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/