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 相关文章推荐
容易被忽略的JS脚本特性
Sep 13 Javascript
JS隐藏参数post传值实例
Apr 18 Javascript
Mac/Windows下如何安装Node.js
Nov 22 Javascript
jQuery学习笔记之toArray()
Jun 09 Javascript
JavaScript中的console.time()函数详细介绍
Dec 29 Javascript
JavaScript中的关联数组问题
Mar 04 Javascript
Javascript使用post方法提交数据实例
Aug 03 Javascript
JS+CSS实现精美的二级导航效果代码
Sep 17 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
Dec 26 Javascript
JavaScript面试技巧之数组的一些不low操作
Mar 22 Javascript
javascript获取元素的计算样式
May 24 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
Oct 16 jQuery
常见的浏览器存储方式(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下使用SMTP发邮件的代码
2008/01/10 PHP
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
详解php协程知识点
2018/09/21 PHP
JavaScript中常见陷阱小结
2010/04/27 Javascript
javascript SpiderMonkey中的函数序列化如何进行
2012/12/05 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
浅析js封装和作用域
2013/07/09 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
vue 实现tab切换保持数据状态
2020/07/21 Javascript
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
python使用threading获取线程函数返回值的实现方法
2017/11/15 Python
pytorch 预训练层的使用方法
2019/08/20 Python
python实现引用其他路径包里面的模块
2020/03/09 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
德国咖啡批发商:Coffeefair
2019/08/26 全球购物
请说出几个常用的异常类
2013/01/08 面试题
绿色家庭事迹材料
2014/05/01 职场文书
博士生导师推荐信
2014/07/08 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
2014教师年度工作总结
2014/11/10 职场文书
单身申明具结书
2015/02/26 职场文书
李强为自己工作观后感
2015/06/11 职场文书
2015年小学生国庆节演讲稿
2015/07/30 职场文书
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电
pt-archiver 主键自增
2022/04/26 MySQL
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers