2012-02-19 6 views
2

私はFamFamFam Silkアイコンセットをスプライトにしました。すべてのアイコンをHTMLページに表示したいと思います。問題は、1000個のアイコンが2つの.png画像に分割され、それぞれの画像がそれ自身のクラスを持つことです。たとえば、最初のアイコンはclass="silk1 ad-accept"で、最後のアイコンは2番目の.pngイメージにあり、class="silk2 ad-zoom-in"になります。とにかく、過ごした時間や可能性のある間違いはもちろんのこと、手作業でやってみるのは夢中です。すべてのCSSスプライトクラスをページに含める

私の質問は、jQueryで自動的に行うことができますか?基本的には、私は各CSSスプライトクラスをとり、liのような要素に適用するスクリプトが必要です。それは、それが使用したクラスのタイトルも適用すると非常に役に立ちます。したがって、どのアイコンがどのアイコンであるかわかります。

+0

はあなたがどんなタイプミスを修正し、それがより明確に、質問再読でした。たとえば、最初のアイコンは???、最後のアイコン???は2番目の.pngイメージにあります。??? –

+1

クラス名が書式であれば、 'silk1'または' silk2'に関連する方法で、読み込み/解析(コンマ区切りのテキスト、JSON形式の配列など)を行うことができますあなたがなぜそれをすることができなかったのか分かりません。 –

+0

@Adam Lynch、申し訳ありませんが、HTMLマークアップを削除しました。 –

答えて

0

jQueryのaddClassメソッドを使用して、任意の要素のセットにクラスを追加できます。

$(function(){ 
    $(#ads li).addClass('silk1 ad-accept'); 
}); 

あなたは実際にサイト全体で1000個のアイコンを使用していますか?あなたのすべての使用が少数のアイコンであれば、それはかなりのオーバーヘッドのようです。理想的にはスプライトの要求は少ないので、スプライトのパフォーマンスは向上しますが、800kbのスプライトに対しては8kbのアイコンに対する要求が1回よりもはるかに高速です。あなたが検討したいと思うかもしれない何か...

+0

私が取り組んでいるサイトはテンプレートであるため、バイヤーには可能な限り多くのオプションを与える必要があります。しかし、画像は圧縮されているので、両方とも312KBになります。これは悪いIMHOではありません。 –

0

これはあなたの後のものですか?

for (var i = 0; i < document.styleSheets.length; i++) { 
    var styleSheet = document.styleSheets[i]; 
    for (var j = 0; j < styleSheet.cssRules.length; j++) { 
     var rule = styleSheet.cssRules[j]; 
     if (/^\.silk\d+\./.test(rule.selectorText)) { 
      var classNameParts = /\.(silk\d+)\.(.*)$/.exec(rule.selectorText); 
      var element = document.createElement('DIV'); 
      element.className = classNameParts[1] + ' ' + classNameParts[2]; 
      element.appendChild(document.createTextNode(element.className)); 
      document.body.appendChild(element); 
     } 
    } 
}​ 

例: http://jsfiddle.net/ddAcY/

+0

ウェブサイトで実装しても機能しません。 –

+0

「動作しません」と定義してもらえますか? CSSファイルがどのように見えるかの例を挙げてください。コードをどのように実装したのでしょうか? –

+0

CSSは次のようになります:.silk1 {background:url(../ img/silk1.png); }、各アイコンについて.ad-i-accept {背景位置:xxx xxx; }。私が意味することは、$(document).ready()で起動するjQueryスクリプトファイルに入れても何も起こらないということです。コンソールには何もありません。 –

関連する問題