javascript Issue329:20171130 - no58。予约ボタンと电话ボタンの追従

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript Issue329:20171130 - no58。予约ボタンと电话ボタンの追従相关的知识,希望对你有一定的参考价值。

import { addClass, removeClass } from '../utils/DOM'

// スクロール位置
const getScrollPosition = () => {
  const posY = document.documentElement.scrollTop || document.body.scrollTop
  return posY
}

// ページ内のelmのY座標
const getTargetPositionY = (elm) => {
  const rect = elm.getBoundingClientRect()
  return rect.top + pageYOffset
}

export default function reserveBtnSticky() {
  const reserveBtnDOM = document.getElementById('js-reserve-btn')

  if (reserveBtnDOM) {
    const reserveBtnDOMHeight = reserveBtnDOM.getBoundingClientRect().height
    const prDOM = document.getElementById('js-shop-pr')
    const prDOMposY = getTargetPositionY(prDOM)

    let prDOMPassFlag

    // 追従ボタンがフッターに被らないためのページ最下部余白
    document.body.style.paddingBottom = `${reserveBtnDOMHeight}px`

    addEventListener('scroll', () => {
      if (getScrollPosition() >= prDOMposY) {
        prDOMPassFlag = true
      }

      if (prDOMPassFlag && (getScrollPosition() > prDOMposY)) {
        removeClass(reserveBtnDOM, 'js-reserve-btn-fadeout')
        addClass(reserveBtnDOM, 'js-reserve-btn-fadein')
      } else if (prDOMPassFlag) {
        removeClass(reserveBtnDOM, 'js-reserve-btn-fadein')
        addClass(reserveBtnDOM, 'js-reserve-btn-fadeout')
      }
    })
  }
}

以上是关于javascript Issue329:20171130 - no58。予约ボタンと电话ボタンの追従的主要内容,如果未能解决你的问题,请参考以下文章

javascript获取url信息的常见方法

javascript Issue84 - 20190620电话导线改善

javascript LRM_BP_issue

javascript Issue302:20171018 - 动画商品トライアル

javascript Issue319:20171101 - バナーとモーダルとAMP

javascript Issue15:20180705 - no79.CVエリア改善