Показать сообщение отдельно
  #1 (permalink)  
Старый 16.12.2015, 16:43
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

Анимация, сбросить width
Как у дива сбросить width после второго клика, ну т.е. когда ширина уменьшается надо сбросить elem.style.width = '', чтобы следующий клик увеличивал?

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title></title>
    <style>
        div {
            height: 50px;
            width: 50px;
            background: #336699;
            cursor: pointer;
            border-radius: 5px;
            text-align: center;
            line-height: 50px;
            color: white;
            font-weight: bold;
            box-sizing: border-box;
            border: 2px solid #ccc;
        }
    </style>
</head>
<body>
    <div></div>

    <script>
        var div = document.body.children[0];

        div.dataset.width = Math.round(div.offsetWidth / document.documentElement.clientWidth * 100);
        div.innerHTML = div.dataset.width + '%';

        div.onclick = function() {
            foo(this, 75);
        };

        function foo(elem, num) {
            if (elem.isAnimate) return;

            elem.isAnimate = true;

            var i = elem.style.width ? num : +elem.dataset.width,
                direction = elem.style.width ? -1 : 1;

            function bar() {
                elem.style.width = elem.innerHTML =  i + '%';
                
                i += direction;

                (i <= num && i >= +elem.dataset.width) ? requestAnimationFrame(bar) : elem.isAnimate = null;
            }

            requestAnimationFrame(bar);
        }
    </script>
</body>
</html>
Ответить с цитированием