CSS анимация - сдвиньте строку слева направо рядом с заголовком

1

Удивление, если я смогу получить помощь/направление...

В принципе, я строю свой портфолио. Здесь работа продолжается, это не закончено! https://reenaverma.github.io/

В основном, когда вы прокручиваете страницу вниз, вы увидите, что серая линия перемещается слева, в середину экрана. В основном это анимация, которая будет сопровождать название на свитке.

Я в основном хочу, чтобы серая линия остановилась в начале каждого заголовка. Поэтому для "о reena" он должен остановиться до "a" (не под ним).

Я хотел знать, как лучше всего это достичь? До сих пор соответствующий код ниже. Я уже получил некоторые из этих google и stackoverflow.

Я полагаю, что я мог бы удалить заголовок перед div, (так что анимация сидит в div слева от названия). И используйте animate.js fadein/slidein. Но я просто хотел знать, есть ли лучший/правильный способ сделать это?

HTML

<section class="section-white">
        <div class="container">
          <div class="flex-grid">
            <div class="col-white">
              <h2><span>about reena</span>
                <div class="line"></div>
              </h2>
              <!-- <div id="trainMotion">
                <img src="http://i.imgur.com/uKxkshD.png" alt="" 
                class="line">

              <p>A Full Stack Developer etc etc etc...</p>
            </div>
          </div>
        </div>
      </section>

CSS:

.line {
 display: block;
 position: relative;
 margin: 0 auto;
 height: 3px;
 background-color: #ccc;
 width: 150px;
 left: -300px;
 transform: translateX(-50%);
}

JAVASCRIPT

$(window).on('scroll',function(){
  const trainPosition = Math.round($(window).scrollTop() / 
$(window).height() * 100);
$('.line').css('transform','translateX('+(trainPosition-30)+'%)');
});

Спасибо!

Теги:
animation
jquery-animate

2 ответа

1

Вы можете разделить контейнер <h2> на две части. И добавьте контейнер анимации рядом с заголовком, убедившись, что анимация ограничена только этим контейнером.

Я добавляю ссылку на код, которая может помочь. Ссылка на сайт

Изображение 174551

В этом случае я ограничил ширину контейнера анимации. Вы можете синхронизировать время с JS.

  • 0
    Хорошо, спасибо, я попробую. Так что в основном держите строку слева в div, а затем на эффекте прокрутки через JS ...
0

Вы хотите играть со значениями в transform: translateX(-50%); в вашем CSS и +(trainPosition-30)+'%) в вашем JS, чтобы достичь целевых координат, которые идеально подходят для вашего проекта. Если ваше значение translateX является исходной позицией, то при прокрутке вы добавляете дополнительные 30%.

Я не знаю, что это будет самый чистый вариант, но вы можете поэкспериментировать с медиа-запросами, чтобы убедиться, что на всех размерах экрана он достигнет желаемой позиции.

  • 0
    Я не думаю, что преобразование в CSS делает что-нибудь, когда я удалил его, он все еще работал как обычно ... left: -300 устанавливает начальную позицию ....

Ещё вопросы

Сообщество Overcoder
Наверх
Меню