Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Обработчик события на mousemove (https://javascript.ru/forum/jquery/68469-obrabotchik-sobytiya-na-mousemove.html)

Black_Star 18.04.2017 20:04

Обработчик события на mousemove
 
Добрый день уважаемые. Подскажите пожалуйста, как написать правильно функцию которая будет следить за положением курсора на экране и смещать блоки (через transform: translateX translateY), но на ограниченное пространство для каждого блока? Вот пример https://jsfiddle.net/q3kgurd3/ но он немного не корректен, мне необходимо что б первый блок мог смещаться в приделах по Х ( -14 до 14) и по Y ( от -13 до 12), как бы следя за курсором, ну и с остальными блоками аналогично, только что б реакция отклика была скажем по +40мс (с небольшой задержкой) на каждый новый блок? :)

Dilettante_Pro 19.04.2017 12:31

Black_Star,
А как такой вариант?
$(window).mousemove(function (e) {
            mouse.x = ((e.pageX - doc.w + doc.wC) / (doc.wC / 50));
            mouse.y = ((e.pageY - doc.h + doc.hC) / (doc.hC / 50));

            bl1.css('transform', 'translate(' + mouse.x + 'px, ' + mouse.y + 'px)');
            bl2.css('transform', 'translate(' + (mouse.x * 0.8) + 'px, ' + (mouse.y * 0.8) + 'px)');
            bl3.css('transform', 'translate(' + (mouse.x * 0.6) + 'px, ' + (mouse.y * 0.6) + 'px)');
            bl4.css('transform', 'translate(' + (mouse.x * 0.4) + 'px, ' + (mouse.y * 0.4) + 'px)');

        });

правда, размеры блоков я немного подровнял
.block1
        {
            position: absolute;
            top: 50%;
            left: 50%;
            margin-left: -80px;
            margin-top: -80px;
            background: red;
            width: 160px;
            height: 160px;
        }
        
        .block2
        {
            position: absolute;
            top: 50%;
            left: 50%;
            margin-left: -60px;
            margin-top: -60px;
            background: gold;
            width: 120px;
            height: 120px;
        }
        
        .block3
        {
            position: absolute;
            top: 50%;
            left: 50%;
            margin-left: -40px;
            margin-top: -40px;
            background: pink;
            width: 80px;
            height: 80px;
        }
        
        .block4
        {
            position: absolute;
            top: 50%;
            left: 50%;
            margin-left: -20px;
            margin-top: -20px;
            background: green;
            width: 40px;
            height: 40px;
        }

Black_Star 19.04.2017 14:15

Да, спасибо. Помогло) https://codepen.io/BlackStar1991/pen/ybeaxR

Dilettante_Pro 19.04.2017 14:39

Black_Star,
Нравятся мне ваши макеты - полностью конкретизирована проблема.
Ну и конечная реализация - красиво!


Часовой пояс GMT +3, время: 03:07.