2012-03-01 12 views
89
width: attr(data-width); 

属性。現在は動作しません。CSS値は、私はそれはあなたがCSS <code>content</code>を設定できるのと同じように属性HTML5の<code>data-</code>を使用して、CSS値を設定することができますどのような方法があるかどうかを知りたい


HTML

<div data-width="600px"></div> 

CSS属性セレクタと理論的に

div { width: attr(data-width) } 
+1

AFAIKあなただけのCSSを使用することはできません。しかし、JavaScriptを使用して完全に可能です。 – David

+4

意味的には、これはマークアップとレイアウトの分離を破るため、悪い考えです。 –

+1

上記の問題に対する解決策が

の代わりに
を使用しているので、より良い例を見つける必要があります。現時点では、あなたの質問はアトリビュートセレクタに関して面白いと想像することができます:http://css-tricks.com/attribute-selectors/ –

答えて

69

、このような機能の予知は、確かに、あり欲しいものを取得するお手伝いをする必要があり、http://www.w3.org/TR/css3-values/#attr-notation

このfiddleは何が必要のように動作しますが、必要がありますを見て今はありません。

残念ながら、まだドラフトであり、主要なブラウザでは完全に実装されていません。

ただし、疑似要素でcontentの場合は機能しますが、

+0

はこのCSS構文です 'content:attr(data-content);それはIE8まで動作しますか? – axel

+0

アップデート - これはブラウザで使用可能な機能です。 –

+9

@CaptainHypertext 'caniuse.com'によれば、関数はまだ広くサポートされていません(擬似要素のcontent属性の文字列を除く)。 http://caniuse.com/#feat=css3-attr – ne1410s

20

はい、私はこれをテストしていません。試してみてください。

[data-width="600px"] { 
width: 600px; 
} 

http://www.w3.org/TR/CSS2/selector.html#matching-attrsあなたは

+10

OPの意味は、600pxのようなものをハードコードしたくないということです。 –

+1

確かに、私は彼らがちょうどそれをしようとしていたと仮定して、彼らは外観に賢い..を得る前にCSSを使用する前に、それゆえ質問... – frank

+0

私はこれを使用してサードパーティのスクリプトShareaholic)。モバイルでは次のボタンがオーバーフローしていましたので、[data-service = "google_plus"] {display:none}を使用して2つを削除しました。 – costumingdiary

8

あなたが作成することができますJavaScriptで後で自分のスタイルで使用できるいくつかのcss- rules、:

[data-width='1%'] { width: 1%; } 
[data-width='2%'] { width: 2%; } 
[data-width='3%'] { width: 3%; } 
... 
[data-width='100%'] { width: 100%; } 

注: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擬似セレクターを作成します:これは、あなたの(または誰か)が望んでいるものではなく、おそらく参考になるものではありません。

+0

キャッチされない例外TypeError:main.jsで1172 :1179 (匿名)main.js @:1172 (匿名)@ main.js:1179 9時02 main.jsでヌル のプロパティ '長さ' を読み込めません:48.363 –

6

現在、CSS3宣言のHTML5 data属性からいくつかの値を読み取ることができます。 CaioToOn's fiddleでは、CSSコードでdataプロパティを使用してcontentを設定できます。

残念ながら、widthheight(Google Chrome 35、Mozilla Firefox 30 & Internet Explorer 11でテスト済み)では機能しません。

しかし、data-widthdata-heightのサポートを提供するFabrice WeinbergのCSS3 attr() Polyfillがあります。ここにGitHubリポジトリがあります:cssattr.js

関連する問題

 関連する問題