iphone刘海屏页面适配方法


Posted in Javascript onMay 07, 2019

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

iphone刘海屏页面适配方法

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    body, ul {
      margin: 0;
    }

    ul {
      padding-left: 10px;
    }

    li {
      list-style: none;
    }

    .phone {
      position: relative;
      width: 600px;
      height: 300px;
      border: 10px solid #000;
      border-radius: 30px;
      margin: 100px auto 0;
    }

    .content, .content ul {
      width: 100%;
      height: 100%;
    }

    .content {
      overflow-x: hidden;
      overflow-y: scroll;
    }

    .camera {
      position: absolute;
      top: 60px;
      left: 0;
      width: 26px;
      height: 180px;
      background-color: black;
      border-radius: 0 30px 30px 0;
    }

    li + li {
      border-top: 1px solid #ccc;
    }

    li {
      font-size: 16px;
      padding: 5px;
    }

    *::-webkit-scrollbar {
      padding-left: 100px;
    }
  </style>
</head>
<body>
<div class="phone">
  <div class="content">
    <ul>
      <li>SweeTango</li>
      <li>Pacific Rose</li>
      <li>SnapDragon</li>
      <li>Envy</li>
      <li>Koru (Plumac)</li>
      <li>Pink Lady (Cripps Pink)</li>
      <li>HoneYcrisp</li>
      <li>Hoyal Gala</li>
      <li>Macoun</li>
      <li>SweeTango</li>
      <li>Pacific Rose</li>
      <li>SnapDragon</li>
      <li>Envy</li>
      <li>Koru (Plumac)</li>
      <li>Pink Lady (Cripps Pink)</li>
      <li>HoneYcrisp</li>
      <li>Hoyal Gala</li>
      <li>Macoun</li>
      <li>Macoun</li>
      <li>SweeTango</li>
      <li>Pacific Rose</li>
      <li>SnapDragon</li>
      <li>Envy</li>
      <li>Koru (Plumac)</li>
      <li>Pink Lady (Cripps Pink)</li>
      <li>HoneYcrisp</li>
      <li>Hoyal Gala</li>
      <li>Macoun</li>
      <div class="camera"></div>
    </ul>
  </div>
</div>
<script>
  ~~function () {
    var thresh = 20;
    var maxoffset = 50;
    var aLi = document.querySelectorAll('li');
    var oCamera = document.querySelector('.camera');
    var oContent = document.querySelector('.content')
    var camPs = oCamera.getBoundingClientRect();


    ~~function () {
      oContent.onscroll = arguments.callee;
      for (var item of aLi) {
        var itemRect = item.getBoundingClientRect();
        var dtf = itemRect.bottom - camPs.top
        var dtb = itemRect.bottom - camPs.bottom
        if (Math.abs(dtf) < 20) {
          item.style.transform = 'translateX(' + lerp(0, 30, cal(dtf, 20)) + "px)";

        } else if (dtf > 20 && dtb < -20) {
          item.style.transform = 'translateX(' + 30 + "px)";
        } else if (Math.abs(dtb) <20) {
          item.style.transform = 'translateX(' + lerp(30, 0, cal(dtb, 20)) + "px)";
        } else {
          //全部移除摄像头区域
          item.style.transform = 'translateX(' + 0 + "px)";
        }
      }
    }()
  }()

  /**
   * @param 插值算法
   * @param p1 初始化状态
   * @param p2 结束状态
   * @param t  时间函数 (0-100%)
   *
   * 返回p1 到 p2 之间的值
   */
  function lerp(p1, p2, t) {
    return (p2 - p1) * t + p1
  }

  function cal(dis, thr) {
    return (dis + thr) / (thr * 2)
  }
</script>
</body>
</html>

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

Javascript 相关文章推荐
8款非常棒的响应式jQuery 幻灯片插件推荐
Feb 02 Javascript
jquery高效反选具体实现
May 05 Javascript
JS中获取数据库中的值的方法
Jul 14 Javascript
jQuery中empty()方法用法实例
Jan 16 Javascript
深入了解JavaScript中的Symbol的使用方法
Jul 28 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
Jul 12 Javascript
angular2 ng2 @input和@output理解及示例
Oct 10 Javascript
关于js陀螺仪的理解分析
Apr 11 Javascript
koa2 从入门到精通(小结)
Jul 23 Javascript
JavaScript工具库MyTools详解
Jan 01 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
Apr 20 Javascript
vue 获取元素额外生成的data-v-xxx操作
Sep 09 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
May 07 #Javascript
JavaScript实现随机点名器实例详解
May 07 #Javascript
vue父组件触发事件改变子组件的值的方法实例详解
May 07 #Javascript
微信小程序:数据存储、传值、取值详解
May 07 #Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
May 07 #Javascript
详解Vue前端生产环境发布配置实战篇
May 07 #Javascript
7个好用的JavaScript技巧分享(译)
May 07 #Javascript
You might like
利用php实现禁用IE和火狐的缓存问题
2012/12/03 PHP
一个php短网址的生成代码(仿微博短网址)
2014/05/07 PHP
php5.3不能连接mssql数据库的解决方法
2014/12/27 PHP
PHP编写简单的App接口
2016/08/28 PHP
使用jQuery同时控制四张图片的伸缩实现代码
2013/04/19 Javascript
jQuery使用andSelf()来包含之前的选择集
2014/05/19 Javascript
jQuery Easyui datagrid/treegrid 清空数据
2016/07/09 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
2019/11/05 Javascript
python中urllib模块用法实例详解
2014/11/19 Python
python发送邮件脚本
2018/05/22 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
python随机生成大小写字母数字混合密码(仅20行代码)
2020/02/01 Python
Python中如何引入第三方模块
2020/05/27 Python
Pytorch环境搭建与基本语法
2020/06/03 Python
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
如何进行Linux分区优化
2016/09/13 面试题
党校自我鉴定范文
2013/10/02 职场文书
个人优缺点自我评价
2014/01/27 职场文书
《两只鸟蛋》教学反思
2014/02/10 职场文书
低碳环保口号
2014/06/12 职场文书
空气的环保标语
2014/06/12 职场文书
办公室领导干部作风整顿个人整改措施
2014/09/17 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
地道战观后感
2015/06/04 职场文书
2016年元旦主持词
2015/07/06 职场文书
CSS实现多个元素在盒子内两端对齐效果
2021/03/30 HTML / CSS
JavaScript 定时器详情
2021/11/11 Javascript
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript