iPhoneX下拉特效
来源:互联网 发布:博弈矩阵怎么看 编辑:程序博客网 时间:2024/06/09 21:39
代码如下所示:
<!DOCTYPE html><html lang="zh-cn"><head><meta charset="UTF-8"><title>Document</title><style>body,ul{padding:0px;margin:0px;}li{list-style:none;}#body{width:400px;height:200px;border:10px solid black;border-radius:10px;margin:30px auto;position:relative;}#content { width: 100%; height: 100%; border-radius: 10px; border: 5px solid black; transform: translate(-5px,-5px); overflow:auto;} #content::-webkit-scrollbar{padding-left:100px;} ul{padding-left:10px;}li{line-height:24px;}.camera { height: 100px; width: 16px; background-color: black; position: absolute; top: 45px; left: 0px; border-top-right-radius: 18px; border-bottom-right-radius: 18px;}</style></head><body><div id="body"><div id="content"><ul><li>测试数据1</li><li>测试数据2</li><li>测试数据3</li><li>测试数据4</li><li>测试数据5</li><li>测试数据6</li><li>测试数据7</li><li>测试数据8</li><li>测试数据9</li><li>测试数据10</li><li>测试数据1</li><li>测试数据2</li><li>测试数据3</li><li>测试数据4</li><li>测试数据5</li><li>测试数据6</li><li>测试数据7</li><li>测试数据8</li><li>测试数据9</li><li>测试数据10</li><li>测试数据1</li><li>测试数据2</li></ul></div><div class="camera"></div></div><script>(function ma(){var thresh=18, //定义纵向间距liOffset=20; //定义横向偏移量var aLi=document.getElementsByTagName("li"); //获取所有下拉列表项var camera=document.querySelector(".camera");//获取边框左边的黑色镜头区var cameraRect=camera.getBoundingClientRect();//获取镜头的位置信息var content=document.getElementById("content");//获取内容显示区域content.onscroll=ma;//内容滚动时,触发时间,可以arguments.callefor(var item of aLi){var itemRect=item.getBoundingClientRect();var tfb=cameraRect.top-itemRect.bottom;var bfb=cameraRect.bottom-itemRect.bottom;if(Math.abs(tfb)<=thresh){item.style.transform="translateX("+getLengh(0,liOffset,getTime(thresh,tfb))+"px)";//console.log("进入");}else if((tfb<0)&&(bfb>thresh)){item.style.transform="translateX("+liOffset+"px)";}else if(Math.abs(bfb)<=thresh){item.style.transform="translateX("+getLengh(liOffset,0,getTime(thresh,bfb))+"px)";}else{item.style.transform="translateX(0px)";}}})();/*以下为纯函数*getLength:根据百分比获取横向偏移量获取*getTime:根据纵向获取百分比*/function getLengh(p0,p1,t){return p0+(p1-p0)*t;}function getTime(p0,p1){ //20 -->-20return (p0-p1)/(p0*2);}</script></body></html>显示效果:
知识点:
1,HTML5的API接口getBoundingClientRect(),可以在JS中获取页面元素的位置信息,包括top、right、bottom、left、width、height等元素位置、属性信息。
console.log(document.getElementById("demo").getBoundingClientRect());
2,前端优化,遵循高内聚,低耦合的准则
将业务代码归在一起,算法代码(纯函数)单独建立
纯函数概念:
1、代码内容仅仅只用到了传入的参数;
2、没有影响到任何外面的参数;
3、不对页面业务产生任何干扰。(执行纯函数后,页面渲染不发生改变)
纯函数是业务逻辑分离出來的逻辑,最好加上注释,便于理解和复用
/**
*@param 差值算法
*@p0:初始状态
*@p1:结束状态
*@t:变化函数
*/
3,arguments.callee调用函数自身
在函数中,使用arguments.callee()可以调用函数本身,相当于面向对象中的递归。但是ES5以后已经不建议使用了,建议使用函数名调用函数自身。
4,在web开发中,当元素内容超出元素盒模型时,我们通常会使用滚动条来显示元素的所有内容,但是浏览器自带的滚动条太丑了,在谷歌浏览器中,我们可以使用伪元素 ::-webkit-scrollbar{} 来自定义滚动条的样式;也可以在滚动条中设置内边距 padding-left:100px; 来隐藏滚动条。
阅读全文
0 0
- iPhoneX下拉特效
- iPhoneX
- js特效-下拉菜单
- 下拉刷新特效EGOTableViewPullRefresh
- ajax下拉加载特效
- jquery特效 简易下拉菜单
- 导航下拉二级菜单特效
- 动画特效九:下拉刷新
- 动画特效十:下拉放大
- 导航栏三级下拉特效
- Android 特效库 - 下拉刷新
- 一个简单的下拉菜单特效
- javascript 模拟select下拉列表特效
- js特效-震动下拉菜单、抖动窗口
- js 简单的类下拉菜单特效
- Android下拉刷新特效实现一
- jquery菜单下拉特效 非常简单
- Jquery 下拉菜单移入移出特效
- 动态代理模式的两种实现 —— jdk实现 VS cglib实现
- c语言指针详解
- Git常用命令总结
- .net 中Bitmap和Halcon中HObject的相互转换
- QT开发 Model/View/delegate/selection
- iPhoneX下拉特效
- 博客使用到的公共图片
- CCF 201604-1 折点计数
- 从word中拷贝代码到vc中空格出现错误解决
- Java根据日期取得星期几
- 基于Puppeteer实现地图打印输出
- 银根收不收的逻辑
- leetcode 149. Max Points on a Line
- Alfred3 无法激活workflows解决方法