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下阻止表单重复提交、防刷新、防后退
Aug 17 Javascript
jQuery UI的Dialog无法提交问题的解决方法
Jan 11 Javascript
jQuery Ajax使用实例
Apr 16 Javascript
AngularJS使用指令增强标准表单元素功能
Jul 01 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
Oct 10 Javascript
canvas实现图像截取功能
Feb 06 Javascript
ES6 javascript中Class类继承用法实例详解
Oct 30 Javascript
js保留两位小数方法总结
Jan 31 Javascript
详解nuxt sass全局变量(公共scss解决方案)
Jun 27 Javascript
vue router 配置路由的方法
Jul 26 Javascript
Element Card 卡片的具体使用
Jul 26 Javascript
JavaScript实现酷炫的鼠标拖尾特效
Feb 18 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
Eclipse的PHP插件PHPEclipse安装和使用
2014/07/20 PHP
Smarty使用自定义资源的方法
2015/08/08 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
PHP获取访问设备信息的方法示例
2019/02/20 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
分享vue里swiper的一些坑
2018/08/30 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
详解vue 命名视图
2019/08/14 Javascript
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
python利用微信公众号实现报警功能
2018/06/10 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
利用python计算时间差(返回天数)
2019/09/07 Python
python能做什么 python的含义
2019/10/12 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
python 一维二维插值实例
2020/04/22 Python
python交互模式基础知识点学习
2020/06/18 Python
python不同版本的_new_不同点总结
2020/12/09 Python
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
ABOUT YOU罗马尼亚:超过600个时尚品牌
2019/09/19 全球购物
大四学生思想汇报
2014/01/13 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
幼儿园综治宣传月活动总结
2015/05/07 职场文书
初中地理教学反思
2016/02/19 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
Python实现简单的俄罗斯方块游戏
2021/09/25 Python
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python