2011-06-08 27 views
1

我曾希望CSS3会带来JavaScript可读的自定义CSS属性,并影响元素的行为。像jQuery UI之类的JavaScript库通过JavaScript API传递样式选项,就像ASP.NET控件例如它应该打扰有严重AOP的严重开发人员。为什么使用CSS自定义属性不被认为是有用的,例如“-ui-resizable-handles:e se;”或者以任何格式。 AOP是CSS的全部内容,不是吗?自定义CSS属性,为什么不呢?

+1

“影响元素行为”没有。 – BoltClock 2011-06-08 04:59:08

+0

有意详细说明或指出来源? – user788364 2011-06-08 17:22:28

回答

1

也许不完全是你的意思,但确实可以节省很多时间,并提供更多的灵活性!

http://lesscss.org/

以内的动态行为 如变量,混入,操作 和功能扩展CSS。 LESS运行在客户端(IE 6+,Webkit,Firefox) 和服务器端的 上,带有Node.js.

+0

不是我正在寻找的,但有趣的是。我认为这与ern0的建议是一致的,即为了生成CSS具有更大的灵活性,但并没有解决让CSS提供超出其固定属性集的样式的问题。我经常认为css伪类如下:徘徊在思考之后,在解决一个更大的问题时不断努力。 IE的CSS“行为”不是最好的实现,但可能有一点指向它,即CSS的可扩展性。 – user788364 2011-06-08 17:10:52

+0

不回答问题。 – 2012-12-08 05:14:50

0

没错,好主意,但我认为有创造增强CSS样式表的更自然方式:生成与PHP(ASP,JSP等,无论您使用)CSS,在服务器端,只是在HTML的情况。那么,这取决于你,从什么来源获得什么CSS。

所有网页都使用动态生成的HTML页面(在AJAX之前,它是构建应用程序的唯一方式),但是使用静态CSS样式。为什么?

+0

在确定会使生成动态CSS规则变得更容易之前,我有过这样的想法。这里提出的问题是不同的,我希望有一种方法来分隔关注点,例如JS(如jQuery插件)编码器不需要在JS API中使用样式命令,例如{height:“fill “}。 – user788364 2011-06-08 17:20:52

+0

我明白了。另外,服务器端生成的/ JS操纵的CSS是一个常见的“父”神话中的“孩子”:CSS是神圣且不可触及的,它必须被编辑并存储在最终的形式中......而我们有1000个模板用于服务器端HTML构建的引擎和用于客户端HTML(DOM)操作的600 JS框架。 – ern0 2011-06-09 06:51:36

+0

很多站点都会生成CSS。但是,这并没有解决OP需要找到级联自定义CSS属性的方法。 – 2012-12-08 05:15:56

7

您可以借用一个现有的属性,该属性的值为任意字符串。想到的是font-family,counter-resetcounter-incrementanimation-name。使用counter-reset你可以做这样的事情:

CSS

* {counter-reset: inherit;} /* by default, counter-reset does NOT inherit */ 

HTML

<div style="counter-reset: my-value; "> <!-- want to set value here --> 
    <p id="para">Some text.</p> <!-- and retrieve result of cascade here --> 
</div> 

JS这里

var p_styles = window.getComputedValue(document.getElementById("para"),null); 
var p_reset_value = p_styles.counterReset; 
var p_myvalue = p_reset_value.split(" ")[0]; /* computed value will be 'my-value 0' */ 

唯一可能的兼容性问题,因为你是不太可能发生实际上在代码中使用计数器是CSS规则的不必要的副作用。另请注意,该值必须符合"identifier"的CSS定义。如果用空格给出值,它将被解释为两个不同的计数器,并且如果将其用引号括起来,则CSS值将被视为无效。

使用-webkit-区域

如果你是真正的勇者,你也可以使用-webkit-locale。由于它继承并接受单个字符串值,因此不需要上述大部分内容,包括CSS规则和JS将计算值分开,并消除了值为CSS“identifer”的限制:

HTML

<div style="-webkit-locale: 'bar foo'; "> <!-- want to set value here --> 
    <p id="para">Some text.</p> <!-- and retrieve result of cascade here --> 
</div> 

JS

var style = window.getComputedValue(document.getElementById("para"),null); 
var prop = style.webkitLocale; // "bar foo" 

希望在不久的将来,我们将有CSS层叠变量,这两轮牛车将不再是必要的。

+0

+1纯粹是因为我需要将一些功能转入现有站点(尽可能少地改变),并且需要在图像中存储可点击的url,但是需要在CSS中存储。我使用了'font-family',现在看到该网站的人可以更改图片网址和点击通过网址(如果他们有字体系列值,我只是创建了一个包含链接标签的图片脚本)。辉煌 - 谢谢:) – Archer 2014-01-06 15:24:13

相关问题