滚动工具

TIP

关于 UMD 版本的用法请看这里

确定滚动容器

也许值得一读这是怎么做到的,请点击这里

import { scroll } from 'quasar'
const { getScrollTarget } = scroll

// 获取处理页面滚动的父 DOM 节点
// 通常会是一个带有 ".layout-view" class 类的元素或 "window"
getScrollTarget(DomElement)
// 返回一个 DOM 元素或者 window 对象

此方法会查找一个带有 scrolloverflow-auto 类名的父节点。如果没有找到,则认为滚动附加在 document 本身。

请注意,如果元素没有产生溢出(例如高度不够),那么简单的附加 scroll 也不会有任何效果。

一个好的容器示例:

<div class="scroll" style="height: 100px">
  ...content expanding over the 100px height from container...
</div>

获取/设置滚动位置

垂直方向的:

import { scroll } from 'quasar'
const { getVerticalScrollPosition, setVerticalScrollPosition } = scroll

// 获取一个元素/页面的滚动位置
// 将它与 `getScrollTarget()` 结合使用
getVerticalScrollPosition(scrollTargetDomElement)
// 返回一个数字(单位像素)

// 设置一个元素/页面的滚动位置:
setVerticalScrollPosition (scrollTargetElement, offset[, duration])
// 如果声明了 "duration",则滚动时会带有动画效果

水平方向的:

import { scroll } from 'quasar'
const { getHorizontalScrollPosition, setHorizontalScrollPosition } = scroll

// 获取一个元素/页面的滚动位置
// 将它与 `getScrollTarget()` 结合使用
getHorizontalScrollPosition(scrollTargetDomElement)
// 返回一个数字(单位像素)

// 设置一个元素/页面的滚动位置:
setHorizontalScrollPosition (scrollTargetElement, offset[, duration])
// 如果声明了 "duration",则滚动时会带有动画效果

滚动到某个元素

下面是一个滚动到其容器中的某个元素的示例。它不考虑容器是否在屏幕上或更复杂的情况。

import { scroll } from 'quasar'
const { getScrollTarget, setVerticalScrollPosition } = scroll

// 获取一个元素对象
function scrollToElement (el) {
  const target = getScrollTarget(el)
  const offset = el.offsetTop
  const duration = 1000
  setVerticalScrollPosition(target, offset, duration)
}

确定滚动大小

垂直方向的:

import { scroll } from 'quasar'
const { getScrollHeight } = scroll

// 获取滚动容器的内部高度 (inner height)
getScrollHeight(scrollTargetDomElement)
// 返回一个数字

console.log( getScrollHeight(el) )
// 824 (单位像素)

水平方向的:

import { scroll } from 'quasar'
const { getScrollWidth } = scroll

// 获取滚动容器的内部高度 (inner height)
getScrollWidth(scrollTargetDomElement)
// 返回一个数字

console.log( getScrollWidth(el) )
// 824 (单位像素)

确定滚动条的宽度

计算滚动条的宽度,单位像素。

import { scroll } from 'quasar'
const { getScrollbarWidth } = scroll

console.log(getScrollbarWidth())
// 16 (单位像素)