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 类方法定义还是有点区别
Apr 15 Javascript
jQuery 自定义函数写法分享
Mar 30 Javascript
Javascript this 的一些学习总结
Aug 02 Javascript
jQuery实现精美的多级下拉菜单特效
Mar 14 Javascript
AngularJS实现表单手动验证和表单自动验证
Dec 09 Javascript
检查表单元素的值是否为空的实例代码
Jun 16 Javascript
js实现消息滚动效果
Jan 18 Javascript
基于cookie实现zTree树刷新后展开状态不变
Feb 28 Javascript
vue结合Echarts实现点击高亮效果的示例
Mar 17 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
Apr 23 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
Aug 13 Javascript
基于JavaScript实现表格隔行换色
May 08 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
Smarty变量调节器失效的解决办法
2014/08/20 PHP
php生成数字字母的验证码图片
2015/07/14 PHP
用javascript实现自定义标签
2007/05/08 Javascript
一个网马的tips实现分析
2010/11/28 Javascript
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
使用localStorage替代cookie做本地存储
2019/09/25 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
python3 kmp 字符串匹配的方法
2018/07/07 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
HTML5实现多张图片上传功能
2016/03/11 HTML / CSS
巴西Mr. Cat在线商店:购买包包和鞋子
2019/09/08 全球购物
采用怎样的方法保证数据的完整性
2013/12/02 面试题
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
生物制药专业自我鉴定
2014/02/19 职场文书
给市场的环保建议书
2014/05/14 职场文书
2014年教师工作总结
2014/11/10 职场文书
我们的节日端午节活动总结
2015/02/11 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
培训班开班主持词
2015/07/02 职场文书
电台广播稿范文
2015/08/19 职场文书
JavaScript ES6的函数拓展
2022/01/18 Javascript