滚动实用程序

TIP

有关UMD版本的使用,请参见此处.

滚动容器确定

值得阅读这里以了解是怎么做到的

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

//获取处理页面滚动的父Dom节点
//通常这是带有“.layout-view”或“window”类名的元素
getScrollTarget(DomElement) // 返回一个DOM元素(或window对象)。

此方法搜索父DOM元素,该元素附加了一个“scroll”或“overflow-auto”Quasar CSS辅助类。 如果没有找到,则认为滚动发生在文档本身上。

请注意,如果相应的元素没有溢出,简单将scroll CSS类附加到DOM元素或Vue组件上是没有效果的(例如,使用:CSSswops:hidden并且高度小于其内部内容高度)。

好容器的例子:

<!--
  Quasar CSS辅助类'overflow-hidden'和 
  style="overflow: hidden" 是等效的
-->
<div class="scroll overflow-hidden" style="height: 100px">
  ...content expanding over the 100px height from container...
</div>

获取/设置滚动位置

垂直:

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

// 获取元素或页面的滚动位置。 
// 将它与`getScrollTarget()`结合使用
getVerticalScrollPosition(scrollTargetDomElement) // returns a Number (pixels)

// 设置元素或页面的滚动位置:
setVerticalScrollPosition (scrollTargetElement, offset[, duration])
// 如果指定了“duration”,那么它将动画滚动

水平:

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

// 获取元素或页面的滚动位置。 
// 将它与`getScrollTarget()`结合使用
getHorizontalScrollPosition(scrollTargetDomElement) // returns a Number (pixels)

// 设置元素或页面的滚动位置:
setHorizontalScrollPosition (scrollTargetElement, offset[, duration])
// 如果指定了“duration”,那么它将动画滚动

滚动到元素

下面是一个使用scroll utils滚动到容器中的一个元素的示例。它不考虑容器是在屏幕上还是在更复杂的情况下。

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

// 采用元素对象(element object)
function scrollToElement (el) {
  let target = getScrollTarget(el)
  let offset = el.offsetTop - el.scrollHeight
  let duration = 1000
  setVerticalScrollPosition(target, offset, duration)
}

滚动大小确定

垂直:

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

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

console.log( getScrollHeight(el) )
// 824(它始终以像素为单位)

水平:

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

// get scrolling container inner height
getScrollWidth(scrollTargetDomElement) // 返回一个数字
console.log( getScrollWidth(el) )
// 824 (it's in pixels always)

滚动条宽度确定

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

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

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