WEBAPP开发之固定宽度布局开发WEBAPP如何实现多终端下自适应?
白羽 2018-07-19 来源 :网络 阅读 738 评论 0

摘要:本文将带你了解WEBAPP开发之固定宽度布局开发WEBAPP如何实现多终端下自适应?,希望本文对大家学WebApp有所帮助。

1.在css中我们一般使用px作为单位,在桌面浏览器中css的1个像素往往都是对应着电脑屏幕的1个物理像素,这可能会造成我们的一个错觉,那就是css中的像素就是设备的物理像素。但实际情况却并非如此,css中的像素只是一个抽象的单位,在不同的设备或不同的环境中,css中的1px所代表的设备物理像素是不同的。2.CSS中的1PX并不等于设备的1PX还有一个因素也会引起css中px的变化,那就是用户缩放。例如,当用户把页面放大一倍,那么css中1px所代表的物理像素也会增加一倍;反之把页面缩小一倍,css中1px所代表的物理像素也会减少一倍。3.利用META标签对VIEWPORT进行控制移动设备默认的viewport是layoutviewport,也就是那个比屏幕要宽的viewport,但在进行移动设备网站的开发时,我们需要的是idealviewport。那么怎么才能得到idealviewport呢?这就该轮到meta标签出场了。我们在开发移动设备的网站时,最常见的的一个动作就是把下面这个东西复制到我们的head标签中:该meta标签的作用是让当前viewport的宽度等于设备的宽度,同时不允许用户手动缩放。也许允不允许用户缩放不同的网站有不同的要求,但让viewport的宽度等于设备的宽度,这个应该是大家都想要的效果,如果你不这样的设定的话,那就会使用那个比屏幕宽的默认viewport,也就是说会出现横向滚动条。这个name为viewport的meta标签到底有哪些东西呢,又都有什么作用呢?今天给大家分享一下,一.背景介绍现在人们通过手机浏览网页占了大多数,随着浏览方式的改变,网页在webapp下面实现多终端自适应,无论对于避免工程师无谓的重复劳动或者是项目管理的便捷性上来说重要性都是十分巨大的。二.知识剖析固定宽度布局?在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的meta标签的使用,才能更好地让我们的网页适配或响应各种不同分辨率的移动设备。三.常见问题1.viewport的概念?2.css中的1px等于设备的1px吗?3.如何利用meta标签对viewport进行控制?四.解决方案1.VIEWPORT的概念通俗的讲,移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,在具体一点,就是浏览器上(也可能是一个app中的webview)用来显示网页的那部分区域,但viewport又不局限于浏览器可视区域的大小,它可能比浏览器的可视区域要大,也可能比浏览器的可视区域要小。在默认情况下,一般来讲,移动设备上的viewport都是要大于浏览器可视区域的,这是因为考虑到移动设备的分辨率相对于桌面电脑来说都比较小,所以为了能在移动设备上正常显示那些传统的为桌面浏览器设计的网站---移动设备上的浏览器都会把自己默认的viewport设为980px或1024px(也可能是其它值,这个是由设备自己决定的),但带来的后果就是浏览器会出现横向滚动条,因为浏览器可视区域的宽度是比这个默认的viewport的宽度要小的。下图列出了一些设备上浏览器的默认viewport的宽度。2.CSS中的1PX并不等于设备的1PX在css中我们一般使用px作为单位,在桌面浏览器中css的1个像素往往都是对应着电脑屏幕的1个物理像素,这可能会造成我们的一个错觉,那就是css中的像素就是设备的物理像素。但实际情况却并非如此,css中的像素只是一个抽象的单位,在不同的设备或不同的环境中,css中的1px所代表的设备物理像素是不同的。还有一个因素也会引起css中px的变化,那就是用户缩放。例如,当用户把页面放大一倍,那么css中1px所代表的物理像素也会增加一倍;反之把页面缩小一倍,css中1px所代表的物理像素也会减少一倍。3.利用META标签对VIEWPORT进行控制移动设备默认的viewport是layoutviewport,也就是那个比屏幕要宽的viewport,但在进行移动设备网站的开发时,我们需要的是idealviewport。那么怎么才能得到idealviewport呢?这就该轮到meta标签出场了。我们在开发移动设备的网站时,最常见的的一个动作就是把下面这个东西复制到我们的head标签中:该meta标签的作用是让当前viewport的宽度等于设备的宽度,同时不允许用户手动缩放。也许允不允许用户缩放不同的网站有不同的要求,但让viewport的宽度等于设备的宽度,这个应该是大家都想要的效果,如果你不这样的设定的话,那就会使用那个比屏幕宽的默认viewport,也就是说会出现横向滚动条。这个name为viewport的meta标签到底有哪些东西呢,又都有什么作用呢?metaviewport标签首先是由苹果公司在其safari浏览器中引入的,目的就是解决移动设备的viewport问题。后来安卓以及各大浏览器厂商也都纷纷效仿,引入对metaviewport的支持,事实也证明这个东西还是非常有用的。在苹果的规范中,metaviewport有6个属性(暂且把content中的那些东西称为一个个属性和值)把当前的viewport宽度设置为idealviewport的宽度!要得到idealviewport就必须把默认的layoutviewport的宽度设为移动设备的屏幕宽度。因为metaviewport中的width能控制layoutviewport的宽度,所以我们只需要把width设为width-device这个特殊的值就行了。中心其实就是理解什么是css像素和物理像素,简单讲,一个任意宽度的屏幕,比如说设置css像素为980px,屏幕每一行所显示的css内容就是980px的css像素内容,以下面这个盒子为例;盒子的定宽为350px,设置

屏幕就会显示400px的css像素(看下图可以发现恰好比350px的盒子宽一点)

如果设置

屏幕就会显示870px个css像素,(可以看到正好是两个盒子350*2多一点)

2.如果没有下面这行代码,手机在访问页面过程中会默认layoutviewport为980px,因为layoutviewport的宽度要默认比visualviewport(视觉视口,就是实际上看到的浏览器的页面部分)要窄,所以会出现横向滚动条,并且随页面宽度变化,内容大小也会等比例缩放(因为每一行要铺满980px个css像素)。

3.initial-scale是初始化比例,很多人搞不清楚这个scale(比例)是相对于谁的比例,其实这个是相对于原本的页面css像素,比如下面这个350px的盒子,如果设置initial-scale=0.4,那么他显示的物理像素就会变成350px*0.4=140px;

4.如果同时设置width=750px,initial-scale=1,哪个大显示哪个。

5.如果不设置viewport的话,设置@media是无效的,因为宽度总是默认为980px,这里很重要,被坑过。


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之WebApp频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程