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 相关文章推荐
jquery 实现密码框的显示与隐藏示例代码
Sep 18 Javascript
js类式继承的具体实现方法
Dec 31 Javascript
javascript实现倒计时并弹窗提示特效
Jun 05 Javascript
Bootstrap每天必学之标签与徽章
Nov 27 Javascript
AngularJS 依赖注入详解和简单实例
Jul 28 Javascript
解析AngularJS中get请求URL出现的跨域问题
Dec 01 Javascript
代码详解javascript模块加载器
Mar 04 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
Apr 19 Javascript
详解微信小程序自定义组件的实现及数据交互
Jul 22 Javascript
layui点击数据表格添加或删除一行的例子
Sep 12 Javascript
react合成事件与原生事件的相关理解
May 13 Javascript
vue实现移动端div拖动效果
Mar 03 Vue.js
常见的浏览器存储方式(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防止sql注入代码实例
2013/12/18 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
IE网页js语法错误2行字符1、FF中正常的解决方法
2013/09/09 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
JS实现动态添加DOM节点和事件的方法示例
2017/04/28 Javascript
vue获取input输入值的问题解决办法
2017/10/17 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
jQuery实现增删改查
2020/12/22 jQuery
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
python执行等待程序直到第二天零点的方法
2015/04/23 Python
Python 实现 贪吃蛇大作战 代码分享
2016/09/07 Python
tornado 多进程模式解析
2018/01/15 Python
Jupyter中直接显示Matplotlib的图形方法
2018/05/24 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
Python内存映射文件读写方式
2020/04/24 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
2020/04/25 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
欧迪办公美国官网:Office Depot
2016/08/22 全球购物
高中班主任评语大全
2014/04/25 职场文书
五四青年节演讲稿
2014/05/26 职场文书
节能环保演讲稿
2014/08/28 职场文书
党员评议个人总结
2014/10/20 职场文书
小学班级标语口号大全
2015/12/26 职场文书
MySQL里面的子查询的基本使用
2021/08/02 MySQL
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android