• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > 移动端页面布局应该如何操作

移动端页面布局应该如何操作

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含事儿,那些,布局,页面,移动等相关知识,匿名希望在学习及工作中可以帮助到您

移动端页面布局的那些事儿

一. viewport

  1. 什么是viewport

    简单来讲,viewport就是浏览器上,用来显示网页的那一部分区域了,也就是说,浏览器的实际宽度,是和我们手机的宽度不一样的,无论你的手机宽度是320px,还是640px,在手机浏览器内部的宽度,始终会是浏览器本身的viewport。如今的浏览器,都会给自己的本身提供一个viewport的默认值,可能是980px,或者是其他值。就以手机来说吧,目前,新版本的手机浏览器,绝大部分是以980px作为默认的viewport值的。我这里对新版本的不同平台下的浏览器做了测试,经过测试,iphone下的默认viewport为980px,安卓下的浏览器,目前主流的最新浏览器(比如chrome,还有很多国产的像qq,uc)的viewport也是980px了。

  2. viewport是用来干什么的

    viewport的默认值,一般来说是大于手机屏幕的。这样就可以做到当我们在浏览桌面端网页的时候,可以让桌面端端网页正常显示(我们普通页面设计的时候,一般页面的主区域是以960px来做的,所以980px这个值,可以做到桌面端网页的正常显示)。但是,其实我们手机的屏幕宽度是没有960px的,因此浏览器会出现横向滚动条。同时,即使是基于980的viewport,我们在移动端浏览我们的桌面页面的体验其实也并不好,所以,一般的,我们会专门给浏览器设计一个移动端的页面。

  3. 对viewport的控制

    如今可以绝大部分浏览器里(即主流的安卓浏览器和ios),都支持对viewport的一个控制了。一般的,我们会这么写。

    viewport默认有6个属性

    我们把这个标签是在head里面,像这样

    <meta name="viewport" content="initial-scale=1">

    这样就可以做到对viewport的控制了

    • width: 设置viewport的宽度(即之前所提及到的,浏览器的宽度详),这里可以为一个整数,又或者是字符串"width-device"

    • initial-scale: 页面初始的缩放值,为数字,可以是小数

    • minimum-scale: 允许用户的最小缩放值,为数字,可以是小数

    • maximum-scale: 允许用户的最大缩放值,为数字,可以是小数

    • height: 设置viewport的高度(我们一般而言并不能用到)

    • user-scalable: 是否允许用户进行缩放,'no'为不允许,'yes'为允许

二. 关于我们的设备

  1. 三个需要了解的概念:

    • PPI: 可以理解为屏幕的显示密度

    • DPR: 设备物理像素和逻辑像素的对应关系,即物理像素/逻辑像素

    • Resolution: 就是我们常说的分辨率

  2. 物理像素与逻辑像素

    看了我们上面内容一的第一点之后,或许有些人会有些疑问,我的安卓手机,或者iphone6plus(目前应该仅限于这一款机型吧),买回来的是1920x1080的或者其他更高的,比我之前所谓的那个viewport默认的980px要大。

    这样的问题,也就是我之前所说的物理像素与逻辑像素的关系了(即DPR)。以1920x1080为例,1080为物理像素,而我们在viewport中,获取到的,比如"width-device",是逻辑像素。所以之前viewport的默认值,所比对的大小,其实是逻辑像素的大小,而非物理像素的大小。

    以iphone6为例,在不做任何缩放的条件下,iphone6的获取到的'width-device'为375px,为屏幕的逻辑像素。而购买时我们所知的750px,则为屏幕的物理像素。

  3. CSS的问题

    有了上面第二点的一些基础,还是以iphone6为例,我们可以知道,其实我们所写的1px,在iphone6上为2px的物理像素。所以,最后的,给出一个结论。就是我们写的1px,在移动端,是逻辑像素的1px,而非物理像素的1px。

三. 使用rem布局

  1. 简单说下rem

    rem是根据页面的根元素的font-size的一个相对的单位,即

    html{
    	font-size: 16px;
    }	

    比如当我们在一个div中,如此写

    div{
    	width: 2rem;
    }

    那么我们的width,是16*2 = 32px

  2. rem做到适配不同分辨率

    这个是现在手机淘宝的移动端的解决方案,即使用rem的特性,来对页面进行布局。

    下面举一个例子

    假定设计稿的大小为750,那么我们则将整个图分成100份来看(下面的题外话会说明为什么会分成100份来看)

    那么,我们现在就让根部元素的font-size为75px

    html{
    	font-size: 75px;
    }

    那么,我们现在就可以比对设计稿,比如设计稿中,有一个div元素,宽度,高度都为75px,那么我们这样写即可

    div{
    	height: 1rem;
    	width: 1rem;
    }

    可能看到这里,一些人还是不明白怎么用rem做到适配不同的分辨率,那么我们再来

    现在,我们换设备了,不用这个设备是一个width为640的手机

    那么这个时候,我们的rem单位就起到作用了。

    我们的rem全是根据html的font-size来改变的,所以说,这个时候,我们只需要把html下的font-size改成64px。那么,我们之前的div,因为是根据html下的font-size动态变化的,那么。此时也就变成了宽度和高度都为64px的东西了。这样,就可以做到适配不同的屏幕分辨率了。(其实就是个等比缩放)

    总结一下,我们的解决方案,其实就是 设计稿的像素/html的font-size = 用来代替px的rem。

    这一个步骤,我们需要通过JS来进行操作。

    对于js的操作在下面会提到。

  3. DPR的问题

    视觉姐姐给了我们设计稿,并交由我们实现,那么,我们应该去认真的实现:-)(试想你做了一张图,而前端很多地方并没有按照你所想的,你所给的去做,而是私自改变了很多东西,你肯定会不高兴的)

    那么1px会出现什么问题呢。

    还记得我们第二大点讲的,我们的设备,是有物理像素和逻辑像素的。而假设我们的设计稿是750的,同时还是以iphone6为例,此时如果我们的viewport是这样的

    <meta name="viewport" content="initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">

    之前说过,在不做任何缩放的条件下,iphone6获取到的viewport为375px。

    然后我们的页面中有个div,他有一个边框值,如下

    div{
    	height: 5rem;
    	widht:5rem;
    	border: 1px solid #000
    }

您可能想查找下面的文章:

  • 移动端页面布局应该如何操作

相关文章

  • 2018-12-03HTML5开源游戏引擎lufylegend1.6.0发布
  • 2018-12-03HTML5移动开发图片压缩上传功能
  • 2018-12-03h5实现文本框提示语的代码实例
  • 2018-12-03在H5中如何使用details元素和summary元素
  • 2018-12-03会走动的图形html5时钟示例_html5教程技巧
  • 2018-12-03HTML5+NodeJs实现WebSocket即时通讯的示例代码分享
  • 2018-12-03range对象的clone方法
  • 2018-12-03HTML5结合互联网+ 实现的3D隧道(附代码)
  • 2018-12-03实例讲解使用SVG制作loading加载动画的方法_html5教程技巧
  • 2017-08-06html5指南-5.使用web storage存储键值对的数据

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 月薪10-12k的前端人员应该具备怎样一种技术水平?
    • 用html5 js实现浏览器全屏
    • hwSlider-内容滑动切换效果(一)
    • HTML5安全攻防详析之完结篇:HTML5对安全的改进
    • html5 音频播放图文实例
    • 移动站如何使用?总结移动站实例用法
    • Android使WebView支持HTML5 Video全屏播放的方法分享(图)
    • html5 Canvas绘制线条 closePath()实例代码
    • 利用XML开发留言板简单的例子
    • 乐车邦app 前端用的什么框架和技术?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有