移动端web页面适配

移动端Web页面,即常说的H5页面、手机页面、webview页面等。

手机设备屏幕尺寸不一,在做移动端的Web页面时,需要考虑在安卓/IOS的各种尺寸设备上的兼容。

适配的目标就是做到在不同尺寸的手机设备上,页面“相对性的达到合理的展示”或者“保持统一效果的等比缩放“

介绍:

长度单位:px em rem

  • px 在缩放页面时无法调整那些使用它作为单位的字体、按钮等的大小;
  • em 的值并不是固定的,会继承父级元素的字体大小,代表倍数;
  • rem 的值并不是固定的,始终是基于根元素 <html> 的,也代表倍数。

鉴于上述长度单位的特性,为了满足适配的要求,rem是最优的选择。

rem适配实现方式:

首先是如何将px转化成rem,举个例子来说,有一个image参数代码如下

.img{
    width:320px;
    height:160px;
}

那么如果你页面

html{
    font-size:16px;
}

转化成rem为单位的话就是

.img{
    width:20rem;
    height:10rem;
}

可以很明显的得出一个公式: rem=px/font-size

当然上述只是举一个例子来讲述px和rem之间的转换关系。

下面是用sass的函数来计算px转rem,避免了一直手动计算

/* 
 * 此处 $base-font-size 具体数值根据设计图尺寸而定
 * eg:若设计图为iPhone6(375*667)的二倍稿,则$base-font-size=32px
 */ 
@function px2rem($px, $base-font-size: 32px) {
  @if (unitless($px)) {
    @warn "Assuming #{$px} to be in pixels, attempting to convert it into pixels for you";
    @return px2rem($px + 0px); // That may fail.
  } @else if (unit($px) == rem) {
    @return $px;
  }
  @return ($px / $base-font-size) * 1rem;
}

// 使用,eg:
font-size: px2rem(18px);

当然要做到页面自适应,我们还需要动态的去改变html的font-size。这里就要用到js去获取页面的宽度来设置font-size,代码如下:

<script>
    $(window).load(function(doc, win) {
    var docEle = doc.documentElement,
        evt = "onorientationchange" in window ? "orientationchange" : "resize", //旋转屏幕、大小变化
        fn = function() {
            var width = document.documentElement.clientWidth; //获取可见宽度
            var height= document.documentElement.clientHeight;//获取可见高度
            width && (docEle.style.fontSize = width / 23.437+ "px");//设置font-size
        };
    win.addEventListener(evt, fn, false); //添加事件
    win.addEventListener('resize', fn, false);
    doc.addEventListener("DOMContentLoaded", fn, false);
}(document, window))
</script>

这个js主要的地方就是设置font-size时width所除之数。它的算法是屏幕分辨率/font-size

这里我依然用16和750的分辨率来举例。那么此js里的算式的除数就是 750/16=46.875。相应的在css中的px转rem就是我上面举的例子。

当然在具体环境的应用中,我不推荐用16px,原因是当屏幕分辨率较小时,font-size算出来的值会小于12,而在webkit的浏览器中设置有最小的font-size为12px,即当font-size小于12时仍以font-size:12px来显示,这就会导致显示出现问题。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • title: 移动端Web页面适配浅析date: 2018-01-31 16:38:01tags: 移动端 适配 ...
    豆板儿阅读 14,237评论 0 16
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,712评论 1 92
  • 刚开始做移动端web开发的同学应该都碰到过页面适配问题,为什么我在开发手机上调试好的页面在其他手机会有这样或那样的...
    留七七阅读 19,704评论 5 80
  • 作为一个前端开发人员,我们的任务是将UI设计师的图稿运用计算机语言呈现在用户面前。而现在的设备大小尺寸不一,近年来...
    小红依阅读 2,790评论 0 1
  • 昨天看电视《两生花》,电影《咱们结婚吧》,突然想起曾经说好要一起去看日出,然后就没有然后了。关于过去的记忆,总...
    duoduo_four阅读 1,796评论 0 1

友情链接更多精彩内容