原生横向滚动条 吸附 页面底部

2023-12-05 02:12

本文主要是介绍原生横向滚动条 吸附 页面底部,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

效果图
在这里插入图片描述

/** 横向滚动条 吸附 页面底部 */
export class StickyHorizontalScrollBar {constructor(options = {}) {const { el, style = '' } = optionsthis.createScrollbar(style)this.insertScrollbar(el)this.setScrollbarSize()this.onEvent()}/** 创建滚轴组件元素 */createScrollbar = (style = '') => {if (this.scrollbar) return this.scrollbarconst timer = Date.now()this.thumbId = `thumb${timer}`this.scrollbarId = `scrollbar${timer}`this.scrollbar = document.createElement('div')this.scrollbar.setAttribute('id', this.scrollbarId)this.scrollbar.innerHTML = `<style>#${this.scrollbarId} {position: sticky;width: 100%;box-shadow: 0 15px 0 0 #fff;bottom: 8px;left: 0;height: 17px;overflow-x: auto;overflow-y: hidden;margin-top: -17px;z-index: 3;${style}}#${this.scrollbarId} #${this.thumbId} {height: 17px;}</style><div id="${this.thumbId}"></div>`}/** 把滚轴组件元素插入目标元素的后面 */insertScrollbar = (el) => {this.target = document.querySelector(el)if (!this.target) throw Error('el Dom do not exit')this.targetParentElement = document.querySelector(el).parentElementthis.targetIndex = [...this.targetParentElement.children].findIndex((item) => item === this.target)this.insertIndex = this.targetIndex + 1if (!this.targetParentElement.querySelector(`#${this.scrollbarId}`)) {if (this.insertIndex >= this.targetParentElement.children.length - 1) {this.targetParentElement.appendChild(this.scrollbar)} else {this.targetParentElement.insertBefore(this.scrollbar,this.targetParentElement.children[this.insertIndex])}}return this.target}/** 设置 滚轴组件元素尺寸 */setScrollbarSize = () => {this.scrollbar.style.width = this.target.clientWidth + 'px'this.scrollbar.querySelector(`#${this.thumbId}`).style.width =this.target.scrollWidth + 'px'}/** 监听目标元素和滚轴元素的scroll和页面resize事件 */onEvent = () => {this.target.addEventListener('scroll', this.onScrollTarget)this.scrollbar.addEventListener('scroll', this.onScrollScrollbar)window.addEventListener('resize', this.setScrollbarSize)}/** 移除事件 */removeEvent = () => {this.target.removeEventListener('scroll', this.onScrollTarget)this.scrollbar.removeEventListener('scroll', this.onScrollScrollbar)window.removeEventListener('resize', this.setScrollbarSize)}onScrollTarget = (e) => {this.scrollbar.scrollLeft = e.target.scrollLeft}onScrollScrollbar = (e) => {this.target.scrollLeft = e.target.scrollLeft}
}
//用法
const stickyScrollBar= new StickyScrollBar({el: '#container',
})//重新设置滚动条尺寸
stickyScrollBar.setScrollbarSize()

这篇关于原生横向滚动条 吸附 页面底部的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/455755

相关文章

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

opencv 滚动条

参数介绍:createTrackbar( trackbarname , "hello" , &alpha_slider ,alpha_max ,  on_trackbar )  ;在标签中显示的文字(提示滑动条的用途) TrackbarName创建的滑动条要放置窗体的名字 “hello”滑动条的取值范围从 0 到 alpha_max (最小值只能为 zero).滑动后的值存放在

Weex入门教程之3,使用 Vue 开发 Weex 页面

环境安装 在这里简略地介绍下,详细看官方教程 Node.js 环境 Node.js官网 通常,安装了 Node.js 环境,npm 包管理工具也随之安装了。因此,直接使用 npm 来安装 weex-toolkit。 npm 是一个 JavaScript 包管理工具,它可以让开发者轻松共享和重用代码。Weex 很多依赖来自社区,同样,Weex 也将很多工具发布到社区方便开发者使用。

ViewPager+fragment实现切换页面(一)

如今的很多应用中都是下面有一排按钮,点击可以切换页面,滑动也可以切换页面。下面就来简单的实现这个功能。 思路 首先肯定是会用到viewpager这个控件,为了能够向下兼容,最好用v4包下的viewpager,Activity要继承FragmentActivity 其次用一个集合来存储所有的fragment页面在设置viewpager的适配器时,把存储fragment页面的list集合传入ada

【鸿蒙HarmonyOS NEXT】页面之间相互传递参数

【鸿蒙HarmonyOS NEXT】页面之间相互传递参数 一、环境说明二、页面之间相互传参 一、环境说明 DevEco Studio 版本: API版本:以12为主 二、页面之间相互传参 说明: 页面间的导航可以通过页面路由router模块来实现。页面路由模块根据页面url找到目标页面,从而实现跳转。通过页面路由模块,可以使用不同的url访问不同的页面,包括跳转到U

在项目开发中,jsp页面不会少了,如何公用页面(添加页面和修改页面)和公用样式代码(css,js)?

在项目开发中,如何公用添加页面和修改页面? <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><html><head><title>岗位设置</title><%@ include file="/WEB-INF/jsp/public/common.jspf"%></head><body> <!-- 标

CAD 多个页面在一个任务栏图标设置

命令行输入快捷键op或: 下图打对号,确定即可。