Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Тормозит карусель (https://javascript.ru/forum/jquery/26879-tormozit-karusel.html)

serg_29rus 26.03.2012 08:19

Тормозит карусель
 
вообщем мне нужно сделать так, чтобы блок Div начинал сколлиться, если указатель мыши приближается к его левой или правой границе ближе чем на 50 пикселов. Я нашел такое решение:
<html>

<head>
    <title>Div Scrolling</title>
    <style type="text/css">
        #mydiv{
            width: 200px;
            background-color: red;
            overflow-x: hidden;
        }
    </style>
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript">
        var timer;
        function leftScroll(){
            document.getElementById("mydiv").scrollLeft -= 1;
        }
        function rightScroll(){
            document.getElementById("mydiv").scrollLeft += 1;
        }
        function horizontalScroll(evt){
            clearInterval(timer);
            var pos = $("#mydiv").position();
            if(evt.pageX < pos['left'] + 50){
               timer = setInterval(leftScroll, 10);
           }
           if(evt.pageX > pos['left'] + $("#mydiv").width() - 50){
                timer = setInterval(rightScroll, 10);
            }
        }
        $(document).ready(function(){
            $("#mydiv").bind("mouseover", function(){
                $("#mydiv").bind("mousemove", horizontalScroll);
            });
            $("#mydiv").bind("mouseout", function(){
                clearInterval(timer);
                $("#mydiv").unbind("mousemove", horizontalScroll);
            });
        });
    </script>
</head>

<body>
    <div id="mydiv">
        aaaaaaaaaaaaaaaaaaaafffffffffffffffffffffffffffffffaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaffffffffffffffffffffffffffffffff
</body>

</html>


Но оно очень сильно тормозит. setInterval выставлен на 10 милисикунд, а он тормозит. Помогите исправить тормоза.

atlantis 26.03.2012 11:12

Хм.. Не знаю как у Вас, но по моему Ваш скрипт работает нормально, не тормозит.
http://jsfiddle.net/wxY4s/
Возможно у Вас затормаживает этот скрипт выполнение какого-либо другого скрипта(ов).

serg_29rus 26.03.2012 23:08

Уберите строчку:
clearInterval(timer);

и увидите, как не тормозит


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