【发布时间】:2014-01-04 02:54:38
【问题描述】:
HTML 具有用于存储的data-* 属性,根据定义对元素的布局或呈现没有影响。 CSS有这样的东西吗?
这是一个例子(它实际上并没有用,只是我想要的想法):
<style type="text/css">
#foo { data-bar: 'hello world'; }
</style>
<div id="foo">i'm an element</div>
<script type="text/javascript">
var element = document.getElementById('foo'),
style = window.getComputedStyle(element),
data_bar = style.getPropertyValue('data-bar');
console.log(data_bar);
</script>
如果没有,是否有任何CSS properties 可以更改为任意值且不影响任何匹配元素?
编辑:我知道这不是 CSS 的用途,而且肯定有更好的方法来实现这一点 - 但我想知道这是否可能。
【问题讨论】:
-
你为什么需要它? css 是用于样式的,而不是用于数据的,你能给出一个用例吗?也许你需要别的东西
-
所有 CSS 属性都有作用,但有些需要设置特定的元素类型或其他样式。例如,top、left、right 等不起作用,除非元素被定位,list-style 或 table-layout 需要某些元素才能工作等。其中大多数需要一定的输入,你不能写任何你喜欢的东西作为价值,但话又说回来,你似乎不应该做你想做的任何事情。
-
这取决于应用于该元素的其他属性之间的交互,以及它具有哪些子元素以及它们的属性是什么。例如,当元素没有内联显示子元素时,在元素上设置 text-align:center 无效。就像 jm0 说的那样,如果你不是只谈论有效的属性(在浏览器之间有所不同......),任何被 CSS 解析器确定为无效的属性都会被忽略,无论是属性名称还是该属性的值。
-
你不能只添加 cmets 来定义 CSS 的含义吗?
-
很抱歉碰到一个旧线程和评论,但我认为问题是有效的。使用示例,我们有一个绑定到元素的事件侦听器,但我们希望根据它是否是移动设备来执行不同的功能。我不想将任何移动检测/用户代理嗅探脚本添加到负载中,并且最简单的方法是检查我是否可以在 CSS 中添加一个标志/属性,我可以在 Javascript 中选择它以确定我的逻辑正在使用。话虽如此,
content属性在某些情况下可以用于此目的。
标签: javascript css