首页 > 其他分享 >vue3区域滚动

vue3区域滚动

时间:2022-11-14 10:56:29浏览次数:59  
标签:nextTick const 元素 xxxRef 区域 vue3 滚动 type

vue3区域滚动

从HTML属性区域内进行滚动

属性

属性 说明
clientWidth 获取元素可视部分的宽度,即 CSS 的 width 和 padding 属性值之和,元素边框和滚动条不包括在内,也不包含任何可能的滚动区域。
clientWidth 获取元素可视部分的高度,即 CSS 的 height 和 padding 属性值之和,元素边框和滚动条不包括在内,也不包含任何可能的滚动区域。
offsetWidth 元素在页面中占据的宽度总和,包括 width、padding、border 以及滚动条的宽度。
offsetHeight 只读属性,返回该元素的像素高度,高度包含该元素的垂直内边距和边框,且是一个整数。
scrollWidth 只读属性,是元素内容宽度的一种度量,括由于溢出导致的视图中不可见内容。
scrollHeight 只读属性,是元素内容宽度的一种度量,括由于溢出导致的视图中不可见内容。
scrollTop 可以获取或设置一个元素的内容垂直滚动的像素数。
scrollLeft 可以读取或设置元素滚动条到元素左边的距离。

横向滚动

// HTML
<div ref="xxxRef"></div>
<button @click="onScroll('left')"></button>
<button @click="onScroll('right')"></button>
 
// JS
import { ref, nextTick } from 'vue'
const xxxRef = ref(null)
const onScroll = (type) => {
  nextTick(() => {
    const distance = type === 'left' ? 0 : xxxRef.value.scrollWidth;
    xxxRef.value.scrollLeft = distance
  })
}

竖向滚动

// HTML
<div ref="xxxRef"></div>
<button @click="onScroll('top')">顶部</button>
<button @click="onScroll('bottom')">底部</button>
 
// JS
import { ref, nextTick } from 'vue'
const xxxRef = ref(null)
const onScroll = (type) => {
  nextTick(() => {
    const distance = type === 'top' ? 0 : xxxRef.value.scrollHeight;
    xxxRef.value.scrollTop = distance
  })
}

滑动指定位置

  <button @click="onScroll2(200)">下滑</button>
  <button @click="onScroll3(200)">上划</button>
  <div ref="xxxRef"></div>
  
  const onScroll2 = (type: number) => {
  nextTick(() => {
    xxxRef.value.scrollTop += type
  })
}
const onScroll3 = (type: number) => {
  nextTick(() => {
    xxxRef.value.scrollTop -= type
  })
}

丝滑滚动

scroll-behavior: smooth;

标签:nextTick,const,元素,xxxRef,区域,vue3,滚动,type
From: https://www.cnblogs.com/ouyangkai/p/16888302.html

相关文章

  • PC端网页特效-元素滚动scroll系列
    PC端网页特效-元素滚动scroll系列1.scroll元素系列属性scroll翻译过来就是滚动的,我们使用scroll系列的相关属性可以动态的得到该元素的大小、滚动距离等。scroll系列......
  • vue3.2 setup语法糖,多个API解释
    前言在vue3中删除了vue2中的data函数,因此,vue3.0要在template中使用某些变量就必须在最后return出来,多次声明变量,不太方便,也不太友好。而在vue3.2版本之后,我们只需在......
  • 如何使用vite搭建vue3项目详解
    目录一:npm构建二:更改http://localhost:3000/到8080与Network路由访问三:配置vite别名(npminstall@types/node--save-dev)四:路由(npminstallvue-router@4)五:vuex(n......
  • 【图像分割】基于均值聚类+OUST+区域生长法实现MRI图像分割附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进。......
  • 14. Vue2 和 Vue3 区别
    主要分为四点:1.Vue3使用了proxy替代了Object.defineProperty实现响应式数据,所以vue3的性能得到了提升;2.Vue3可以在template模板使用多个根标......
  • 13. 说一下$set,用在Vue2还是Vue3
    $set是vue2中对象用来追加响应式数据的方法;使用格式:$set(对象,属性名,值) vue3中使用proxy替代了Object.defineProperty实现对象的响应式数据,所以在......
  • vue3 基础-API-computed
    前些章节讲了一些常用的api如setup,ref,reactive,toRef...等,并以一个todoList的小案例来体现在vue3中如何进行解耦逻辑,以setup函数作为调度的这种后端编......
  • VUE3+Element Plus的el-input获取焦点
    <template><el-inputv-model="msg"id="inputbox"type="text"style="width:500px"/><el-button@click="handleGetFocus">获取焦点</el-button></tem......
  • 2. 说一下vue2和vue3的区别 ?
    1.vue3使用proxy替换Object.defineProperty实现数据响应式,所以vue3的性能得到了提升;2.vue3使用组合式API替代了vue2中的选项式API ;3.vue3......
  • space 动态布局算法(vue3-ts、setup)
    动态布局组件演示效果<template><ulclass="space_ulflex-row":style="{'padding-top':`${hs}px`,'padding-left':`${ws}px`}"......