javascript动画系列之模拟滚动条

前面的话

当元素内容溢出元素尺寸范围时,会出现滚动条。但由于滚动条在各浏览器下表现不同,兼容性不好。所以,模拟滚动条也是很常见的应用。本文将详细介绍滚动条模拟

原理介绍

滚动条模拟实际上和元素模拟拖拽类似。

仅仅通过范围限定,使元素只可以在单一方向上拖拽

rush:js;">
Box" style="height: 200px;width: 16px;background-color:#F5F5F5;border-radius:10px;Box-shadow:inset 0 0 6px rgba(0,0.3);position:relative;">
Box-shadow:inset 0 0 6px rgba(0,.3);border-radius:10px;position:absolute;">

通过将上面代码封装成函数,可以实现横向和纵向两种滚动条

rush:js;">
Box1" style="height: 200px;width: 16px;background-color:#F5F5F5;border-radius:10px;Box-shadow:inset 0 0 6px rgba(0,0.3);position:relative;">
Box-shadow:inset 0 0 6px rgba(0,.3);border-radius:10px;position:absolute;">
Box2" style="height: 16px;width: 200px;background-color:#F5F5F5;border-radius:10px;Box-shadow:inset 0 0 6px rgba(0,0.3);position:relative;">
Box-shadow:inset 0 0 6px rgba(0,.3);border-radius:10px;position:absolute;">

应用

下面来介绍通过滚动条实现的几个应用

数字加减

通过移动滚动条来实现数字的加减。

比例关系为:

滚动条已移动距离/滚动条可移动距离= 数字当前值/数字最大值

rush:js;">
Box" style="height: 16px;width: 200px;display:inline-block;background-color:#F5F5F5;border-radius:10px;Box-shadow:inset 0 0 6px rgba(0,0.3);position:relative;">
Box-shadow:inset 0 0 6px rgba(0,.3);border-radius:10px;position:absolute;">

元素尺寸

通过拖动滚动条来实现元素尺寸的变化,以改变元素宽度为例

。比例关系为:

滚动条已移动距离/滚动条可移动距离= 元素当前宽度/元素最大宽度

rush:js;">
Box" style="height: 16px;width: 200px;display:inline-block;background-color:#F5F5F5;border-radius:10px;Box-shadow:inset 0 0 6px rgba(0,.3);border-radius:10px;position:absolute;">
display:inline-block;">

内容滚动

通过拖动滚动条来实现内容滚动,

比例关系为:

滚动条已移动距离/滚动条可移动距离= 内容已移动距离/内容可移动距离

rush:js;">
Box" style="height: 200px;width: 16px;display:inline-block;background-color:#F5F5F5;border-radius:10px;Box-shadow:inset 0 0 6px rgba(0,0.3);position:relative;vertical-align:middle;">
Box-shadow:inset 0 0 6px rgba(0,.3);border-radius:10px;position:absolute;">
display:inline-block;line-height:30px;vertical-align:middle;position:relative;overflow:hidden;">
文字
测试文字
测试文字
测试文字
测试文字
测试文字
测试文字
测试文字
测试文字
测试文字
测试文字
测试文字

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程之家!

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...