手机端适配战略以及完成

装备自身的适配战略

ios和Android的适配战略是不一样的。

关于ios,一个装备含有越多的逻辑像素,那末这个装备也就越大,换句话说,ios的逻辑像素能够作为一个物理长度单元。运用的场景是如许的,用px单元设置了一个元素的大小,这个元素在差别大小的ios装备下实际上是一样大的。所以ios战略是更大的屏幕是为了显现更多的内容。临时将它称之为更多内容战略

然则关于Android装备,大抵的状况是不论装备大小,包括的逻辑像素宽度都是360px。用px单元设置一个元素的大小,装备越大,它在装备上显现的也等比变大。所以Android的战略是,屏幕越大是为了让内容看起来更大。临时称之为更大内容战略

个人认为ios的战略更加合理。然则由于我们没法猎取装备的物理尺寸大小,所以也就没有办法在Android的装备上面运用更多内容战略。所以我决议就在ios的装备上面实行ios的更多内容战略,而在Android的装备上实行更大内容战略。

ios的适配的战略完成

依据更多内容战略,我们会碰到两种状况

第一种是元素大小不随装备屏幕变大而变大,比方屏幕、图标、导航栏等,由于我们须要为用户显现更多的内容,这个时刻运用的单元是px。

第二种状况,元素的大小须要跟着装备的变大而变化。这类状况平常作用于容器元素。由于屏幕变大了,容器假如照样一样的大小就不相符显现更多内容战略。这类状况的完成比较复杂, 下面我们细致议论这类状况下的处理计划。

百分比

百分比这个单元是参照父元素大小的相对单元。实在百分比能够处理大部分题目。

我须要一个占有全部屏幕大小的容器,下面的代码能够圆满处理

.container { 
    width:100%; 
    height:100%; 
}

又或许我须要一个占有屏幕百分之五十的内容弹窗,至于高度就由内容决议吧

.dialog { 
    width:50%; 
    height:auto; 
}

对了它得居中,这也没什么题目

.dialog { 
    width:50%; 
    height:auto; 
    margin-left:-25%; 
    left:50%; 
}

然则,怎样涉及到高度,百分比的题目就显现出来了。比方我想让上面的弹窗的高度为屏幕高度的60%,至于内容过量就让它内部转动吧;

.dialog { 
    width:50%; 
    height:auto; 
    margin-left:-25%; 
    left:50%;
    height:60%;
} 

好像也没有什么题目,然则,假如我想让它高低居中

.dialog { 
    width:50%; 
    margin-left:-25%; 
    left:50%;
    height:60%;
    margin-top:-30%;
    top:50%;
} 

无法的发明它并没有居中,题目就出在maring-top 百分比所参照的是父级元素的宽度而不是高度。终究发明了一个百分比无计可施的一个点了。

转变一下需求,我们须要一个正方形的弹窗,弹窗的宽度照样请求50%;

.dialog {
    width:50%; 
    margin-left:-25%; 
    left:50%;
    height: ?%;
}

我们试着做了,然则他的高度应当是多少呢,确切百分比无计可施了。

vw & vh

vw 是将当前屏幕的宽度分为一百份以后的长度

wh 是将当前屏幕的高度分为一百份以后的长度

这几乎是对百分比计划的圆满补充了。针对上面百分比无计可施的两个点,vw 和 vh 都能应对。

百分比高度元素的垂直居中

.dialog { 
    width:50%; 
    margin-left:-25%; 
    left:50%;
    height:60vh;
    margin-top:-30vh;
    top:50%;
} 

百分比宽度元素牢固长宽比例

    .dialog { 
        width:50vw;
        margin-left:-25vw; 
        left:50%;
        height: 50vw;
} 

然则遗憾的是 vw 和 vh 存在着不可无视的兼容新题目;

用 rem 模拟 vw & vh

rem只能模拟 vw 和 vh 中的一个。由于平常比较经常使用的是vw,所以我们把 rem 当作 vw 运用。

能够运用剧本盘算 html 的 rem,代码以下

var deviceWidth = window.screen.width;
document.querySelector('html').style.fontSize = (deviceWidth)+'px';

百分比宽度元素牢固长宽比例

.dialog {
    width: 0.5 rem;
    margin-left: -0.25 rem;
    left: 50%;
    height: 0.25 rem;
}

由于 rem 只能模拟 vw vh 的一种 所以这时刻关于百分比高度元素的垂直居中 的完成就无计可施了。

用剧本完成

有极少数规划上的题目 css好像无计可施了。这个合适只能依托全能的剧本了。

    原文作者:sumight
    原文地址: https://segmentfault.com/a/1190000005153197
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞