Задать вопрос
  • Как переместить и увеличить объект при прокрутке внутри блока jQuery?

    i229194964
    @i229194964
    Веб разработчик
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Scroll Animation</title>
      <style>
        body {
          margin: 0;
          padding: 0;
          height: 200vh; /* чтобы создать прокрутку */
        }
    
        .road {
          position: relative;
          height: 100vh; /* высота видимой области */
          overflow: hidden;
        }
    
        .container {
          position: absolute;
          bottom: 0;
          left: 50%;
          transform: translateX(-50%);
        }
    
        .car {
          width: 50px;
          height: 30px;
          background-color: red;
          position: absolute;
          bottom: 0;
          transition: transform 0.3s ease-in-out; /* плавный переход */
        }
      </style>
    </head>
    <body>
    
      <section class="road">
        <div class="container">
          <div class="car"></div>
        </div>
      </section>
    
      <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
      <script>
        $(document).ready(function () {
          $(window).on('scroll', function () {
            var scrollTop = $(this).scrollTop();
            var windowHeight = $(this).height();
            var car = $('.car');
            var roadHeight = $('.road').outerHeight();
    
            // Проверка, виден ли автомобиль в текущей области видимости
            if (scrollTop <= roadHeight && (scrollTop + windowHeight) >= roadHeight) {
              // Изменение размера и положения автомобиля
              var scale = 1 + (scrollTop / roadHeight); // регулируйте это значение по вашему вкусу
              var translateX = -scrollTop / 5; // регулируйте это значение по вашему вкусу
              
              car.css({
                'transform': 'translateX(' + translateX + 'px) scale(' + scale + ')'
              });
            }
          });
        });
      </script>
    </body>
    </html>
    Ответ написан
    2 комментария