Показать сообщение отдельно
  #26 (permalink)  
Старый 26.07.2023, 22:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Сообщение от sayman100
с отсрочкой допустим через 5 сек
<!DOCTYPE html>
<html>

<body>
    <style>
        .XXX {
            width: 70px;
            height: 100px;
            border: 1px solid red;
            overflow: hidden;
            float: left
        }

        .X {
            font-size: 70px;
            width: 100%;
            text-align: center;
            height: 80px;
        }

        /* << вот тут 80!!!*/
    </style>
    <div id='xxx1' class='XXX'>
        <div class='X'>1</div>
        <!-- а вот тут - 10 картинок -->
        <div class='X'>2</div>
        <div class='X'>3</div>
        <div class='X'>4</div>
        <div class='X'>5</div>
        <div class='X'>6</div>
        <div class='X'>7</div>
        <div class='X'>8</div>
        <div class='X'>9</div>
        <div class='X'>10</div>
        <div class='X'>1</div>
    </div>
    <input type='button' onclick='LetsGo()' value='Старт'>
    <script>
        var oneHeight = 80, // размер одного элемента
            numImage = 10, // количество элементов
            speedStep = 0.2; // скорость изменения скорости
        function LetsGo() {
            clearInterval(LetsGo.interval);
            var x = [];
            for (var i in {
                    xxx1: 1
                }) {
                var ob = 5 + Math.floor(Math.random() * 6), // количество оборотов 5 минимум, 10 - максимум
                    nn = Math.random() * numImage;
                num = Math.floor(nn), // выигравший нумер
                    o = {
                        ob: ob,
                        num: num,
                        a: document.getElementById(i), // это наш контрол с классом XXX
                        // время=(speedStart)/speedStep
                        // расстояние=(speedStart/2)*время -арифм прогр
                        // расстояние=speedStart^2/(2*speedStep)
                        // speedStart=sqrt(расстояние*2*speedStep)
                        speed: Math.sqrt(((ob * numImage + num) * oneHeight) * speedStep * 2), // скорость
                        scr: -26 // магия, блин
                    }; // выигравший номер
                x.push(o);
            }
            LetsGo.interval = setInterval(
                function() {
                    var i = x.length,
                        complete = true;
                    while (i--) {
                        var a = x[i];
                        a.scr += a.speed;
                        if (a.speed > 2 * speedStep) {
                            a.speed -= speedStep;
                            complete = false;
                        } else if (a.speed > 0) {
                            var t = Math.round(a.scr / oneHeight);
                            if (t >= numImage) t = 0;
                            console.log(i, t, a.scr - oneHeight * t, a.ob, a.num);
                            a.scr = oneHeight * t;
                            a.speed = 0;
                            complete = false;
                        }
                        if (a.scr > (oneHeight * numImage))
                            a.scr -= oneHeight * numImage;
                        a.a.scrollTop = Math.floor(a.scr);
                    }
                    if (complete) clearInterval(LetsGo.interval)
                }, 20)
        }
        window.onload = function() {
            window.setTimeout(LetsGo, 5000)
        };
    </script>
</body>

</html>
Ответить с цитированием