Рубрики
Без рубрики

Создание простого прокрутки параллакса с CSS3 и jQuery

Создайте свой собственный параллакс без какого плагина.

Автор оригинала: LAU TIAM KOK.

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

Если вы не хотите попасть в устаревшую «ловушку», эта статья показывает, как вы можете создать простое решение с CSS3 и jQuery. С CSS3 Фон-размер: крышка и Фоновое крепление: фиксированное Мы можем создать чистый CSS Pseudo ‘Parallax для Пример и пример из W3Schools Отказ

Я называю их «псевдо» параллакс, потому что они не совсем правильно, как Фон это Исправлено Когда вы прокрутите вверх и вниз по странице. Чтобы получить правильный эффект параллакса, Фон следует двигаться по разной скорости, когда передний план движется. Есть методика с CSS трансформировать Для достижения чистого CSS Parallax, посмотрите на это Учебное пособие Отказ Но мне трудно управлять макетом с этой техникой, поэтому мое решение – использовать JavaScript, чтобы помочь мне сделать Два вещи, чтобы сделать этот параллакс.

  1. Чтобы проверить, находится ли элемент в просмотре:
function isInViewport(node) {
  var rect = node.getBoundingClientRect()
  return (
    (rect.height > 0 || rect.width > 0) &&
    rect.bottom >= 0 &&
    rect.right >= 0 &&
    rect.top <= (window.innerHeight || document.documentElement.clientHeight) &&
    rect.left <= (window.innerWidth || document.documentElement.clientWidth)
  )
}
  1. Для расчета соотношения прокрутки каждого элемента.
$(window).scroll(function() {
  var scrolled = $(window).scrollTop()
  $('.parallax').each(function(index, element) {
    var initY = $(this).offset().top
    var height = $(this).height()
    var endY  = initY + $(this).height()

    // Check if the element is in the viewport.
    var visible = isInViewport(this)
    if(visible) {
      var diff = scrolled - initY
      var ratio = Math.round((diff / height) * 100)
      $(this).css('background-position','center ' + parseInt(-(ratio * 1.5)) + 'px')
    }
  })
})

Заключение

Результатом является просто простой параллакс, и у вас больше контроля над кодом и макетом. Вы можете посмотреть, как это работает здесь Отказ Вы можете скачать работу образец выше на Github. Дайте мне знать, что вы думаете, и какие бы ваши решения были бы вашими решениями. Все предложения, пожалуйста, оставьте комментарий ниже. Надеюсь это поможет.

Код ссылки

  1. https://www.w3schools.com/howto/howto_css_parallax.asp
  2. https://codepen.io/lemagus/pen/RWxEYz
  3. http://www.hnldesign.nl/work/code/check-if-element-is-visible/