2013-08-30 2 views
4

Я не уверен, как использовать jQuery, но имеет свойство CSS3: transform: rotateКак повернуть изображение при прокрутке с помощью преобразования CSS?

его можно использовать вместе с jQuery?

transform:rotate; 
-ms-transform:rotate; 
-webkit-transform:rotate; 

JSFIDDLE

+1

Что именно вы пытаетесь сделать? – Itay

+0

Вы должны показать попытку, вы не можете сказать, пожалуйста, сделайте это для меня –

+0

поверните изображение во время прокрутки по телу –

ответ

12

Попробуйте эту скрипку:

http://jsfiddle.net/kDSqB/

Это не 100% точное в разработке полного оборота, но я думаю, что ночь будет скрипка среды.

Кода здесь:

var $cog = $('#cog'), 
$body = $(document.body), 
bodyHeight = $body.height(); 

$(window).scroll(function() { 
    $cog.css({ 
     'transform': 'rotate(' + ($body.scrollTop()/bodyHeight * 360) + 'deg)' 
    }); 
}); 
+0

+1 Я собирался использовать это решение, но вместо этого разместил один, где вращение не зависит от положения прокрутки, оно просто вращается во время прокрутки. –

-1

Что-то вроде этого, JQuery следует использовать правильный префикс CSS3. http://jsfiddle.net/g3k6h/2/

$(function() { 
    $('.gear').click(function() { 
     $(this).css('transform', 'rotate(30deg)'); 
    }); 
}); 
+0

Просто интересно ... может быть, вы можете использовать .animate() вместо этого? – Leo

+0

Это не относится к сложной части, которая синхронизирует вращение с прокруткой div. – user1618143

+0

css должен быть быстрее, поскольку на последних версиях webkit это аппаратное ускорение. – OneOfOne

1

Я начал с раствором OneOfOne и добавил анимации к нему. Начните анимацию на мероприятии scroll, закончите с mouseup. Ответ http://jsfiddle.net/g3k6h/4/

var rotation = 0; 
var interval; 
var gear = $('.gear'); 

function animate() { 
    gear.css('transform', 'rotate('+rotation+'deg)'); 
    rotation += 10; 
    rotation %= 360; 
} 
function startAnim() { 
    if (!interval) { 
     interval = setInterval(animate, 100); 
    }   
}  
function stopAnim() { 
    clearInterval(interval); 
    interval = null; 
}  
$(document).scroll(startAnim).mouseup(stopAnim); 

jamesgauld похож на мой исключением того, что величина поворота основан на положении прокрутки, где шахта просто продолжает вращаться, пока вы прокрутки, которая, как я понял вопрос.

+0

я думаю, что после прочтения комментария OP ниже я думаю, что это, скорее всего, правильное решение. – jgauld

+0

@jamesgauld, пожалуйста, не используйте ниже, ссылаясь на другой ответ, порядок ответов может быть изменен. Yo действительно означает комментарий OP в ответ OneOfOne, правильно? –

+0

извините, да это одно: http: // stackoverflow.com/questions/18540474/how-to-rotate-image-when-scrolling-using-css-transform/18540693? noredirect = 1 # comment27270528_18540538 – jgauld

5

Вот простой пример JQuery, проверьте модифицированную JSFiddle:

http://jsfiddle.net/g3k6h/5/

CSS будет обрабатывать ротацию> 360 и < 0 для меня, так что я Жду» t даже беспокоиться об этом и отрегулировать значение поворота на основе прокрутки по расстоянию. Я не беспокоился о том, чтобы попытаться объяснить полный поворот, чтобы он лучше протекал с прокруткой скорости и расстояния. Это решение зависит от jQuery, но легко может быть выполнено без него.

$(function() { 
    var rotation = 0, 
    scrollLoc = $(document).scrollTop(); 
    $(window).scroll(function() { 
    var newLoc = $(document).scrollTop(); 
    var diff = scrollLoc - newLoc; 
    rotation += diff, scrollLoc = newLoc; 
    var rotationStr = "rotate(" + rotation + "deg)"; 
    $(".gear").css({ 
     "-webkit-transform": rotationStr, 
     "-moz-transform": rotationStr, 
     "transform": rotationStr 
    }); 
    }); 
}) 
+0

Это более приятная версия моей (http://stackoverflow.com/a/18540697/1168795). – jgauld

+0

Не «Ник» как таковой, а другой. Каждому свое. Все зависит от потребностей приложения, и я не думаю, что любой из нас соответствует этим потребностям. –

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