热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

通讯录式的吸顶结果

通讯录式的吸顶结果,当前bar牢固在顶部要领一:js监听onscroll事宜完成道理吸顶的谁人bar实际上是一个定位在屏幕最上的一个元素,把下面各个区块的高度累加放到一个数组里[0

通讯录式的吸顶结果,当前bar牢固在顶部

《通讯录式的吸顶结果》

要领一: js 监听 onscroll 事宜
  • 完成道理
  1. 吸顶的谁人 bar 实际上是一个定位在屏幕最上的一个元素,把下面 各个区块的高度累加放到一个数组里 [0, 740, 990, 1310, ...]
  2. 拿当前转动体滚过的距拜别上面的数组里找对应的区间,然后将 bar 的笔墨添补进去
  3. 拿地点区间的 上限值 - 转动值 = 偏移量
  4. var fixedTop = (diff > 0 && diff <40) ? diff - 40 : 0
  5. 依据上面 fixedTop 设置偏移量 fixedDom.style.transform = translate3d(0, ${fixedTop}px, 0)
  • 详细代码以下


















猎取转动体滚过的间隔 参考链接

const el = document.scrollingElement || document.documentElement
const top = el.scrollTop

  • 题目以下
  1. 在混淆形式下,由于一切浏览器均运用 document.body.scrollTop 猎取页面的垂直转动条的位置,所以不会涌现兼容性题目。
    而在规范形式下,由于 Chrome 与 Safari 依然运用 document.body.scrollTop,而关于 document.documentElement.scrollTop 返回为 0。
  2. 趁便再说说 document.scrollingElement 这个属性。多是浏览器厂商们也以为如今的页面转动元素太乱,一会儿 BODY 一会儿 HTML,跟页面形式有关,还跟 Webkit 的遗留 BUG 有关,因而搞出来这么个东西。依据 MDN 的引见:
  3. Document 的 scrollingElement 是一个只读属性,一直指向页面转动元素

各个区块的高度盘算 参考文章

var listGroup = $cls('.list-group-item')
let height = 0
this.listHeight.push(height)
listGroup.forEach(item => {
height += item.clientHeight
this.listHeight.push(height)
})

  • clientHeight、offsetHeight、scrollHeight、scrollTop、offsetTop 的区分
  1. clientHeight和offsetHeight属性和元素的转动、位置没有关系它代表元素的高度,个中:
    clientHeight:包含padding但不包含border、程度转动条、margin的元素的高度。关于inline的元素这个属性一直是0,单元px,只读元素。

    offsetHeight:包含padding、border、程度转动条,但不包含margin的元素的高度。关于inline的元素这个属性一直是0,单元px,只读元素。

  2. scrollHeight
    scrollHeight: 由于子元素比父元素高,父元素不想被子元素撑的一样高就显现出了转动条,
    在转动的过程当中本元素有部份被隐蔽了,scrollHeight代表包含当前不可见部份的元素的高度。

    而可见部份的高度实在就是clientHeight,也就是scrollHeight>=clientHeight恒建立。

    在有转动条时议论scrollHeight才有意义,在没有转动条时scrollHeight==clientHeight恒建立。单元px,只读元素

  3. scrollTop: 代表在有转动条时,转动条向下转动的间隔也就是元素顶部被遮住部份的高度。在没有转动条时scrollTop==0恒建立。单元px,可读可设置。
  4. offsetTop: 当前元素顶部间隔近来父元素顶部的间隔,和有无转动条没有关系。单元px,只读元素。

2019-07-09 更新

要领二:position: sticky

sticky: 粘性规划,基本上,能够看做是 position: relative 和 position: fixed 的结合体 ——当元素在屏幕内,表现为 relative ,就要滚出显现器屏幕的时刻,表现为 fixed

对元素设置:
position: -webkit-sticky;
position: sticky;
top: 0; // 摆布也能够设置 left

  • 上栗的吸顶结果能够用 sitcky 完成

// 将上述代码改成 以下即可,注重其先人元素不可有 overflow: visible 之外的元素
.list-group-title {
postion: sticky;
top: 0;
}

  • 注重事项:

    1. 父级元素不能有任何 overflow: visible 之外的设置,不然就没有粘滞结果
    2. 父级元素不能设置牢固的 hight 高度值
    3. 同一个父容器中的 sticky 元素,假如定位值雷同,则会堆叠;假如属于不同父元素,则会鸠占鹊巢,挤开本来的元素,顺次构成占位结果。(吸顶结果)
    4. sticky 定位,不仅能够设置 top,基于 转动容器上边缘定位;还能够设置bottom,left,right
  • sticky 参考张鑫旭大佬的文章 sticky

推荐阅读
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • html结构 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Tkinter Frame容器grid布局并使用Scrollbar滚动原理
    本文介绍了如何使用Tkinter实现Frame容器的grid布局,并通过Scrollbar实现滚动效果。通过将Canvas作为父容器,使用滚动Canvas来滚动Frame,实现了在Frame中添加多个按钮,并通过Scrollbar进行滚动。同时,还介绍了更新Frame大小和绑定滚动按钮的方法,以及配置Scrollbar的相关参数。 ... [详细]
  • 涉及的知识点-ViewGroup的测量与布局-View的测量与布局-滑动冲突的处理-VelocityTracker滑动速率跟踪-Scroller实现弹性滑动-屏幕宽高的获取等实现步 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • 本文实例讲述了Android编程实现读取工程中的txt文件功能。分享给大家供大家参考,具体如下:1.众所周知,Android的res文件夹 ... [详细]
author-avatar
A布匹rray
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有