width: attr(data-width);
Css content
を設定できるのと同じ方法で、HTML5のdata-
属性を使用してcss値を設定できる方法があるかどうかを知りたい。現在は動作しません。
HTML
<div data-width="600px"></div>
CSS
div { width: attr(data-width) }
確かに、そのような機能には、 http://www.w3.org/TR/css3-values/#attr-notation のような見方があります
この fiddle は必要なものと同じように機能するはずですが、今のところは機能しません。
残念ながら、それはまだドラフトであり、主要なブラウザに完全には実装されていません。
ただし、擬似要素のcontent
に対しては機能します。
JavaScriptを使用してcss -rules
を作成し、後でスタイルで使用できます:http://jsfiddle.net/ARTsinn/vKbda/ =
var addRule = (function (sheet) {
if(!sheet) return;
return function (selector, styles) {
if (sheet.insertRule) return sheet.insertRule(selector + " {" + styles + "}", sheet.cssRules.length);
if (sheet.addRule) return sheet.addRule(selector, styles);
}
}(document.styleSheets[document.styleSheets.length - 1]));
var i = 101;
while (i--) {
addRule("[data-width='" + i + "%']", "width:" + i + "%");
}
これにより、次のような100個の擬似セレクターが作成されます。
[data-width='1%'] { width: 1%; }
[data-width='2%'] { width: 2%; }
[data-width='3%'] { width: 3%; }
...
[data-width='100%'] { width: 100%; }
注:これは少しオフトピックであり、実際にあなた(または誰か)が望んでいるものではありませんが、役に立つかもしれません。
今日の時点で、CSS3宣言のHTML5 data
属性からいくつかの値を読み取ることができます。 CaioToOnのフィドル では、CSSコードはdata
プロパティを使用してcontent
を設定できます。
残念ながら、width
およびheight
(Googleでテスト済みChrome 35、Mozilla Firefox 30およびInternet Explorer 11では動作しません).
しかし、data-width
およびdata-height
のサポートを提供するFabrice Weinbergの CSS3 attr()Polyfill があります。 GitHubのレポジトリは cssattr.js にあります。