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 13 Javascript
制作高质量的JQuery Plugin 插件的方法
Apr 20 Javascript
地址栏传递中文参数乱码在js里用escape转码
Aug 28 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
Oct 20 Javascript
jquery简单实现鼠标经过导航条改变背景图
Dec 17 Javascript
js+div实现文字滚动和图片切换效果代码
Aug 27 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
Nov 13 Javascript
高效的jquery数字滚动特效
Dec 17 Javascript
jquery树形菜单效果的简单实例
Jun 06 Javascript
使用nvm管理不同版本的node与npm的方法
Oct 31 Javascript
Angular 作用域scope的具体使用
Dec 11 Javascript
nuxt引入组件和公共样式的操作
Nov 05 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获取网络文件的实现代码
2010/01/01 PHP
解析php5配置使用pdo
2013/07/03 PHP
php实现删除空目录的方法
2015/03/16 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
读jQuery之十三 添加事件和删除事件的核心方法
2011/08/23 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
js获取当前时间显示在页面上并每秒刷新
2014/12/24 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
JS实现改变HTML上文字颜色和内容的方法
2016/12/30 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
python实现的config文件读写功能示例
2019/09/24 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
Pycharm添加虚拟解释器报错问题解决方案
2020/10/13 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
英国、欧洲和全球租车服务:Avis英国
2016/08/29 全球购物
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
Fanatics法国官网:美国体育电商
2019/08/27 全球购物
cf收人广告词大全
2014/03/14 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
拾金不昧表扬信怎么写
2015/05/04 职场文书
超市员工辞职信范文
2015/05/12 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
CSS3鼠标悬浮过渡缩放效果
2021/04/17 HTML / CSS
vue router 动态路由清除方式
2022/05/25 Vue.js
Redis实现订单过期删除的方法步骤
2022/06/05 Redis