2013-03-11 3 views
1

Я пытаюсь использовать одно фоновое изображение шириной 3 пикселя и высотой 89 пикселей. Каждая вертикальная полоса размером 1 пиксель будет фоном другого div.Почему мое фоновое изображение не меняется на элементе?

Я предположил, что переход background-position на -1px 0 и установив background-size в 1px 89px бы изменить фоновое изображение на каждом div, но это не так. Вот javascript, который устанавливает фон css.

(function() { 
jQuery(".featuredBox").each(function (index, elem) { 
    jQuery(elem).css({ 
     "background-image": "url(http://i.imgur.com/mC7DQlt.png)", 
      "background-position": -index + "px 0", 
      "background-repeate": "repeat-x", 
      "background-size": "1px 89px" 
    }); 
}); 
})(); 

Вот скрипка, которая показывает, что я пытаюсь сделать.

http://jsfiddle.net/DGWsD/

=======================================

Вот ссылка на изображение:

http://i.imgur.com/mC7DQlt.png

+2

ли вы действительно произносите его в «background-repeat»? – Pointy

+0

Это была опечатка, но это не вызывало проблемы. – ZeroDivide

ответ

4

опечатка повторить.

$(document).ready(function() { 
    $(".featuredBox").each(function (index, elem) { 
     $(elem).css({ 
      "background-image": "url(http://i.imgur.com/mC7DQlt.png)", 
      "background-position": -index + "px 0", 
      "background-repeat": "repeat-x", 
      "background-size": "1px 89px" 
     }); 
    }); 
}); 

Кроме того, нет необходимости немедленно вызывая выражения () в конце вашей функции. jQuery делает это для вас.

Updated Fiddle

1

вы не можете использовать часть изображения в качестве фона с помощью фона размер CSS свойство. background-size будет масштабировать изображение до заданного размера, он не займет его часть. и фоновая позиция будет применена ко всему фону, а не к отдельной части повторяющегося изображения. Поэтому вы можете повторить 1px * 89px 3px * 89px по горизонтали. вы можете попробовать это на http://www.w3schools.com/cssref/css3_pr_background-size.asp и еще одна вещь, чтобы заметить, что размер фона не будет работать ниже IE9.

Быстрое решение для этого использует Photoshop или краску вырезать изображение в 3-х частей 1px * 89px и вставить их в вертикальном положении, и вы можете использовать фоновое положение, Backround-повтор с соответствующим ПОлОжЕНИЕм значений повторить его горизонтально

+0

OP не хочет обрезать/вырезать изображение вообще. ?? –

+0

Да, я пытаюсь их обрезать. Конечным результатом будет три коробки, каждая из которых имеет несколько иной цвет фона. Полагаю, я мог бы использовать только три отдельных изображения, но я думал, что подход спрайтов будет лучше. – ZeroDivide

+0

@ ZeroDivide Ahh ... Понятно. –

Смежные вопросы