位置: 编程技术 - 正文

使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法(stick function)

编辑:rootadmin

推荐整理分享使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法(stick function),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:stick function,stick with default settings,sticky memo widget,stick buttons,stick an item,stick应用,sticky模块,stick buttons,内容如对您有帮助,希望把文章链接给更多的朋友!

sticky组件,通常应用于导航条或者工具栏,当网页在某一区域滚动的时候,将导航条或工具栏这类元素固定在页面顶部或底部,方便用户快速进行这类元素提供的操作。

在这篇文章Sticky组件的改进实现提供了一个改进版的sticky组件,并将演示效果应用到了自己的博客。有了类似sticky的这种简单组件,我们就可以在利用它开发更丰富的效果,比如本文要介绍的tab导航和滚动导航。实现简单,演示效果如下:

tab导航(对应tab-sticky.html):

滚动导航(对应nav-scroll-sticky.html):

1. tab导航的实现

tab导航的需求是:在点击导航项的时候,除了切换tab内容,还要控制滚动,将要显示的tab内容置顶,并且要刚好显示在sticky元素的下边。由于demo是用bootstrap做的,bootstrap提供的tab组件非常简单好用,我们可以在tab组件提供的shown.bs.tab的事件回调里做滚动控制处理,所以这个效果实现起来比较容易:

html结构:

使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法(stick function)

2. 滚动导航实现

滚动导航相对麻烦一些,tab组件里面,只会显示与当前激活的tab项对应的tab内容,而滚动导航里面,要导航的所有内容都是已经在页面中渲染完毕的,它的需求是:

1)点击导航项的时候,控制页面滚动,自动将与点击的导航项对应的内容置顶显示,并且要刚好显示在sticky元素的下边;

2)页面滚动的时候,根据当前显示的导航内容自动给相应的导航项添加active样式。

尽管听起来复杂,但是demo中的实现还是比较容易:

html结构:

3. 总结

本文结合sticky组件,提供了2种导航效果实现,兼容IE9+,firefox以及chrome,感兴趣可以下载源码再去详细了解。在实现tab导航的时候,因为有bs的tab组件所以实现起来非常容易,也没有必要把sticky跟tab组件再封装起来形成一个新组件,毕竟效果的实现代码已经比较简单了。在实现滚动导航的时候,因为没有用tab组件,所以滚动导航的那两个需求点都是单独实现的,在实际情况中,这两个功能可以封装成2个独立的组件或者1个组件,这样就能把实现代码写的像tab导航那样简单,不过本文没有再深入去介绍这两个组件的写法,因为这不是本文主要想介绍的内容,虽然我很想这么做,后续肯定会再写博客来介绍这两个组件,简单的东西不造一下轮子,简直是浪费机会。在实现这两个效果的时候,也有2点收获:

1)firefox以及IE,先让网页,然后再刷新,虽然网页还会显示在刷新的位置,但是不会触发scroll事件,所以今后做scroll相关的组件,一定在组件初始化的时候主动掉一次scroll相关的回调;

2)getBoundingClientRect返回的rect对象相关的值,在IE和firefox下,都可能是小数,比如.,这样的数,在进行判断的时候可能会跟预期情况不符,导致一些意外的BUG,如果不是特别严谨的话,可以用Math.floor对这些值进行取整,然后再用来计算或者判断。比如滚动导航实现中,rect.top的值.,offsetTop的值是,期望是curRect.top <= offsetTop这个条件能够成立,因为小数的原因,所以它不成立。

浅谈Sticky组件的改进实现 在上一篇文章使用getBoundingClientRect方法实现简洁的sticky组件的方法介绍了一个sticky组件的简洁实现,经过这两天的思考,发现上次提供的实现还有较多

使用getBoundingClientRect方法实现简洁的sticky组件的方法 sticky组件,通常应用于导航条或者工具栏,当网页在某一区域滚动的时候,将导航条或工具栏这类元素固定在页面顶部或底部,方便用户快速进行这类

浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号 1C,C++,Java,PHP都能容忍末尾的逗号C,C++,Java中对数组赋值时,最后一个元素末尾的逗号可有可无。下面两行代码对这些语言来说是等效的。inta[]={1,2,3};/*

标签: stick function

本文链接地址:https://www.jiuchutong.com/biancheng/377447.html 转载请保留说明!

上一篇:关于JS中match() 和 exec() 返回值和属性的测试(js str.match)

下一篇:浅谈Sticky组件的改进实现(sticky memo widget)

  • 空调可以直接做费用吗
  • 算所得税要不要减去增值税
  • 冲红重开发票增值税怎么处理
  • 应收账款核销的会计处理
  • 支付境外特许权所得需要交什么税
  • 支票的填写前应检查有哪些内容
  • 分给当期投资者利润如何做会计分录?
  • 债券利息收入的增值税
  • 公司买包包送员工入可以计入什么科目?
  • 增值税一般纳税人认定标准
  • 小规模纳税人查账征收所得税税率
  • 增值税专用发票几个点
  • 年终奖缴税将有大变化
  • 工会筹备金和工会经费金额一样吗
  • 商品和服务税收编码怎么查
  • 合理损耗算入账价值吗
  • 别墅送停车位吗
  • 购进一批材料,材料已经入库
  • 给员工发放奖励计入
  • 进项税额转出会计分录月末如何结转
  • 计提职工教育经费计入什么科目
  • 费用化支出含义
  • win11如何连接网址
  • 单位缴纳工会经费的会计分录怎么做
  • win10隐藏功能大全
  • 开启浏览器模式
  • mac怎么设置桌面组件
  • 报销货物运输费需要什么凭证
  • 手动ghost还原硬盘
  • php+redis
  • 冷漠的渡鸦们,美国阿拉斯加州 (© Brian Browitt Photo/Adobe Stock)
  • 苹果最小的充电器是哪一款
  • fs209e是什么意思
  • php生成随机数字
  • java 调用go
  • php throw
  • 外汇返佣金
  • 待处理财产损益借贷方向
  • php怎么传递参数
  • 红字专用发票开具的规定
  • dl.php怎么打开
  • ts和js混用
  • 递延所得税资产和所得税费用的关系
  • vue3定义全局变量
  • 结算业务书汇票怎么写
  • 开了银行对公账户要多久
  • 商业承兑汇票如何查询
  • 其他综合收益要结转到本年利润吗
  • Simple Slug Translate 把WordPress固定链接自动翻译成英文
  • MySQL中使用什么语句来更新表中的记录
  • mongodb优点
  • 收支平衡表怎么做工厂表格
  • 劳务报酬是自行缴纳吗
  • 计提递延所得税资产影响当期利润吗
  • 税金及附加需不需要计提
  • 银行的存单丢失了可以补办吗
  • 专票信息技术服务费
  • 将自产产品用于管理部门 增值税
  • 固定资产到期后继续使用称为什么
  • 单位的对公账户有利息吗
  • 去年的暂估入库今年想把它给冲出来怎么做分录
  • 收到联营单位投入的款项98600元存入银行
  • 如何在电子税务局变更办税人员
  • 增值税相关的问题
  • 期初建账怎么做
  • 其他收益和营业外收入有什么区别
  • 暂估应付账款余额在贷方
  • 购入旧的固定资产还能一次性抵扣吗
  • 存货周转率多少属正常范围
  • win8如何调整电脑屏幕亮度
  • win2000停止服务
  • hyper-v是啥
  • win10如何关闭windows
  • win7屏幕颜色变了怎么恢复
  • cocos2dx 3.1.1 win8+eclipse环境下android游戏开发环境搭建
  • linux vim编辑命令显示行号
  • 使用node.js实现用IP地址查询天气情况
  • css实现遮罩层
  • 法律服务所与律师事务所区别
  • 西安代驾平台有哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设