LESS を使用してファイル拡張子変数を設定することはできますか?
これが私が行っていることの基本的な要約です。
背景画像にスプライトを使用し、ファイルタイプとして SVG を使用していますが、魅力的です。ただし、明らかにIE8-では機能しません。
ブラウザーがサポートしていない場合、.svg 拡張子を .png 拡張子に置き換える Modernizr の優れたチェックを使用しています。
if (!Modernizr.svg) {
jQuery('img[src$=".svg"]').each(function()
{
jQuery(this).attr('src', jQuery(this).attr('src').replace('.svg', '.png'));
});
}
問題は、私が使用しているスプライト ミックスインで次のことを行うことです。
@sprite-Grid: 23px;
.sprite(@x, @y) {
background: url(../img/sprite.svg) no-repeat;
background-position: -(@x*@sprite-Grid) -(@y*@sprite-Grid);
}
そして、すばらしい画像置換スクリプトは背景画像には適用されず、タグのみに適用されます。
理想的には、私がやろうとしているのは、次のように機能する LESS 変数を作成することです。
jQuery
if (!Modernizr.svg) {
jQuery('img[src$=".svg"]').each(function()
{
jQuery(this).attr('src', jQuery(this).attr('src').replace('.svg', '.png'));
});
less.modifyVars({
'@filetype': 'png'
});
} else {
less.modifyVars({
'@filetype': 'svg'
});
}
CSS
figure {
.sprite(0,0,@filetype);
}
@sprite-Grid: 23px;
.sprite(@x, @y, @filetype) {
background: url(../img/sprite.@filetype) no-repeat;
background-position: -(@x*@sprite-Grid) -(@y*@sprite-Grid);
}
要するに、渡される変数を作成し、ブラウザが SVG をサポートしているかどうかに依存するようにしたいと考えています。含まれている場合は「sprite.svg」に変更され、含まれていない場合は「sprite.png」に変更されます
これは何かですか?
どんな助けでも大歓迎です。