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 相关文章推荐
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
Apr 01 Javascript
jquery select选中的一个小问题
Oct 11 Javascript
基于JQuery 的消息提示框效果代码
Jul 31 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
Oct 11 Javascript
jQuery Mobile 导航栏代码
Nov 01 Javascript
JS 清除字符串数组中,重复元素的实现方法
May 24 Javascript
js+html制作简单验证码
Feb 16 Javascript
javascript将url解析为json格式的两种方法
Aug 18 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
Oct 31 Javascript
layui关闭弹窗后刷新主页面和当前更改项的例子
Sep 06 Javascript
微信小程序实现星级评价
Nov 20 Javascript
vue实现动态表格提交参数动态生成控件的操作
Nov 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使用http_build_query()构造URL字符串的方法
2016/04/02 PHP
thinkphp分页集成实例
2017/07/24 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
使用js获取地址栏中传递的值
2013/07/02 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
在bootstrap中实现轮播图实例代码
2017/06/11 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
vue组件中使用props传递数据的实例详解
2018/04/08 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
JS实现提示框跟随鼠标移动
2019/08/27 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
python基础教程之类class定义使用方法
2014/02/20 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
Python返回数组/List长度的实例
2018/06/23 Python
pandas删除指定行详解
2019/04/04 Python
python设置环境变量的原因和方法
2019/06/24 Python
python线程里哪种模块比较适合
2020/08/02 Python
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
应届毕业生求职信范文
2013/12/18 职场文书
社区八一活动方案
2014/02/03 职场文书
春节请假条
2014/04/11 职场文书
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
春秋淹城导游词
2015/02/11 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
高中运动会广播稿
2015/08/19 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
六年级作文之预言作文
2019/10/25 职场文书