摘要:通过监听的滚动事件,通过滚动高度来判断那个内容区在当前视口,从而操作对应的导航菜单里的状态的转换。
实现导航栏 跟随滚动, 点击导航 页面滚动到相应指定位置?
第一次写博客,还望指正不足:wo..菜鸟+1
简单的思路是:
导航菜单里, 通过给元素指定 data-socrll-id 属性, 来影射 内容区里对应的 元素。
如 data-socrll-id="page-a" 对应内容区的 元素
增加节流函数
缓存 $()元素对象
未完成 可以直接把内容元素信息筛选一遍 放到数组里, 减少 对dom对象的访问
Title
a
b
c
d
a
b
c
d
- $.fn.extend({
- navMapScroll (active, dataArt) {
- // 缓存jquey 查询的元素, 或类名
- var pageEqClass = {}
- var navEqClass = {}
- var pageList = []
- var navElems = $(this).find("["+dataArt+"]")
- //节流函数
- var thrFn = function (fn, time, maxLog) {
- var timeK = null
- var oTime = new Date().getTime()
- var execFn = function () {
- fn()
- oTime = new Date().getTime()
- }
- return function () {
- var nTime = new Date().getTime()
- clearTimeout(timeK)
- if (nTime - oTime > maxLog) {
- execFn()
- } else {
- timeK = setTimeout(execFn, time)
- }
- }
- }
- var fn = thrFn(function () {
- // 判断哪里内容区,在当前视口。对相应的导航进行相应的操作。
- let scrollTop = window.pageYOffset || window.document.documentElement.scrollTop
- for (var k in pageEqClass) {
- var elem = pageEqClass[k]
- var offsetTop = elem.offset().top
- var elemH = elem.outerHeight()
- if (offsetTop - scrollTop <= 0 && offsetTop + elemH - scrollTop > 0) {
- navEqClass[k].addClass(active)
- } else {
- navEqClass[k].removeClass(active)
- }
- }
- }, 50, 200)
- // 筛查元素
- navElems.each(function () {
- const $elem = $(this)
- const className = $elem.attr(dataArt)
- const elem = $("#" + className)
- pageList.push(elem)
- pageEqClass[className] = elem
- navEqClass[className] = $elem
- })
- $(window).on("scroll", fn)
- navElems.on("click", function () {
- // 点击菜单 滚动到对应的内容区。
- var className = $(this).attr(dataArt)
- $(window).scrollTop(pageEqClass[className].offset().top)
- })
- fn()
- return this
- }
- })
- $(".nav-list").navMapScroll("active", "data-socrll-id")
demo测试地址
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/93010.html
摘要:通过监听的滚动事件,通过滚动高度来判断那个内容区在当前视口,从而操作对应的导航菜单里的状态的转换。 实现导航栏 跟随滚动, 点击导航 页面滚动到相应指定位置?第一次写博客,还望指正不足:wo..菜鸟+1简单的思路是:导航菜单里, 通过给元素指定 data-socrll-id 属性, 来影射 内容区里对应的 元素。如 data-socrll-id=page-a 对应内容区的 元素 。然后...
摘要:二按照官方的提示解决了意思就是切到分支,自己的分支解决冲突,提交。这是和二相反向的操作页面标题无效的解决办法强类型转换的坑条件用正则返回的布尔值结果返回了条件结果也返回了。 2018/3/2 1,vue的{{}}怎么失效了项目使用了twig模板渲染 语法{{}}冲突,使用v-text v-html渲染 可以写表达式的写法 字符+变量 2,函数防抖节流封装实用的下拉加载更多代码demo...
摘要:优秀无限滚动的五项原则将无限滚动做好,并不是不可能完成的任务。提供为特定项添加书签的可能无限滚动最常见的缺点之一就是,内容出现的时候,没法添加书签。结论无限滚动实现得好的话,可以达到令人难以置信的光滑无缝体验。 本文转载自:众成翻译译者:文蔺链接:http://www.zcfy.cc/article/673原文:https://uxplanet.org/infinite-scrolli...
摘要:于是,问题来了,信息流页面,如新浪微博,是从上往下渲染的。,结构类似几个页面通过头部的水平导航刷新切换,结果有的页面有滚动条,有的没有。 绝大多数的页面间布局都是水平居中布局,主体定个宽度,然后margin: 0 auto的节奏~例如,妇女之友大淘宝的首页: .warp{ width:1190px; margin:0 auto; position:relativ...
阅读 732·2021-10-09 09:41
阅读 723·2019-08-30 15:53
阅读 1157·2019-08-30 15:53
阅读 1284·2019-08-30 11:01
阅读 1648·2019-08-29 17:31
阅读 1081·2019-08-29 14:05
阅读 1802·2019-08-29 12:49
阅读 485·2019-08-28 18:17