首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

初学前端用代码实现一个网页老虎机游戏

的内置属性scrollHeight获得列表的高度; 因为整个列表向上移动到最后数字1会留在格子中,列表中全部有6个数字,我们只需要向上移动5个数字的高度即可。...如果只是滚动到最后一个数字那还是比较容易的,那我们只需要将向上移动的距离还原为0就可以了,这样子就能达到向下移动的效果。...这里我们已经实现了数字列表滚动效果,但是我们只是做了个简单的从1~6的滚动,并没有做到从头开始的效果。简单来说就是滚动得没有像效果图中那么“持久”。...随机的滚动结果是怎么实现的? 随机的滚动结果解释起来可能会比较难以理解一点。我们再回顾一下,在上面我们实现向下滚动的原理是将向上移动的距离还原为0('translateY(0))来实现的。...Tip:在前面“数字列表滚动前的要点”中我们已经介绍了startTranslateYHeight为列表向上移动的距离。

5.1K10

原生JS实现移动端滑动反弹

css部分 在列表的父盒子上设定一个 overflow:hidden属性,使超出盒子部分的列表暂时隐藏掉,后面会通过 js去实现滑动。...首次滑动 手指触摸到列表向下滑动的时候,列表应该跟着向下滑动,当手指离开屏幕的时候,列表应该停在滑动的位置。这里就会用到上面准备阶段的知识点了,不明白的可以参考上面的概念。...限制滑动区间 到上面一步,我们已经可以实现列表的滑动了,但是也存在一个问题,就是向上或者向下的时候没有限制,上下可以无限的滑动,甚至再用点力,就看不到列表了。...向下的值其实跟之前求滑动区间差不多,我们参考下图,当列表向上滑动,滑动到列表底部的时候,只要此时再向上滑动,就让它向下反弹。...="background:violet">列表九      列表

10.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

React 进阶 - 海量数据处理和其他细节

className="box" ref={this.box}> {renderList} ) } } # 虚拟列表 虚拟列表是一种长列表的解决方案...虚拟列表,在长列表滚动过程中,只有视图区域显示的是真实 DOM ,滚动过程中,不断截取视图的有效区域,让人视觉上感觉列表是在滚动,达到无限滚动的效果。...,截取初始化列表长度,这里需要 div 占位,撑起滚动条 通过监听滚动容器的 onScroll 事件,根据 scrollTop 来计算渲染区域向上偏移量 当用户向下滑动的时候,为了渲染区域,能在可视区域内...,可视区域要向上滚动,当用户向上滑动的时候,可视区域要向下滚动 通过重新计算 end 和 start 来重新渲染列表 代码实现 function VirtualList() { const [dataList...200vh" }}> ) } 将监听滚动函数做节流处理,300 毫秒触发一次。

1.3K10

详细设计一个文章页目录插件

> 其中,arCatalog-line 表示目录条,arCatalog-body 是滚动区域,dl 是滚动列表,dd 是目录子项,arCatalog-index 是目录序号,链接里放的是子目录标题...我们知道页面滚动无非就是在当前这个位置的前提下,往上滚动或者向下滚动,如果我们把 nextOnIndex 记为滚动前的索引,在根据滚动方向进行加加减减不就可以很好的减少遍历次数嘛?...首先我们要判断当前滚动向上还是向下滚动,可以根据两次滚动前后的偏移量来判断: 向上滚动 = 滚动后偏移量 < 滚动前偏移量 let lastSH = window.pageYOffset // 获取最近一次页面的滚动方向...,即中位线以下,此时目录的滚动距离将是滚动后高亮子目录的底部位置中位线的高度差,如上图 ②; 滚动后的高亮目录处于中位线以下且最后一个子目录需要贴着滚动区域底部,此时目录的滚动距离将是滚动列表底部滚动区域底部的高度差...marginTop = bodyBCR.bottom - initDlBottom } 同理,当浏览器向上滚动的时候,也能很好的得出其滚动逻辑: ?

2.4K20

mini react-window(一) 实现固定高度虚拟滚动

,实现赖加载,但是如果内容越来越多会引起大量重排和重绘虚拟列表,可视区域有限,看到的数据有限,在用户滚动时,指渲染可是区域内的内容即可,dom 少,渲染少在 github 上也有很多针对 react 的虚拟滚动的库...'odd': 'even'} style={style}> Row {index} }function App() { // 可视区的宽高 200,每一项高度 50,列表总数 1000...getStartIndexForOffset(this.props, scrollOffset) const endIndex = getEndIndexForOffset(this.props, startIndex) // 向下滚动要取最大值...,向上滚动时要取最小值,需要跟索引临界值对比 return [Math.max(0, startIndex - overscanCount), Math.min(itemCount - 1, endIndex...图片本小节我们实现了固定高度虚拟列表,代码不是很多,感兴趣的小伙伴可以自己动手实现自己的虚拟滚动库,下一小节我们继续实现其他场景下的滚动列表,如有问题欢迎留言讨论。

1.7K50

90行代码,15个元素实现无限滚动

如何在React Hook中实现无限滚动。 如何正确渲染多达10000个元素的列表。 ? 无限下拉加载技术使用户在大量成块的内容面前一直滚动查看。这种方法是在你向下滚动的时候不断加载新内容。...原理 实现一个组件,可以显示具有15个元素的固定窗口大小的n个项目的列表: 即在任何时候,无限滚动n元素上也仅存在15个DOM节点。 ?...采用relative/absolute 定位来确定滚动位置 追踪两个ref: top/bottom来决定向上/向下滚动的渲染与否 切割数据列表,保留最多15个DOM元素。...$bottomElement = useRef(); const $topElement = useRef(); 正常的无限向下滚动只需关注一个dom元素,但由于我们是固定15个dom元素渲染,需要判断向上向下滚动.../Constants'; function App() { return ( 15个元素实现无限滚动 <

2.9K20

web移动端:touchmove实现局部滚动

总结一下最近项目用到的一个功能点,具体要求如下: body中会呈现一个可滚动的长页面,在点击某个按钮的时候,会出现一个弹出框,由于弹出框的内容较长,会出现滚动条,但是要保证位于弹框下部的body在弹框滚动的时候不触发滚动事件...if(moveY < 0){ } //向下滑动 else if(moveY > 0){ } }); 移动边界的判断 A.向上滑动到上边界...true:false B.向下滑动到下边界 由于滚动区域是包裹在replyContainer里面的,所以滚动区域的初始top值为标题区域的高度,只要标题区域的高度 == 滚动区域的top值...,就代表向下滑动到下边界 hasBottom = 3.2*fontHeight >= replyListTop ?...true:false ;//title区域用rem布局,fontHeight为html字体大小 //向上滑动 if(moveY < 0 && hasTop){ $(".replyList").css

1.3K20

造一个 react-infinite-scroller 轮子

isReverse 除了向下无限滚动,我们还要考虑无限向上滚动的情况。有人就会问了:一般都是无限向下的呀,哪来的无限向上?很简单,翻找微信的聊天记录不就是无限向上滚动的嘛。...首先,在 props 加一个 isReverse 用于指定向下还是向上无限滚动。 interface Props { ... isReverse?...对于向上无限滚动,offset 的计算反而变简单了,直接 offset = scrollTop。...在 passProps 里添加 ref,开发者可以通过 ref 获取滚动元素 总结 这篇文章主要带大家过了一遍 react-infinite-scroller 的源码,从 0 1 地实现了一遍源码...) 其中 calculateTopPosition 为递归地计算元素顶部浏览器窗口顶部的距离 window 向上滚动:window.pageYOffset || doc.scrollTop 其中 doc

2.5K30

导航栏滚动吸顶并自动高亮和点击跳转锚点

实现方法 正常情况下我们点击自动定位其所在位置一般用id锚点的方式,但是这种方式有一个缺陷就是无法实现滚动条缓动效果,而且带url上还会通过hash的方式显示出ID,另外也无法实现滚动到内容所在位置自动高亮导航栏...">{item.name} {item.content} } </div...这样我们就实现了通过滚动条来控制导航栏高亮的效果了,接下了我们要实现的便是点击导航栏自动定位其所在内容。...isToTop = false;//点击锚点时滚动条是向上还是向下 //导航栏点击事件 function navClick(id){ let groupList =...获取所选导航指定内容区域位置信息 let outerItemReact = selectItem.getBoundingClientRect(); //判断导航内容是在可视区域上方还是下方,来决定滚动条是应该向上滚动还是向下滚动

10.3K40

vue+element锚点跳转+自动感应导航栏

2、关于翻页自动感应 思路 前面说了,我们是使用index来控导航栏中哪个模块高亮的 当鼠标往下滚动时让整个页面往下滚动整个页面的高度且index加一反之减一 具体实现 mouseWheel(e) { if (e.wheelDelta || e.detail) { if (e.wheelDelta > 0 || e.detail...< 0) { // 当鼠标向上滚动时触发 } if (e.wheelDelta 0) { // 当鼠标向下滚动时触发 } } } 在最外层容器中加入这个鼠标触发事件...然后就可以监听鼠标滚轮向上还是向下了 呃…想详细了解的朋友自行百度哈,这里不过多赘述 当鼠标向下滚动时我们使用 window.scrollTo(x,y); 来让页面进行滚动且让index加一反则减一...这样一来就能实现导航栏的自动感应了 但是要注重几个细节问题 第一、当你到达了顶部或者底部时需要重置你的index 第二、你加的高度变量要重置 第三、滚到底部或者顶部时需要取消终止滚动函数 以上就是自动感应导航栏的实现了

1.9K50
领券