滚动实用程序
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 (它以像素为单位)