zoukankan      html  css  js  c++  java
  • H5常用代码:适配方案4

    前面有分享了4种适配方案,但始终是通过手动缩放或者视口缩放来实现,用来做一些专题页,或者功能相对简单的项目来说也是完全能应付的,但整体来说感觉还是一种缩放,说不上是真正的适配,言外之意就是即将分享真正的适配喽,呵呵,开个玩笑,其实适配方式千差万种,怎么用全靠自己把握,遇到问题总有解决方法,兵来将挡水来土掩,实在解决不了的就想办法绕过,哈哈。

    前面说了那么多废话,开始干正事,适配方案4主要是通过CSS3新增的一个长度单位REM来实现的,约定如下,页面中的1rem就是当前html的字体大小,假如当HTML的字体大小设为100px,那些时页面上的1rem=100PX,假设页面上的640PX的元素用REM表示就是6.4rem.

    适配代码如下:

    <!DOCTYPE html>
    <html>
    <head>
    <title>主结构&适配方案4</title>   
    <meta charset="utf-8">
    <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    <meta content="yes" name="apple-mobile-web-app-capable">
    <meta content="black" name="apple-mobile-web-app-status-bar-style">
    <meta content="telephone=no" name="format-detection">
    <meta content="email=no" name="format-detection">
    
    <!--适配主逻辑 S-->
    <script type="text/javascript">
        //适配函数
        function reset(){
            var htmlo=document.getElementsByTagName('html')[0],
                clientW=document.documentElement.clientWidth || document.body.clientWidth,
                fontSz=clientW/16+'px';
            htmlo.style.fontSize=fontSz;
        }
        //初始进来执行一次适配
        reset();
        //当屏幕旋转的时候,再次执行一次适配,这里延时100ms是为了解决当用户快速转换屏幕的时候,适配失败的问题
        window.addEventListener('resize',function(){
            setTimeout(function(){reset();},100);
        },false)
    </script>
    <!--适配主逻辑 E-->
    <style>
        body{
            margin:0;
            background:#000;
        }
        h3,p,ul{
            margin:0;
            padding:0;
        }
        .wrap{
             width:100%;
            -webkit-box-sizing: border-box;
            box-sizing: border-box;
            padding:0 0.5rem;
            background:#ccc;
            overflow:hidden;
            line-height:0.9rem;
            font-size:0.55rem;
        }
        .aside_left,.aside_right{
            width:7.5rem;
            height:4rem;
            float:left;
            color:white;
            line-height:4rem;
            font-size:0.65rem;
            text-align:center;
        }
        .aside_con{
            width:15rem;
            height:4rem;
            overflow:hidden;
            background:blue;
            color:white;
            line-height:2rem;
            font-size:0.75rem;
            text-align:center;
        }
        .aside_left{
            background:red;
        }
        .aside_right{
            background:green;
        }
        h3{
            font-size:0.7rem;
            line-height:1rem;
        }
         ul{
            overflow:hidden;
            padding-left:1rem;
            border:1px solid #000;
        }
    </style>
    </head>
    <body>
        <div id="wrap" class="wrap">
    
            <!--示范结构 S-->
            <div class="aside_con">
                <div class="aside_left">示范块内容0</div>
                <div class="aside_right">示范块内容1</div>
            </div>
            <div class="aside_con">整条示范内容2</div>
            <!--示范结构 E-->
            
    
        </div>
    </body>
    </html>

    适配说明:

    1:前面有提到1rem等于HTML的字体大小,那现在最关键的就是怎么根据不同屏幕尺寸修改HTML的字体大小,主要是通过根据屏幕的可视区宽度设置html节点的字体大小。例如你的设计稿是640px,我们就想像在可视区是640PX的时候,那除以16则HTML节点的字号就是40px,那要表现设计上的尺寸是320PX的元素,在写样式的时候就写320/40即8rem即可。

    可能会问为什么这里要除以16,是因为为了计算出一个合适的HTML字体大小,你完全可以除以其它值,或者直接不除,直接拿可视区宽度作为上HTML字体大小也是可以的,但是在布局计算元素尺寸的时候又是另一场恶梦。


    2:此种方案是开发HTML5项目很理想的适配方案,特别是公司的wap端项目或者wepAPP,此种适配有一个问题就是很难实现1px的东东,如果手机的像素比是2,那1px的边框会显示成2像素,只会影响这些小细节,不会影响功能使用,要想做出近1PX的东东,可以通过伪类:after :before来插入元素再缩小1部就可以模拟出近似1px的东东,如果想完美实现1px,适配方案5会是你需要的。

    以上代码归属于我的github常用H5代码整理项目(详见其中adaptationMode/mode4/index.html):https://github.com/xw5/mobile-code/

    欢迎clone,欢迎star,一起学习,一起进步

  • 相关阅读:
    MongoDB性能优化五步走之读书笔记
    Effective java 第十章 并发 避免过度同步 读书笔记
    Effective java 第三章对于所有对象都通用的方法(一) 读书笔记
    mongodb设计模式策略之读书笔记
    Effective java 第十章 并发 同步访问共享的可变数据 读书笔记
    搬运工生涯开端
    Effective java 第二章创建和销毁对象 读书笔记
    Mongodb聚合操作之读书笔记
    ArcGIS Engine 的插件式开发
    从一个AE画点的例子来看C#QI机制
  • 原文地址:https://www.cnblogs.com/xwwin/p/5782522.html
Copyright © 2011-2022 走看看