Не изменяет свойство CSS
$(document).mousemove(function(logo){ var e = e || window.event; n=getComputedStyle(document.documentElement).height.slice(0,-2); s=getComputedStyle(document.documentElement).width.slice(0,-2); //alert(s + 'z' + n ); // переменные не пустые... //document.getElementById('logo_img').style.transform = 'rotateX('+ n/2-e.pageY +' deg)'; //document.getElementById('logo_img').style.transform = 'rotateY('+ -s/2-e.pageY +' deg)'; $('#logo_img').css('transform', 'rotateX('+ n/2-e.pageY +' deg)'); $('#logo_img').css('transform', 'rotateY('+ s/2-e.pageX +' deg)'); }); Я хочу сделать чтобы при движение мышкой блок двигался, и наклонялся в сторону мышки. Написал код... В итоге, он мне не изменяет свойство цсс, как будто такого элемента #logo_img нет, хотя он есть, но к нему ни чего не применяется... Проверял через алерт переменные и работает вообще mousemove, да все работает. Пробовал изменять css через jq и сам js не там не там не изменяет... |
FreeZon,
$(document).mousemove(function(e){ var n = getComputedStyle(document.documentElement).height.slice(0,-2); var s = getComputedStyle(document.documentElement).width.slice(0,-2); $('#logo_img').css('transform', 'rotateX('+ (n/2-e.pageY) +'deg)'); $('#logo_img').css('transform', 'rotateY('+ (s/2-e.pageX) +'deg)'); }); |
Пробел перед deg лишний. Это как минимум.
|
Пардон, пока отвечал, уже ответили :)
|
var logoImg = document.getElementById('logo_img'); window.onmousemove = function(e) { var values = [ 'rotateX('+ (this.innerHeight / 2 - e.pageY) + 'deg)', 'rotateY('+ (this.innerWidth / 2 - e.pageX) + 'deg)' ]; logoImg.style.transform = values.join(' '); }; |
Я хотел как у него сделать: https://daneden.me/
Только с одним лого, но у меня не получается ни чего. Чет я не то считаю.... Поможет кто ? Объясните что и как нужно считать. p.s я не хочу брать уже готовый его код я хочу понять как и что работает как вычитать по х и у объяснит кто ?... |
Видимо ни кто не знает..
|
FreeZon,
В первом приближении... как черновик для дальнейшего развития <!DOCTYPE html> <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=Edge" > <title>Untitled Page</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> <script type="text/javascript"> $(function () { $(document).mousemove(function (e) { var n = getComputedStyle(document.documentElement).height.slice(0, -2); var s = getComputedStyle(document.documentElement).width.slice(0, -2); $('#logo_img').css('transform', 'rotateY(' + ((s / 2 - e.pageX) / 10) + 'deg) rotateX(' + (( e.pageY) / 10) + 'deg)'); }); }); </script> </head> <body> <div id = 'logo_img' style="position:absolute;width:200px;height:200px;left:40%;"> <img src="http://javascript.ru/forum/image.php?u=36419&dateline=1406918590" style="position:relative;width:100%;height:100%" > </div> </body> </html> |
Цитата:
А в ротате Х ни чего вычитать не надо просто дели координаты мыши по У на чувствительность ? Объясни как все это считается формула может |
Цитата:
Цитата:
Можно сделать и вокруг середины картинки по высоте: rotateX(' + (( e.pageY - 100) / 10) + 'deg)' где -100 - половина высоты картинки. Если бы картинка была размещена в центре экрана, то можно было бы взять половину высоты экрана. Почему в одном случае (e.pageY - 100), а в другом (s / 2 - e.pageX)? Для достижения нужного визуального эффекта. Поменяйте, посмотрите, сделайте как больше нравится |
Часовой пояс GMT +3, время: 22:39. |