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事件实现代码
Mar 12 Javascript
浅谈Javascript鼠标和滚轮事件
Jun 27 Javascript
ExtJS DOM元素操作经验分享
Aug 28 Javascript
JavaScript自定义事件介绍
Aug 29 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
Jan 26 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
Mar 23 Javascript
微信小程序 页面跳转传值实现代码
Jul 27 Javascript
基于JSONP原理解析(推荐)
Dec 04 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
Dec 05 Javascript
angular2 NgModel模块的具体使用方法
Apr 10 Javascript
JavaScript Reflect Metadata实现详解
Dec 12 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
SONY ICF-SW55的电路分析
2021/03/02 无线电
怎样在php中使用PDF文档功能
2006/10/09 PHP
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
php无序树实现方法
2015/07/28 PHP
php利用ZipArchive类操作文件的实例
2020/01/21 PHP
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
IE8 chrome中table隔行换色解决办法
2010/07/09 Javascript
jquery插件珍藏(图片局部放大/信息提示框)
2013/01/08 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
2017/02/14 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
深入理解React中何时使用箭头函数
2017/08/23 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
python的Tqdm模块的使用
2018/01/10 Python
Python Flask基础教程示例代码
2018/02/07 Python
Python中的Django基本命令实例详解
2018/07/15 Python
Python爬虫的两套解析方法和四种爬虫实现过程
2018/07/20 Python
python设定并获取socket超时时间的方法
2019/01/12 Python
python利用tkinter实现屏保
2019/07/30 Python
Python 私有化操作实例分析
2019/11/21 Python
关于python 的legend图例,参数使用说明
2020/04/17 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
Python用access判断文件是否被占用的实例方法
2020/12/17 Python
HTML5实现直播间评论滚动效果的代码
2020/05/27 HTML / CSS
影视制作岗位职责
2013/12/04 职场文书
会计应聘求职信范文
2013/12/17 职场文书
2014年五四青年节活动策划书
2014/04/22 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书
区域经理岗位职责
2015/02/02 职场文书