真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

js怎么實(shí)現(xiàn)dom元素橫向及縱向滾動(dòng)的動(dòng)畫

本篇內(nèi)容主要講解“js怎么實(shí)現(xiàn)dom元素橫向及縱向滾動(dòng)的動(dòng)畫”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“js怎么實(shí)現(xiàn)dom元素橫向及縱向滾動(dòng)的動(dòng)畫”吧!

十多年的施甸網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整施甸建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“施甸網(wǎng)站設(shè)計(jì)”,“施甸網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

通過settimeout實(shí)現(xiàn)的滾動(dòng)動(dòng)畫,支持反復(fù)點(diǎn)擊變快

支持水平滾動(dòng)和豎直滾動(dòng),快速點(diǎn)擊會(huì)將上次未滾動(dòng)完的距離疊加,滾動(dòng)的時(shí)間不變,滾動(dòng)的速度會(huì)變快

使用方式

1、復(fù)制下方代碼;

2、導(dǎo)出對(duì)應(yīng)的方法 movingColumn - 豎直滾動(dòng)       moving--水平滾動(dòng)

3、函數(shù)接收3個(gè)參數(shù) dom: 要滑動(dòng)的元素   space: 點(diǎn)擊一次要滾動(dòng)的距離  istop/isLeft 是否向上/左滾動(dòng)

功能修改

const hz = 60 在規(guī)定時(shí)間分幾次滾動(dòng)到目標(biāo)位置 60是人肉眼可識(shí)別的刷新率

每次滾動(dòng)的時(shí)間為 settime里的1ms * hz  = 60ms

let timer:any = null // 定時(shí)器
let TargetLocation = -1 // 上一次點(diǎn)擊應(yīng)該滾動(dòng)到的目標(biāo)位置
let toltalSpace = 0 // 本次要滾動(dòng)的距離

/**
 * @info 豎直滾動(dòng)
 * @info 滾動(dòng)動(dòng)畫 hz 刷新率 可以修改滾動(dòng)的速度
 * @params dom:要滾動(dòng)的元素; space 要滾動(dòng)的距離; istop 滾動(dòng)的方向;
*/
const movingColumn = (dom:HTMLDivElement, space: number, istop:boolean) => {

  // 用戶快速點(diǎn)擊 則把上次未滾動(dòng)的距離與本次滾動(dòng)結(jié)合再一起
  if (timer && TargetLocation !== -1) {
    toltalSpace += TargetLocation - dom.scrollTop
    // 計(jì)算本次的目標(biāo)距離
    if(istop) {
      TargetLocation = dom.scrollTop + toltalSpace + space
    } else {
      TargetLocation = dom.scrollTop + toltalSpace - space
    }
  } else if (!timer) {
    toltalSpace = 0
    TargetLocation = -1
  }

  if (istop) {
    toltalSpace -= space
  } else {
    toltalSpace += space
  }

  // 獲取本次的目標(biāo)位置
  const position = dom.scrollTop
  TargetLocation = position + toltalSpace

  clearInterval(timer)
  timer = null
  const hz = 60
  let i = 1
  timer = setInterval(() => {
    dom.scrollTop = position + i * toltalSpace / hz
    ++i
    if (i >= hz) {
      clearInterval(timer)
      timer = null
      dom.scrollTop = TargetLocation // 位置修正
      toltalSpace = 0
      TargetLocation = -1
    }
  }, 1)
}


/**
 * @info 水平滾動(dòng)
 * @info 滾動(dòng)動(dòng)畫 hz 刷新率 可以修改滾動(dòng)的速度
 * @params dom:要滾動(dòng)的元素; space 要滾動(dòng)的距離; isLeft 滾動(dòng)的方向;
*/
const moving = (dom:HTMLDivElement, space: number, isLeft:boolean) => {

  // 用戶快速點(diǎn)擊 則把上次未滾動(dòng)的距離與本次滾動(dòng)結(jié)合再一起
  if (timer && TargetLocation !== -1) {
    toltalSpace += TargetLocation - dom.scrollLeft
    // 計(jì)算本次的目標(biāo)距離
    if(isLeft) {
      TargetLocation = dom.scrollLeft + toltalSpace + space
    } else {
      TargetLocation = dom.scrollLeft + toltalSpace - space
    }
  } else if (!timer) {
    toltalSpace = 0
    TargetLocation = -1
  }

  if (isLeft) {
    toltalSpace -= space
  } else {
    toltalSpace += space
  }

  // 獲取本次的目標(biāo)位置
  const position = dom.scrollLeft
  TargetLocation = position + toltalSpace

  clearInterval(timer)
  timer = null
  const hz = 60
  let i = 1
  timer = setInterval(() => {
    dom.scrollLeft = position + i * toltalSpace / hz
    ++i
    if (i >= hz) {
      clearInterval(timer)
      timer = null
      dom.scrollLeft = TargetLocation // 位置修正
      toltalSpace = 0
      TargetLocation = -1
    }
  }, 1)
}

export {
  moving,
  movingColumn
}

到此,相信大家對(duì)“js怎么實(shí)現(xiàn)dom元素橫向及縱向滾動(dòng)的動(dòng)畫”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


網(wǎng)頁名稱:js怎么實(shí)現(xiàn)dom元素橫向及縱向滾動(dòng)的動(dòng)畫
瀏覽路徑:http://weahome.cn/article/gsised.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部