Показать сообщение отдельно
  #6 (permalink)  
Старый 26.11.2011, 13:10
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

условие - размеры переданы в пикселях. в объекте указывается дельта (x-x0).

function lol(el, deltaObj/*{x:"+2",y:"-5"}*/){

    var pos = document.body.style.backgroundPosition||getComputedStyle(el,null).backgroundPosition;
    
    if(pos.match(/^(\d+)px\s(\d+)px$/))
        pos = { "x" : +RegExp.$1, "y" : +RegExp.$2 };
    else
        pos = { "x" : 0, "y" : 0 };
    
    el.style.backgroundPosition = pos.x + +(deltaObj.x||0) +"px "+(pos.y+ +(deltaObj.y||0))+"px";
}



<script>
function lol(b, c) { var a = document.body.style.backgroundPosition || getComputedStyle(b, null).backgroundPosition, a = a.match(/^(\d+)px\s(\d+)px$/) ? {x:+RegExp.$1, y:+RegExp.$2} : {x:0, y:0}; b.style.backgroundPosition = a.x + +(c.x || 0) + "px " + (a.y + +(c.y || 0)) + "px" }
</script>
<div style="background:url(http://javascript.ru/forum/images/ca_serenity/misc/logo.gif) 84px 0px;width:76px; height:76px;" onclick="lol(this, {x:10, y:5});"></div>
Ответить с цитированием