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 相关文章推荐
jquery.validate使用攻略 第五步 正则验证
Jul 01 Javascript
两种常用的javascript数组去重方法思路及代码
Mar 26 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
Apr 15 Javascript
怎么选择Javascript框架(Javascript Framework)
Nov 22 Javascript
jquery插件开发之实现google+圈子选择功能
Mar 10 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
Mar 18 Javascript
JavaScript定时器实现的原理分析
Dec 06 Javascript
基于jQuery Easyui实现登陆框界面
Jul 10 jQuery
Vue条件循环判断+计算属性+绑定样式v-bind的实例
Sep 18 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
Apr 28 Javascript
详解Vue中的watch和computed
Nov 09 Javascript
关于JavaScript轮播图的实现
Nov 20 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/07 PHP
PHP分页详细讲解(有实例)
2013/10/30 PHP
PHP 命名空间和自动加载原理与用法实例分析
2020/04/29 PHP
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
用NodeJS实现批量查询地理位置的经纬度接口
2016/08/16 NodeJs
ES6中Math对象的部分扩展
2017/02/20 Javascript
JS实现列表页面隔行变色效果
2017/03/25 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
JavaScript中Object基础内部方法图
2018/02/05 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
Python生成随机数组的方法小结
2017/04/15 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
在pandas中一次性删除dataframe的多个列方法
2018/04/10 Python
python如何求解两数的最大公约数
2018/09/27 Python
Scrapy框架实现的登录网站操作示例
2020/02/06 Python
python绘制动态曲线教程
2020/02/24 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
戴尔美国官网:Dell
2016/08/31 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
中级会计职业生涯规划范文
2014/01/16 职场文书
留学顾问岗位职责
2014/04/14 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
质量负责人岗位职责
2015/02/15 职场文书
奖金申请报告模板
2015/05/15 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
《落花生》教学反思
2016/02/16 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang
Python中itertools库的四个函数介绍
2022/04/06 Python
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers