vue3关于滚动条的应用

vue3监听滚动条事件

在标签上加上 @scroll=‘执行的回调函数’ 即可

<div class="content" @scroll="listenScollToBottom">
</div>

vue3设置滚动条位置

在标签上加上 ref=“你用ref定义的变量名称”

<div class="content" ref="scrollContainer">
</div>
设置滚动条位置

文档 :https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollTo

  1. 不使用 options 属性
const container = scrollContainer.value;
container.scrollTo(0,container.scrollHeight - container.clientHeight)
  1. 使用 options 属性
const container = scrollContainer.value;
 container.scrollTo({
   top: container.scrollHeight - container.clientHeight,
   behavior: "smooth", // 或者 'auto'
});

不是用options 属性默认直接跳转到目标位置

options属性的区别

smooth 属性会产生动画效果,并且滚动条事件也会触发多次
instant 属性不会产生动画效果,直接跳转,滚动条事件只会触发一次
总结:通过监听滚动条来调用后台接口时,选择smooth 最好

实际应用场景

通常滚动条事件用来确定是否快到底部或顶部,然后调用后台接口
我们以一个实例来说
template部分:

<div class="content" ref="scrollContainer" @scroll="listenScollToBottom">
</div>

script部分:

//往上翻是否还有数据
let isHave = ref("false");
let curr_page = 1;
const listenScollToBottom = () => {
  console.log(scrollContainer.value.scrollTop)
  if (scrollContainer.value.scrollTop < 200 && isHave.value === "true") {
    isHave.value = "false"
    curr_page++;
    getContents();
  }
};
const getContents = () => {
  $.ajax({
    url: "https://app5609.acapp.acwing.com.cn/api/chat/get/chat-content/",
    type: "get",
    headers: {
      Authorization: "Bearer " + store.state.user.token,
    },
    data: {
      recordUserId: chooseRecord.value.recordUserId,
      page: curr_page,
    },
    success(resp) {
      if (resp.error_message === "successfully") {
        if (curr_page === 1) {
          messageContent.value.splice(
            0,
            messageContent.value.length,
            ...resp.message.records
          );
          delayScoll();
        } else {
          messageContent.value.unshift(...resp.message.records);
        }
        isHave.value = resp.isHave
      }
    },
    error() {},
  });
};

这个实例告诉我们滚动条快到顶部时调用后台接口

isHave:告诉前端还需不需要请求数据
curr_page:类似分页,当前在第几页,也就是调用了几次
getContents: 获取后台数据的函数

设计滑动到顶部调用接口的时候容易出现的问题:

  1. 调用后台接口的逻辑为区间值,不为固定的某一个值

导致的问题:向上滑动的时候会调用很多次后台接口
解决办法:将 isHave 的变量设为false,当接口调用完毕后,dom节点会撑大,滚动条自然会变化,并且isHave也会更新成后台传过来的值

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue Cropper中添加滚动条的方法是通过设置容器元素的样式来实现的。你可以使用CSS的overflow属性来控制元素内部内容的溢出方式。具体地说,如果你希望在Vue Cropper中添加垂直滚动条,你可以给容器元素添加以下样式: ```css overflow-y: scroll; ``` 这将为容器元素添加一个垂直滚动条,当内容超过容器的高度时,用户就可以通过滚动条来滚动内容。在Vue Cropper中,你可以将该样式应用于组件的父元素或者父容器元素上,以实现滚动条的添加。请注意,你可能还需要为容器元素设置一个固定的高度,以限制内容的显示区域。 需要注意的是,在Vue Cropper中添加滚动条时,你可能需要根据具体的需求调整各个元素的样式和布局。具体的实现方式可能因你的项目的具体情况而有所不同,所以请根据自己的需要进行相应的调整。引用<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vue实现拖拽的简单案例 不超出可视区域](https://blog.csdn.net/weixin_30276247/article/details/113012536)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值