4

レンダリング中にブラウザで実際に使用されていないcssスタイルシートの値を取得したいと思います。

例えば:

.blur {    
  data : "Great";
}

このクラスをdivで使用するとします。

<div class = "blur"></div>

私が試したものが機能しません。

$(".blur").css("data");

期待される出力

Great

編集:申し訳ありませんが、私は前にこれについて言及しませんでした、今いくつかの混乱を引き起こしているようです。しかし、これを読んでください!

以下のコメントで述べたように、強調したいのですが、Internet Explorerでテキストシャドウを生成するためのアルゴリズムを作成しました---最良のアルゴリズムではありませんが、それでもトリックを実行します。ただし、特定の要素のtext-shadow属性にアクセスしようとしていますが、Internet Explorerはそもそも実際にはレンダリングしないため、保存しないため、スタイルシートデータにアクセスする必要があります。だから私が尋ねた質問は、IE8、IE9のtextShadowのように保存されていない「データ」に再びアクセスすることです。

4

3 に答える 3

4

HTML5データ属性にデータを保存できます。

<div class="blur" data-foo="great"></div>

そしてjQueryでそれを取得します

$('.blur').data('foo');
于 2012-12-28T20:28:14.213 に答える
3

スタイルシートタグに生でアクセスできます。これが最善の方法です。次に、 http://jsfiddle.net/V7Zmn/1/のように、探している情報のテキストを解析できます。

// You'd have to find the right style tag
document.getElementsByTagName("style")[0].innerText
// outputs  a string like:   .blur {      color: red;  data : "Great";}  

これは大きなハックのように見えますが、必要なことをよりエレガントな方法で行う方法はまだ考えられません。、より良いアプローチは、InternetExplorerのテキストシャドウの代わりにIEのフィルターのようなものを使用することです。この問題を自分で解決しようとするあなたのアプローチは、それが価値があるよりもはるかに多くの努力を要し、他のコードとの摩擦を生み出して、流れに逆らうことになると思います。

.myclass {    
  text-shadow: 2px 2px gray;
  filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray')
}

于 2012-12-28T20:36:06.730 に答える
1

ブラウザが理解できない属性を保持する義務があるかどうかはわかりません。プログラムでスタイルシートルールにアクセスする方法を示すこのコードを使用してみることができます。ただし、他の人が指摘しているように、CSSが機能したとしても、これはおそらくCSSの最善の使用法ではありません。

于 2012-12-28T20:24:49.623 に答える