Html开发之Viewport的使用

      近年来随着移动端的快速发展,越来越多传统的web应用需要适配移动终端,下面记录一下如何通过viewport实现简单的不同型号的手机端的适配问题。不过在此之前,介绍一下如何通过Chrome浏览器,调试在移动终端上的效果。

调试工具

     首先我们打开chrome谷歌浏览器,输入天猫地址(实现了手机端适配),按F12进入开发者模式。进入如下的界面:

      接下来点击右下方圈红的部分,可以调出另一个控制台,如下界面:

      选择某个Device-设备,点击Emulate,之后重新刷新页面即可看到效果,这里我选中iphone5,具体效果如下:

         可以知道的是天猫是做了移动端的适配的。

支持移动端

       知道了如何进行调试之后,如何支持移动端呢。这里主要是通过Viewport来实现移动端的适配的。其实仔细观察一些使用HTML5开发手机应用或手机网页时,我们可能(有些可能不是通过viewport来实现适配的)会发现如下代码:

<meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no;" />

        那么Viewport是什么呢?

        手机浏览器是把页面放在一个虚拟的窗口-viewport中的,通常情况下这个虚拟的窗口比屏幕宽,这样就不用吧每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),此时虽然显示不完全,但是用户仍可以通过平移和缩放来看网页的内容。viewport就是让网页开发者通过其大小,动态的设置其网页内容中控件元素的大小,从而使得在浏览器上实现和web网页中相同的效果(比例缩小)。

        当然,更加优秀的做法是类似天猫的做法:针对手机端重新进行页面设计、布局,因为手机屏幕毕竟有限,按照web页面等比缩小的方式较之最原始有改进,但是如何在小屏幕上展示最合适的内容给用户的设计才是最贴切的。

        不过对于一些没有太多要求的,可以简单的通过viewport实现适配。

Viewport语法

         width:控制viewport的大小,一般情况下指定为device-width(单位为缩放为100%的CSS像素),也可以指定一个固定的值例如600.

         height:和width相应,指定高度。

         initial-scal:初始缩放比例,页面第一次load的时候的缩放比例。

         **maximum-scale:**允许用户缩放到的最大比例。

         **minimum-scale:**允许用户缩放到的最小比例。

         **user-scalable:**用户是否可以手动缩放。

Demo

         了解了Viewport接下来,我们实现一个小Demo,web版2048游戏的手机适配,web上的效果如下图:

       接下来的逻辑便是通过实际的设备大小,调整元素大小,核心代码:

1var documentWidth = window.screen.availWidth; 2var gridContainerWidth = 0.92*documentWidth; 3var cellSideLength = 0.18*documentWidth; 4var cellSpace = 0.04*documentWidth; 5var headerWidth=window.screen.availWidth; 6function prepareForMobile(){ 7    if(documentWidth>500){ 8        //web端 9        gridContainerWidth =500; 10        cellSpace=20; 11        cellSideLength=100; 12        headerWidth = 500; 13    }else 14    { 15        //手机端额外处理头部 16        headerWidth = headerWidth*0.92; 17    } 18    $('#grid-container').css('width',gridContainerWidth - 2*cellSpace); 19    $('#grid-container').css('height',gridContainerWidth - 2*cellSpace); 20    $('#grid-container').css('padding',cellSpace); 21    $('#grid-container').css('border-radius',0.02*gridContainerWidth); 22    $('.grid-cell').css('width',cellSideLength); 23    $('.grid-cell').css('height',cellSideLength); 24    $('.grid-cell').css('border-radius',0.02*cellSideLength); 25    //设置头部 26    $('.header').css('width',headerWidth); 27    $('#newGame').css('width',headerWidth*0.20+'px'); 28    $('#topScore').css('width',headerWidth*0.40*0.90+'px'); 29}

         之后通过chrome浏览器即可看到在各个手机端上的效果:

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang