怎么做随滚动条滚动而滚动的层

自绘滚动条,滚动条模型,滚动条数据结构 最近作一个东西要自己做一个滚动条,决定用GDI自己绘制一个滚动条,然后加上鼠标键盘响应,做完了总结下滚动条的数据结构/模型,方便以后再用,或者方便有相同需求的同学。 本文讲述如何实现一个滚动条所用到的必要的数据结构和模型,方便自己去绘制一个滚动条,不是滚动条的入门或者使用教程。关键字: 自绘滚动条,滚动条模型,滚动条数据结构,scrollbar data structure  阅读详情

怎么做随滚动条滚动而滚动的层


解决思路:
    要使层能随滚动条的滚动而滚动,首先必须捕获到滚动条的滚动事件,或者设置一个计时器,不断检索滚动条的滚动位置,然后设置层的坐标值。
具体步骤:
方法一:用onscroll事件触发函数,设置层的坐标。

<div id="oLayer" style="position:absolute;left:30;top:60;z-index:2;background:green;width:120px;height:70px">
</div>
<script>
document.write(new Array(100).join("<br>"))
var init_pos=oLayer.style.posTop
document.body.onscroll=function(){
oLayer.style.posTop=document.body.scrollTop+init_pos
}
</script>

核心代码解释:
(1) 
document.write(new Array(100).join("<br>"))

这个是为了观看效果,插入99个<br>换行的代码,在实际应用时可以删掉。

 (2) 
var init_pos=oLayer.style.posTop

初始化变量init_pos为层oLayer的Y坐标值,posTop和pixelTop取到的值是纯数字,而top取到的是带"px"单位的字符串。可以运行下面的代码来了解一下三个属性的值的数据类型。

<div id="oLayer" style="position:absolute;left:30;top:60;">
<button onclick=’with(oLayer.style)alert("posTop:"+posTop+"/tType:"+typeof(posTop)+"/n/npixelTop:"+pixelTop+"/tType:"+typeof(pixelTop)+"/n/ntop:"+top+"/t/tType:"+typeof(top))’>点击我看结果</button>
 </div>

(3)

document.body.onscroll=function(){
oLayer.style.posTop=document.body.scrollTop+fixpos
}

这个是在文档区域拖动滚动条时执行的函数,第二行是重新设置层oLayer的Y坐标,document.body.scrollTop等于滚动滑块上端离滚动的开始点的距离,如果理解不了可以在运行一下下面的代码后单击按钮测试。

 <body onload="init_pos=oLayer.style.posTop" onscroll="oLayer.style.posTop=document.body.scrollTop+init_pos">
 <div id="oLayer" style="position:absolute;left:30;top:60;">
 <button onclick=alert(document.body.scrollTop)>点击查看document.body.scrollTop的值</button>
 </div>
 <script>
 document.write(new Array(100).join("<br>"))
 </script>

(4)

oLayer.style.posTop=document.body.scrollTop+fixpos

整句的意思就是设置层oLayer的Y坐标为文档区域的滚动条已滚动量加上层的原Y轴坐标值之和。

方法二:不知道读者有没有注意到,层oLayer的移动很突然,没有平滑移动的过程,立刻就跳到目标位置。再看看下面的代码运行效果:

<div id="oLayer" style="position:absolute;left:30;top:60;z-index:2;background:green;width:120px;height:70px">
</div>
<script>
document.write(new Array(100).join("<br>"))
//初始化变量init_pos为层oLayer的Y坐标值
var init_pos=oLayer.style.posTop
//文档区域滚动时执行scrollit()函数
document.body.onscroll=function scrollit(){ 
//层要移动到的目标坐标
var target_pos=document.body.scrollTop+init_pos
var step=5 //变量step为步长,层每次移动的距离量
//如果是往上拉滚动条,步长应为负值
if(oLayer.style.posTop>target_pos) step*=-1
oLayer.style.posTop+=step //层的Y坐标值增加
//判断层的当前Y坐标值跟目标距离间的值是否大于一个定值,是的话在50毫秒后继//续执行一次scrollit()函数,否则层停止在当前位置
if(Math.abs(oLayer.style.posTop-target_pos)>Math.abs(step)) setTimeout("scrollit()",50)
}
</script>

方法三:相对之下,层的第二种移动方式比第一种来得平滑一点,但仍然不够自然,下面再看看第三种效果。

<div id="oLayer" style="position:absolute;left:30;top:60;z-index:2;background:green;width:120px;height:70px">
</div>
<SCRIPT>
//输出99个<br>
document.write(new Array(100).join("<br>"))
//变量init_pos为层的最初Y坐标值,last_pos为层最后一层移动后的Y坐标值,在下面的函数执行之前它们是相等的
var init_pos=last_pos=oLayer.style.posTop
/*setInterval(表达式或函数,时间)的作用是每隔一段时间(单位:毫秒)之后执行一次表达式或函数,这里是每1毫秒(千分一秒)执行一次函数*/
setInterval(function(){
//目标坐标,上两段代码里解释过具体意思了
var target_pos=document.body.scrollTop+init_pos
/*步长,目标位置减上一次移动后的位置的十分一(10是经验数字,换成其它值的话效果会产很远),因为last_pos是不断接近target_pos的,所以step的绝对值也越来越小,这就是产生弹性移动的原因。最后"|0"的意思是把前面的计算结果跟0进行二进制的按位“或”运算,作用等同于Math.floor(),只是效率更高*/
var step=(target_pos-last_pos)/10|0
//以step为步长移动层
oLayer.style.posTop+=step
//更新变量last_pos的值,没有这步也不可能产生弹性移动效果
last_pos+=step
//这里的1是1毫秒
},1)
</script>

注意:本例代码只适用于IE浏览器。如果没有特别说明,关于鼠标位置判断和层的相关效果(手写的代码),都是只能运行于IE内核的浏览器。
特别提示
本例的三种方法中,第一种方法代码比较简单,但运动效果非常生硬,直接跳到目标位置;第二种方法稍好一点,层是匀速移动的;第三种方法效果比较好,模拟真实的物体运动,具有运动缓冲的效果,但因为用了setInterval方法,比较耗系统资源。

特别说明

本例的重点在于用onscroll捕获滚动条的滚动事件,并用document.body.scrollTop获取滚动条滚动的距离,最后设置层的posTop和posLeft属性,还有一个非常有用的缓冲运动的实现。
onscroll 当用户滚动对象的滚动条时触发。
scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。
posTop 设置或获取以 top 标签属性指定的单位的对象上方位置。
posLeft 设置或获取以 left 标签属性指定的单位的对象左侧位置。
JavaScript实现滚动时跟随滚动条滚动的层 在网页开发中,有时我们希望某个元素在滚动页面时能够保持固定位置,即使滚动条滚动,该元素也会跟随滚动条进行移动。首先,我们需要在HTML中创建一个包含需要跟随滚动条滚动的层的容器元素。请注意,上述代码仅演示了基本的滚动时跟随滚动条滚动的效果,你可以根据实际需求对样式和交互进行进一步的定制和改进。最后,我们使用模板字面量语法将滚动条的垂直位置应用到容器元素的样式中。现在,当页面滚动时,容器元素将会跟随滚动条进行垂直移动,从而实现滚动时的效果。,我们实现了容器元素在垂直方向上随滚动条滚动的效果。 阅读详情

相关推荐

靠近屏幕右侧随屏幕滚动的在线客服小程序

非常漂亮的一款靠近屏幕右侧随屏幕滚动的在线客服小程序

Javascript实现神奇的页面滚动控制

 Javascript实现神奇的页面滚动控制首先,当我移动鼠标到这个指示器上面时,页面就会自动向上滚动,当移动鼠标到指示器下面时,页面就会自动向下滚动。我们不得不感叹新技术带来的神奇!它让我们费了更少的力气,完成同等的工作。但是,是否能在HTML页面上制作这样一个指示器呢?答案当然是:完全可以!请跟我来。 实现思路 1、首先,准备好2个图形文件,一个代表向上,另一个代表向下。  2、然后,

wonsoft的专栏 6026

fancy-scroller:具有分层效果的精美 CSS 平滑滚动条

花式卷轴 具有分层效果的精美 CSS 平滑滚动条 特征 CSS 平滑滚动 触摸、鼠标(拖动和滚轮)和键盘交互 惯性滚动 两端回弹 对齐部分边框 滚动条支持(桌面原生,移动模拟指示器) 哈希标签导航 用法 克隆这个项目 $ git clone https://github.com/akfish/fancy-scroller.git 在 HTML 中包含脚本 <!DOCTYPE html > < head > <!-- Recommanded: disable native scroll on mobile devices --> < meta name =" viewport " content =" width=device-width,user-scalable=no " > < link rel =" stylesheet " href =" path/to/dist

楼层滚动效果(超级简单,易懂)

系列文章目录 一、楼层滚动效果图如下 1. 下图是纯Css实现的楼层滚动 2.通过Js优化后的楼层滚动如下图(🌹🌹) 二、楼层滚动(Css实现) 1.滚动原理 2.代码如下 三、楼层滚动(Js+Css优化后的楼层滚动) HTML、CSS代码如下 JS代码如下 总结(收工)

weixin_46022934的博客 1969

JS实现兼容性较好的随屏滚动效果

主要介绍了JS实现兼容性较好的随屏滚动效果,演示了固定位置显示和随屏滚动两种效果的实现方法,涉及css样式的设置与结合时间函数递归调用实现滚屏的技巧,需要的朋友可以参考下

利用gprMax与Matlab实现SFCW雷达信号的高效仿真与优化

本文详细介绍了如何结合gprMax与Matlab实现SFCW雷达信号的高效仿真与优化。通过利用gprMax获取地下场景的冲激响应,并在Matlab中运用卷积与信号处理技术,可大幅提升SFCW雷达系统仿真的效率与灵活性,为探地雷达研究与设计提供强大工具。

book8的博客 706

layer多层弹窗出现滚动条

layer多层弹窗出现滚动条

Miss_kun的专栏 1万+

F280049C_HRPWM_死区时间高精度控制与MEP技术实战解析

本文深入解析了F280049C的HRPWM模块及其基于MEP技术的死区时间高精度控制。通过实测数据与TI官方代码对比,详细阐述了DBREDHR和DBFEDHR寄存器的配置技巧、精度优化方法及常见问题调试,为电源管理和电机控制应用提供了实用的实战指南。

yolo5detector的博客 217

利用JS实现滚动条自动滚动(scrollTop)

直接上代码。主要是获取到有滚动效果的元素,然后通过改变scrollTop的值来实现自动滚动效果。interval是setInterval函数的参数,如果想停止滚动可以利用鼠标的mouseOver函数,然后利用clearInterval函数将定时器清除就可以。 function autoScroll(dom, interval) { var parentDom = document.querySelector(dom) //获取滚动元素 initInterval = setInterv.

qq_24698097的博客 5792

5.44GHz超高精度!STM32G474的HRTIM时钟配置避坑指南

本文深入解析STM32G474内置高分辨率定时器的时钟配置要点,帮助工程师避开常见陷阱。文章详细阐述了从系统时钟到5.44GHz等效时基的路径,重点分析了预分频器乘法器、周期计算溢出、影子寄存器同步等关键配置,并结合实测波形对比,确保HRTIM在电机控制、数字电源等精密应用中发挥极限性能。

book8的博客 523

Python爬虫实战(基础篇)—23—爬取微信小程序<随机目的地旅行>生成随机地址(附GUI版)

爬取微信小程序<随机目的地旅行>生成随机地址

weixin_42636075的博客 1228

html弹出层全覆盖滚动条,JS弹出层遮罩,隐藏背景页面滚动条细节优化分析

一、去除滚动条方法给body添加overflow:hidden属性即可,IE6、7下不会生效,需要给html增加overflow:hidden属性样式中需要对IE6、7及其它浏览器用hack辨别,这是因为当页面拉到下面时如果html或body被overflow:hidden,透明弹层下面的页面就会被部分正常隐藏,通过透明看到的一片的灰度,具体颜色跟平台及用户设置背景色有关。body或html去掉滚...

weixin_39761195的博客 246

2026 Claude Code 标准化前端UI SKILL——Frontend Design

是 Anthropic 官方开源的技能包,在 Claude 官方插件站中排名第一,超过 52k 的下载量。场景推荐方案快速体验批量安装官方 Skills深度设计策略叠加完整打磨流程集成终端跑claude一句话总结:Frontend Design 不是给 AI 加新能力,而是给 AI 加审美标准。它让 AI 从“能画”变成“会设计”——先想清楚风格,再动手写代码。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 3613

水平滚动条和垂直滚动条设置

1.overflow内容溢出时的设置(设定被设定对象是否显示滚动条) overflow-x水平方向内容溢出时的设置 overflow-y垂直方向内容溢出时的设置 以上三个属性设置的值为visible(默认值)、scroll、hidden、auto。 2.scrollbar-3d-light-color立体滚动条亮边的颜色(设置滚动条的颜色) scrollbar-arrow-color上下按钮上三角...

6104

Qemu开发ARM篇-5、buildroot制作根文件系统并挂载启动

在上一篇中,我们编译了kernel,并在qemu上进行了运行,但到最后,在挂载根文件系统时候,挂载失败,这是因为我们还没有根文件系统,在本章中,我们将制作根文件系统。rootfs制作方式有很多方式,如busyBoxbuildrootYocto等,在该篇章中,我们使用buildroot来制作根文件系统,主要考虑到busyBox制作完还需要手动首改一些启动配置比较繁琐,而Yocto如果电脑配置不是很好,编译时间过长,比较麻烦。

sinat_33909696的博客 2465

[PCIe5.0] 2.2.7.1 TPH Rules

TPH 机制通过硬件提示优化数据流,适用于高性能计算和存储场景。

系统固件工程师 349

html中怎么设置滚动条效果,滚动条怎么实现

HTML中如何在div中实现滚动条?HTML中如何在div中实现滚动条? CSS布局HTML小编今天和大家分享问overflow:scroll; /*任何时候都强制显示滚动条*/overflow:auto; /*需要的时候会出现滚动条*/overflow-x:auto; /*控制X方向的滚动条*/overflow-y:auto; /*控制Y方向的滚动条*/受overflow影响的必需是块元素,并且...

weixin_30316931的博客 3701

28.Anaconda安装jupyter notebook、jupyterlab及体验

手贱,不小心将Anaconda自带得jupyter给卸载了,没法子了查了好多资料都比较麻烦,所以自己摸索着重新安装,记录一下心得。说明:Anaconda没有加入环境变量,Anaconda官方建议不要将Anaconda加入环境变量,这就意味着他和python是可以共存的。

迷逝 5029

手机html设纵向滚动条,html滚动条

手机评站网今天精心准备的是《html滚动条》,下面是详解!HTML滚动条的属性scrollbar,这个有哪些属性...scrollbar,这个有哪些属性1.overflow内容溢出时的设置(设定被设定对象是否显示滚动条)overflow-x水平方向内容溢出时的设置overflow-y垂直方向内容溢出时的设置以上三个属性设置的值为visible(默认值)、scroll、hidden、auto。 2....

weixin_34072734的博客 3473

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Jquery实现div层随滚动条滚动而滚动

针对网页div层浮动,随滚动条滚动而移动,在各大门户网站上可以说随处可见。下面就应用系统实现div浮动实例说明: 应用系统展现内容时,由于内容过多,返回按钮放到页头或页末,对用户来说操作都不方面。这个实例就是实现div层“返回”按钮随滚动条滚动而滚动。 html代码: 返回

zhoupeng的专栏 8947

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

滚动条

~X~的专栏 6818

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

给层添加滚动条及滚动条样式

给层添加滚动条及滚动条样式 不是内联框架,给层添加滚动条,本人觉得比内联框架好用,以及给网页滚动条定义样式,, 红色为重点 /*(给整张页面设置滚动条模式,这个起到决定作用,如果你是,这效果就不出来了,不知道为啥,这是个头痛的问题,所以米事,别把整个页面的滚动条设定样式,或许会有复作用,不过层的滚动条这边不用改也能出来)*/ 无标题文档 body {

weibingbing_net的专栏 4283

滚动条样式

以下是一个包含所有主流浏览器滚动条样式属性的完整HTML文件,涵盖了WebKit内核浏览器和Firefox的滚动条定制: 包含的所有滚动条样式属性 WebKit浏览器 (Chrome, Safari, Edge等) - 整个滚动条 - 滚动条轨道 - 滚动条滑块 - 滚动条按钮(箭头) - 滚动条角落 - 滚动条宽度 - 滚动条颜色 - 控制溢出行为滚动条美化技巧这个示例涵盖了所有主流浏览器中可用的滚动条样式属性,您可以直接使用或根据需要修改其中的样式定义。

持续输出,励志当全栈开发人员 1190

AndroidStudio滚动条

滚动条有两种增加方式,从xml文件和从java文件,我主要记录了从xml文件增加。 有水平和竖直方向两种滚动条,同时,默认一个滚动条下面只能有一个控件,如果想要 添加多个控件,就需要在这些控件的外层增加一个布局,下面shi线性布局。 <!--水平方向的滚动条--> <HorizontalScrollView android:layout_width="w...

qq_43586051的博客 6237

html5自动出现滚动条,关于HTML中的滚动条/去掉滚动条问题本

html怎么去掉网页的滚动条body里面加 body{ overflow:scroll; overflow-x:hidden; } 这个是y轴有滚动条,x轴没有。如果是都要滚动条就去掉overflow-x:hidden;,如果是反正哪个轴要滚动条就加上overflow-x/y:scroll;整个页面滚动条就加在body里面。html 怎么去掉下边的滚动条你的盒子宽度要够一定的宽度,就会自动消失盒...

weixin_30537231的博客 2982
上一篇: JavaScript 参考教程
下一篇: 如何制作漂浮运动的广告
jdilt
博客等级 码龄21年 3粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值