Не изменяет свойство 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, время: 00:48. |