HTML+CSS+JS(+Vue)写一个通讯录组件
求各位大大的Star(*/ω\*)。
没有录屏,所以上传的是图片。后面已补充录屏效果。
效果:(主要是参考小米Note3的通讯录的效果做的)





主要功能:
1. 滚动后,通讯录的模块标题会固定在顶部(图2)
2. 下一个标题很接近时,将上一个标题推上去的效果(过程:图3、图4、图5)
实现:
1. 模块标题会固定在顶部:这个实现比较简单,监听滚动的距离,如果大于0(相对的0)就显示固定的标题。
2. 推上去的效果:实际上是修改固定的标题的top值,导致的视觉错觉。当下一个标题距离顶部的距离超出可视区域,将标题又定位在顶部。
另外需要注意的地方:
1. 固定的标题一开始就需要展示,只是top比较大/小,不在可视区域内。
2. 在页面中使用时,页面的内容(除了组件),需要给一个z-index和背景色,否则推上去的效果会盖住页面的内容/盖不住。
3. (建议)JS代码里的高度值等,都是通过获取的方式,而不是写固定值的方式。样式可配置。
4. 增加了在slot传入标题、标题是否固定在顶部功能。
这个组件可以单独拿来当页面用,也可以当组件用~
上传了三个版本:(另增加了两个版本)
三者之间的区别:
- 版本1的容器是固定高度的。
版本2、版本3的容器不定高。 - 版本2可以将标题传入slot,另外还有固定标题/不固定标题的选项。 (不支持组件外的标题)
版本1的标题写在组件外。
版本3二者都可以实现,PS 组件外的标题不能被固定。 - 版本1有下一个标题把上一个标题往上推的效果。
版本2只有在固定标题的时候有这个效果,不固定标题的时候(fixedTitle为false时)没有往上推的效果。
版本3有下一个标题把上一个标题盖住的效果。 - 版本3已将css改成可配置。
补充录屏效果:
版本1例子预览:

版本2例子预览:

版本3例子预览:
1. 内标题固定

2. 内标题不固定

具体代码在这里 https://github.com/littleHiuman/codes-about-front-end/tree/master/addressList
求各位大大的star呀~
HTML+CSS+JS(+Vue)写一个通讯录组件的更多相关文章
- js单行写一个评级组件
单行写一个评级组件:"★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate); -----------------------------------分隔符- ...
- 用vue写一个仿简书的轮播图
原文地址:用vue写一个仿简书的轮播图 先展示最终效果: Vue的理念是以数据驱动视图,所以拒绝通过改变元素的margin-top来实现滚动效果.写好css样式,只需改变每张图片的class即可实现轮 ...
- 用ES6的class模仿Vue写一个双向绑定
原文地址:用ES6的class模仿Vue写一个双向绑定 点击在线尝试一下 最终效果如下: 构造器(constructor) 构造一个TinyVue对象,包含基本的el,data,methods cla ...
- Vue3语法快速入门以及写一个倒计时组件
Vue3写一个倒计时组件 vue3 beta版本发布已有一段时间了,文档也大概看了一下,不过对于学一门技术,最好的方法还是实战,于是找了一个比较简单的组件用vue3来实现,参考的是vant的count ...
- [py]python写一个通讯录step by step V3.0
python写一个通讯录step by step V3.0 参考: http://blog.51cto.com/lovelace/1631831 更新功能: 数据库进行数据存入和读取操作 字典配合函数 ...
- 表单配置项写法,表单写成JSON数组套对象,一行是一个数组单位,一列是一个对象单位,然后再写一个公共组件读取这个配置,循环加载slot,外层载入slot的自定义部分,比如input select等,这种写法就是把组件嵌套改为配置方式
表单配置项写法,表单写成JSON数组套对象,一行是一个数组单位,一列是一个对象单位,然后再写一个公共组件读取这个配置,循环加载slot,外层载入slot的自定义部分,比如input select等,这 ...
- 用vue写一个仿app下拉刷新的组件
如果你用vue弄移动端的页面,那么下拉刷新还是比较常见的场景,下面来研究如何写一个下拉刷新的组件(先上图); 由于节省大家的时间,样式就不贴出来了. html结构也不必介绍了,直接看代码吧-.- &l ...
- 在vue中使用基于d3为基础的dagre-d3.js搞定一个流程图组件
项目中想搞定一个流程图,开始使用了阿里的G6,但是G6目前不支持手势,这样就很郁闷了,因为公司的领导都是使用iPad看的,你不支持手势是不行的,后来又想到了百度的echarts,试了试,感觉还不错,手 ...
- 用原生js来写一个swiper滑块插件
是不是有点印象了,没错,他的最基本的用法就是左右滑动,插件使用者只需要写几行简单的html和js即可实现一个简单滑动效果,不过你完全可以组合各种元素来适应不同的场景. 当然插件我已经写好了,咱 ...
随机推荐
- POJ3348:Cows——题解
http://poj.org/problem?id=3348 题目大意:用已给出的点围出面积最大的凸包,输出面积/50(向下取整) —————————————————————————— 第一道凸包?以 ...
- thread-wait/sleep
对于sleep()方法,我们首先要知道该方法是属于Thread类中的.而wait()方法,则是属于Object类中的. sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监 ...
- 【ST表】【模板】ST表
Definition ST表是一种用于处理静态RMQ问题(无修改区间最值问题)的最快数据结构,书写方便使用简单效率便捷.其中其预处理复杂度为O(nlogn),查询复杂度为O(1).总时间复杂度为O(n ...
- 阿里云配置redis
一.redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sor ...
- Java的switch是否支持String作为参数,还支持哪些类型?
在Java5以前,switch(expr)中,exper只能是byte,short,char,int类型. 从Java5开始,java中引入了枚举类型,即enum类型. 从Java7开始,exper还 ...
- HDU1358 KMP(最短循环节)
Period Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- Qt -------- 多线程编程
一.继承QThread(不推荐) 定义一个类,继承QThread,重写run(),当调用方法start(),启动一个线程,run()函数运行结束,线程结束. 二.继承QRunnable Qrunnab ...
- UVA 10886 Standard Deviation
https://vjudge.net/problem/UVA-10886 计算标准差 碰到这种题将式子展开 #include<cmath> #include<cstdio> / ...
- UVALive-4670 Dominating Patterns / 洛谷 3796 【模板】AC自动机
https://vjudge.net/problem/UVALive-4670 中文题面:https://www.luogu.org/problem/show?pid=3796 AC自动机模板 注意如 ...
- [Luogu 4092] HEOI/TJOI2016 树
[Luogu 4092] HEOI/TJOI2016 树 搜了树剖标签不知道怎么就跳出了个暴搜题啊! 管他既然做了就发上来吧- 有修改标签就向下搜并修改,遇到标签即停止. 这题是真的真的短. #inc ...