Chloe Wang

(๑•ᴗ•๑)做一个有记性有温度不掉发的程序媛!

  • 主页
  • 前端札记
  • 你好,陌生人
所有文章 关于我

Chloe Wang

(๑•ᴗ•๑)做一个有记性有温度不掉发的程序媛!

  • 主页
  • 前端札记
  • 你好,陌生人

多倍屏、刘海屏解决方案

2019-04-15

以下内容若有问题烦请即时告知我予以修改,以免误导更多人。


🙉极客到底!

多倍屏、刘海屏判断逻辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
(function() {
/**
* 一般UA
* User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B350 Safari/8536.25
* ua has 'context:com', fefine meta viewport width
*/
var ua = navigator.userAgent.toLowerCase();
var appv = navigator.appVersion;
var html = document.documentElement;
var isIos = /ip(hone|od|ad)/i.test(ua);

var uaContextReg = /context\:([^\s]+)/i;
var tryToGetContext = uaContextReg.exec(ua);

var w = window.screen.width;
var h = window.screen.height;
var ratio = window.devicePixelRatio ? window.devicePixelRatio : 0;

var vArr, ver;
var dev;

if (isIos) {
html.classList.add("ns-ios");
vArr = appv.match(/OS (\d+)[_\.](?:\d+)[_\.]?(?:\d+)?/);
ver = parseInt(vArr[1], 10);

if (ver >= 8) {
html.classList.add("ns-hairlines");
}

if(ratio == 3) {
if( w = 375 && h == 812) { // iPhone X、iPhone XS
html.classList.add("ns-ios-bangs", "ns-ios-x");
} else if ( w = 414 && h == 896) { // iPhone XS Max
html.classList.add("ns-ios-bangs", "ns-ios-xmax");
}
}

if(ratio == 2 && w == 414 && h == 896) {
html.classList.add("ns-ios-bangs", "ns-ios-xr");
}

} else {
vArr = appv;
ver = parseInt(ua.substr(ua.indexOf('android') + 8, 3));
html.classList.add("ns-android");

if (ver < 6) {
html.classList.add("ns-android-" + ver);
}
}

if (tryToGetContext && tryToGetContext[1] == 'com') {
document.querySelector('meta[name=viewport]')
.setAttribute('content', 'initial-scale=1.0,user-scalable=no,minimum-scale=1.0,maximum-scale=1.0');
}

}());
1
2
3
4
5
6
7
8
9
10
11
12
// iPhone X、iPhone XS
"isIosX": /ip(hone|od|ad)/i.test(navigator.userAgent.toLowerCase()) && window.devicePixelRatio === 3 && window.screen.width === 375 && window.screen.height === 812,

// iPhone XS Max
"isIosXMax": /ip(hone|od|ad)/i.test(navigator.userAgent.toLowerCase()) && window.devicePixelRatio === 3 && window.screen.width === 414 && window.screen.height === 896,

// iPhone XR
"isIosXR": /ip(hone|od|ad)/i.test(navigator.userAgent.toLowerCase()) && window.devicePixelRatio === 2 && window.screen.width === 414 && window.screen.height === 896,

"isIosBangs": function() {
return isIosX || isIosXMax || isIosXR;
}

刘海屏安全距离

1
.ns-ios-bangs .video-info { bottom: calc(1.28rem + env(safe-area-inset-bottom)); }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.tuan-tabs{position:fixed; bottom:0; left:0; width:100%; background:#fff; z-index:3;}
@supports (padding-bottom:constant(safe-area-inset-bottom)){
.tuan-tabs{padding-bottom:constant(safe-area-inset-bottom);}}
@supports (padding-bottom:env(safe-area-inset-bottom)){
.tuan-tabs{padding-bottom:env(safe-area-inset-bottom);}
}

/* ios11以下 */
@supports (padding-bottom:constant(safe-area-inset-bottom)) {
.detail-tab, .detail-buy-panel { padding-bottom: constant(safe-area-inset-bottom); }
.detail-buy-panel {max-height: calc(100% - 2.14rem - 0.6rem); background:#fff;}
.detail-buy-panel .panel-select {max-height: calc(100vh - 5.22rem - 0.68rem);}
}

/* ios11以上 */
@supports (padding-bottom:env(safe-area-inset-bottom)) {
.detail-tab, .detail-buy-panel { padding-bottom: env(safe-area-inset-bottom); }
.detail-buy-panel {max-height: calc(100% - 2.14rem - 0.6rem); background:#fff;}
.detail-buy-panel .panel-select {max-height: calc(100vh - 5.22rem - 0.68rem);}
}

ios 1px解决方案

1
2
3
4
5
6
7
8
9
10
11
12
13
.item {
border: 1px solid #ccc;
}

.ns-hairlines .item {
border-width: .7px;
}

@media all and (max-device-width:320px) {
.ns-hairlines .item {
border-width: .5px;
}
}

更多内容可以订阅本人微信公众号,一起开启前端小白进阶的世界!
微信公众号:无媛无故

  • 项目总结
  • css
  • 前端札记

扫一扫,分享到微信

微信分享二维码
挖坑埋坑填坑
Intellij IDEA建立mac下java开发环境
© 2019 Chloe Wang
Hexo Theme Yilia by Litten
  • 所有文章
  • 关于我

tag:

  • js
  • 应用
  • 前端周边
  • jQuery
  • HTML5
  • CSS3
  • 杂技
  • 目录
  • 前端论坛
  • webview
  • java
  • 微信
  • vue
  • php
  • 项目总结
  • video.js
  • css
  • 规范
  • 特效
  • 填坑记
  • 性能优化
  • 爱做饭
  • 爱旅游
  • 爱生活
  • 工具

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • slot研究报告

    2019-07-26

    #js#vue

  • NativeApi思考

    2019-07-22

    #webview

  • 每天10个前端知识点:杂技

    2019-07-19

    #杂技

  • video.js小记

    2019-06-25

    #项目总结#video.js

  • es6笔记

    2019-06-01

    #js

  • webview回退

    2019-05-24

    #webview

  • 那些prototype那些call

    2019-05-12

    #js

  • 更改微信内分享链接

    2019-05-09

    #微信

  • 巴适川渝

    2019-05-03

    #爱旅游

  • 数组倒置拷贝问题

    2019-04-25

    #js#项目总结

  • 挖坑埋坑填坑

    2019-04-20

    #js#填坑记

  • 多倍屏、刘海屏解决方案

    2019-04-15

    #项目总结#css

  • Intellij IDEA建立mac下java开发环境

    2019-04-04

    #java

  • 征服宝岛~

    2019-03-31

    #爱旅游

  • 承接页问题汇总

    2019-03-25

    #项目总结

  • vue小记

    2019-03-24

    #vue

  • Array高阶函数

    2019-02-26

    #js

  • css合辑

    2019-01-10

    #css

  • 数字自增速变特效

    2018-12-11

    #js#特效

  • fixed input输入框解决方案

    2018-10-25

    #js#填坑记

  • nextTick研究报告

    2018-10-11

    #vue

  • 拖拽衍生记

    2018-09-30

    #js#特效

  • 北京5日游攻略~

    2018-09-20

    #爱旅游

  • 初识proxy

    2018-05-07

    #js

  • 安卓弹窗下滑带动webview下拉刷新解决方案

    2018-05-02

    #js#项目总结

  • target新思

    2018-03-31

    #js#前端周边

  • 小厨教你做鸡蛋灌饼

    2018-03-28

    #爱做饭

  • 九宫格转盘特效

    2018-03-09

    #js#特效

  • vue-router使用

    2018-03-09

    #js#vue

  • 刮刮卡特效

    2018-02-25

    #js#特效

  • 安卓弹窗下拉刷新解决方案

    2018-01-17

    #js#项目总结

  • 2017-D2前端技术论坛 新思

    2018-01-01

    #前端论坛

  • 图片预加载方案

    2017-12-25

    #js#性能优化

  • 翻牌特效解决方案

    2017-12-08

    #js#特效

  • 获取淘宝图文详情

    2017-11-10

    #js#前端周边

  • css规范对比

    2017-10-10

    #css#规范

  • 两种原生组件书写方式

    2017-09-24

    #js#项目总结

  • 浏览器模拟app环境、微信环境

    2017-09-10

    #前端周边

  • 淘口令分享

    2017-08-05

    #项目总结

  • php小记

    2017-07-24

    #php

  • swiper小记

    2017-07-07

    #js

  • 软键盘搜索及事件

    2017-06-30

    #js

  • 三栏tab横向滑动

    2017-06-13

    #js#特效

  • 每天10个前端知识点:目录

    2017-06-02

    #目录

  • 每天10个前端知识点:CSS3(2)

    2017-06-01

    #CSS3

  • 每天10个前端知识点:CSS3(1)

    2017-05-31

    #CSS3

  • 每天10个前端知识点:HTML5(内联SVG)

    2017-04-23

    #HTML5

  • 每天10个前端知识点:HTML5(canvas应用)

    2017-04-22

    #HTML5

  • 每天10个前端知识点:HTML5(canvas)

    2017-04-05

    #HTML5

  • 每天10个前端知识点:HTML5(线程、websocket)

    2017-04-03

    #HTML5

  • 我为什么不考研

    2017-04-03

    #爱生活

  • 每天10个前端知识点:HTML5(选择器、自定义属性、存储)

    2017-03-19

    #HTML5

  • 每天10个前端知识点:HTML5(选择器、自定义属性、存储)

    2017-03-18

    #HTML5

  • 每天10个前端知识点:HTML5(新增元素及属性)

    2017-03-17

    #HTML5

  • 每天10个前端知识点:HTML5目录

    2017-03-15

    #HTML5

  • 每天10个前端知识点:代码管理及常见命令

    2017-03-13

    #工具

  • 小厨教你做红烧鱼

    2017-03-09

    #爱做饭

  • 每天10个前端知识点:算法与数据结构

    2017-03-01

    #js

  • 每天10个前端知识点:面向对象(下)

    2017-02-27

    #js

  • 每天10个前端知识点:面向对象(中)

    2017-02-26

    #js

  • 每天10个前端知识点:面向对象(上)

    2017-02-25

    #js

  • 小厨教你做叉烧

    2017-02-25

    #爱做饭

  • 每天10个前端知识点:性能优化篇

    2017-02-23

    #js#css#性能优化

  • 每天10个前端知识点:布局大全

    2017-02-19

    #css

  • 每天10个前端知识点:正则应用篇

    2017-02-17

    #js#应用

  • 每天10个前端知识点:正则表达式

    2017-02-16

    #js

  • 每天10个前端知识点:jQuery(下)

    2017-02-15

    #jQuery

  • 每天10个前端知识点:jQuery(上)

    2017-02-14

    #jQuery

  • 每天10个前端知识点:ajax && jsonp

    2017-02-12

    #js

  • 每天10个前端知识点:原生篇(6)

    2017-02-06

    #js

  • 每天10个前端知识点:命名规范

    2017-02-04

    #前端周边

  • 每天10个前端知识点:运动框架应用篇(下)

    2017-02-03

    #js#应用

  • 每天10个前端知识点:运动框架应用篇(中)

    2017-02-02

    #js#应用

  • 每天10个前端知识点:运动框架应用篇(上)

    2017-02-01

    #js#应用

  • 每天10个前端知识点:原生运动框架

    2017-01-31

    #js

  • 每天10个前端知识点:事件篇

    2017-01-22

    #js

  • 每天10个前端知识点:各种宽高距离篇

    2017-01-19

    #js

  • 每天10个前端知识点:js组成篇

    2017-01-17

    #js

  • 每天10个前端知识点:原生篇(5)

    2017-01-15

    #js

  • 每天10个前端知识点:数组应用篇

    2017-01-14

    #js#应用

  • 每天10个前端知识点:原生篇(4)

    2017-01-13

    #js

  • 每天10个前端知识点:原生篇(3)

    2017-01-12

    #js

  • 每天10个前端知识点:原生篇(2)

    2017-01-12

    #js

  • 每天10个前端知识点:原生篇(1)

    2017-01-10

    #js