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监听浏览器的问题
Jun 23 Javascript
JS高级笔记
Jul 13 Javascript
一行代码告别document.getElementById
Jun 01 Javascript
javascript 保存文件到本地实现方法
Nov 29 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
Dec 11 Javascript
JS中的Replace方法使用经验分享
May 20 Javascript
使用coffeescript编写node.js项目的方法汇总
Aug 05 Javascript
javascript实现五星评价代码(源码下载)
Aug 11 Javascript
基于jQuery实现复选框是否选中进行答题提示
Dec 10 Javascript
微信小程序中转义字符的处理方法
Mar 28 Javascript
vue 解决form表单提交但不跳转页面的问题
Oct 30 Javascript
vue 清空input标签 中file的值操作
Jul 21 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中计算未知长度的字符串哪个字符出现的次数最多的代码
2012/08/14 PHP
深入Nginx + PHP 缓存详解
2013/07/11 PHP
php preg_replace替换实例讲解
2013/11/04 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
Jquery cookie操作代码
2010/03/14 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
探讨JavaScript语句的执行过程
2016/01/28 Javascript
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
Mac下通过brew安装指定版本的nodejs教程
2018/05/17 NodeJs
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
图解NodeJS实现登录注册功能
2019/09/16 NodeJs
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
2019/09/26 Javascript
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
python快速查找算法应用实例
2014/09/26 Python
详解Python核心对象类型字符串
2018/02/11 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
python实现推箱子游戏
2020/03/25 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
python 根据列表批量下载网易云音乐的免费音乐
2020/12/03 Python
一款基于css3的动画按钮代码教程
2014/11/23 HTML / CSS
html5 canvas简单封装一个echarts实现不了的饼图
2018/06/12 HTML / CSS
缴纳养老保险的证明
2014/01/10 职场文书
宿舍违规用电检讨书
2014/02/16 职场文书
经典广告词大全
2014/03/14 职场文书
大学生社会实践活动总结
2014/07/03 职场文书
承诺函格式模板
2015/01/21 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL