经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » iOS » 查看文章
iphone刘海屏页面适配方法
来源:jb51  时间:2019/5/8 8:41:05  对本文有异议

1. 下面是实现iphonex 刘海屏前端页面适配的一个插值算法小案例

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. body, ul {
  8. margin: 0;
  9. }
  10.  
  11. ul {
  12. padding-left: 10px;
  13. }
  14.  
  15. li {
  16. list-style: none;
  17. }
  18.  
  19. .phone {
  20. position: relative;
  21. width: 600px;
  22. height: 300px;
  23. border: 10px solid #000;
  24. border-radius: 30px;
  25. margin: 100px auto 0;
  26. }
  27.  
  28. .content, .content ul {
  29. width: 100%;
  30. height: 100%;
  31. }
  32.  
  33. .content {
  34. overflow-x: hidden;
  35. overflow-y: scroll;
  36. }
  37.  
  38. .camera {
  39. position: absolute;
  40. top: 60px;
  41. left: 0;
  42. width: 26px;
  43. height: 180px;
  44. background-color: black;
  45. border-radius: 0 30px 30px 0;
  46. }
  47.  
  48. li + li {
  49. border-top: 1px solid #ccc;
  50. }
  51.  
  52. li {
  53. font-size: 16px;
  54. padding: 5px;
  55. }
  56.  
  57. *::-webkit-scrollbar {
  58. padding-left: 100px;
  59. }
  60. </style>
  61. </head>
  62. <body>
  63. <div class="phone">
  64. <div class="content">
  65. <ul>
  66. <li>SweeTango</li>
  67. <li>Pacific Rose</li>
  68. <li>SnapDragon</li>
  69. <li>Envy</li>
  70. <li>Koru (Plumac)</li>
  71. <li>Pink Lady (Cripps Pink)</li>
  72. <li>HoneYcrisp</li>
  73. <li>Hoyal Gala</li>
  74. <li>Macoun</li>
  75. <li>SweeTango</li>
  76. <li>Pacific Rose</li>
  77. <li>SnapDragon</li>
  78. <li>Envy</li>
  79. <li>Koru (Plumac)</li>
  80. <li>Pink Lady (Cripps Pink)</li>
  81. <li>HoneYcrisp</li>
  82. <li>Hoyal Gala</li>
  83. <li>Macoun</li>
  84. <li>Macoun</li>
  85. <li>SweeTango</li>
  86. <li>Pacific Rose</li>
  87. <li>SnapDragon</li>
  88. <li>Envy</li>
  89. <li>Koru (Plumac)</li>
  90. <li>Pink Lady (Cripps Pink)</li>
  91. <li>HoneYcrisp</li>
  92. <li>Hoyal Gala</li>
  93. <li>Macoun</li>
  94. <div class="camera"></div>
  95. </ul>
  96. </div>
  97. </div>
  98. <script>
  99. ~~function () {
  100. var thresh = 20;
  101. var maxoffset = 50;
  102. var aLi = document.querySelectorAll('li');
  103. var oCamera = document.querySelector('.camera');
  104. var oContent = document.querySelector('.content')
  105. var camPs = oCamera.getBoundingClientRect();
  106.  
  107.  
  108. ~~function () {
  109. oContent.onscroll = arguments.callee;
  110. for (var item of aLi) {
  111. var itemRect = item.getBoundingClientRect();
  112. var dtf = itemRect.bottom - camPs.top
  113. var dtb = itemRect.bottom - camPs.bottom
  114. if (Math.abs(dtf) < 20) {
  115. item.style.transform = 'translateX(' + lerp(0, 30, cal(dtf, 20)) + "px)";
  116.  
  117. } else if (dtf > 20 && dtb < -20) {
  118. item.style.transform = 'translateX(' + 30 + "px)";
  119. } else if (Math.abs(dtb) <20) {
  120. item.style.transform = 'translateX(' + lerp(30, 0, cal(dtb, 20)) + "px)";
  121. } else {
  122. //全部移除摄像头区域
  123. item.style.transform = 'translateX(' + 0 + "px)";
  124. }
  125. }
  126. }()
  127. }()
  128.  
  129. /**
  130. * @param 插值算法
  131. * @param p1 初始化状态
  132. * @param p2 结束状态
  133. * @param t 时间函数 (0-100%)
  134. *
  135. * 返回p1 到 p2 之间的值
  136. */
  137. function lerp(p1, p2, t) {
  138. return (p2 - p1) * t + p1
  139. }
  140.  
  141. function cal(dis, thr) {
  142. return (dis + thr) / (thr * 2)
  143. }
  144. </script>
  145. </body>
  146. </html>

以上所述是小编给大家介绍的iphone刘海屏页面适配方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对w3xue网站的支持!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号