jquery - 动态 CSS Sprite 注入(inject)

标签 jquery .net css arrays

所以这个问题的标题可能有点模棱两可,所以我会尽量简单地解释一下。

我在 .NET 中创建了一个动态图像 sprite 控件,可以拍摄任意数量的图像并将它们转换为图像 sprite。例如:

Image 1 = /images/img1.jpg
Image 2 = /images/img2.jpg
Image 3 - /images/img3.jpg

.NET 然后获取这些图像并通过使用 url 在服务器上创建一个 sprite 并作为一个图像(sprite)返回:

/DynamicSprite.ashx/?image=/images/img1.jpg&image=/images/img2.jpg&image=/images/img3.jpg

我正在使用 XML 和 jQuery 查找所有图像的来源并将它们注入(inject)到 url 字符串中。

我的问题是如何在 js 中使这个动态化,这样无论我有多少图像,js 都会即时创建我需要的 Sprite url 字符串。

因此,如果有 7 张图片,上面的 url 将有 7 个图片 url 注入(inject)其中以创建我的图片 sprite。

一个粗略的 jQuery 示例,以提供帮助:

var imageSrc = $('div a');    
var imageArray = ['image1', 'image2', 'image3', 'image4', 'image5', 'image6' , 'image7'];
imageSrc.css('background', 'url(\'/DynamicSprite.ashx/\')');

这里会发生什么:'url(\'/DynamicSprite.ashx/\')' 这样 ?image=&image= 字符串根据数组中有多少项以及如何使用索引而不是手动设置位置来获取该信息来填充,即:imageArray[0]

最佳答案

我想我明白你想要什么,但我不确定。所以这是一种制作图像源数组的方法 然后从它们输出一个背景 url

//the element to add the bg to
var imgSrc = $("div a");

//the elements to loop through
var imgLoop = $("img");

//create our array
var srcArray = new Array();

//loop through the elements
imgLoop.each(function(i){

    //grab the src of the elements
    var src = $(this).attr("src");

    //put the src into our array
    srcArray[i] = "image="+src+"&";

});

//collapse the array to a string
var images = srcArray.join("");

//set the bg image url
var bgUrl = "DynamicSprite.ashx?"+images;

//add the background
imgSrc.css("background","url("+bgUrl+")");

希望这对您有所帮助。 :)

关于jquery - 动态 CSS Sprite 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5569197/

相关文章:

javascript - 在 jQuery 的多个类上迭代多个元素

c# - 如何配置版本化实体之间的一对多/多对一关系

c# - 使用后是否有必要处理 DbCommand?

javascript - 如果没有 setTimeout,css 转换将无法运行

html - 选择方框箭头样式

使用子选择器的 CSS3 隐藏/显示过滤器按钮?

javascript - 如何从逗号分隔的字符串创建数组,将其从低到高排序,然后将其连接回逗号分隔的字符串?

javascript - 在 acf 选项卡上单击触发事件 - 如何

jquery - 在 jquery 中保存按钮状态

c# - 如何计算看起来非常接近 Winforms 控件的控件的禁用文本颜色?