一、什么是移动端适配

移动端 Web 页面,就是常说的手机 h5页面、webview页面、公众号开发的网页等。

由于手机机型较多,各个手机的屏幕尺寸不一样,所以做移动端页面,需要考虑在安卓和ios的各种尺寸设备的兼容问题,我们要做的 web 页面适配,就是为了在不同设备上,页面能够保持统一展示效果,或等比缩放。

二、移动适配方案

常见的移动适配方案有以下几种:

  • viewport
  • 盒模型
  • flex
  • rem

2.1、viewport - 可视区

最初手机端需要照顾 PC 端,如果不设置 viewport,直接访问网页的时候,我们发现网页内容看着很小,这是因为页面按照PC端最小宽度980展示的,也就是我们的网页宽度就是980,而手机屏幕宽度通常375、411、320、414等,没有980那么大,所以页面被缩小了很多。

设置viewport

<meta name="viewport"
content="width=device-width,
initial-scale=1.0,
user-scalable=no,
minimum-scale=1.0
maximum-scale=1.0"
/>

分别对 meta 的各个属性介绍如下:

  • width - 设置viewport的宽度,为一个正整数,或字符串‘device-width’
  • initial-scale - 设置页面的初始缩放值,是一个数字,可以是小数
  • maximum-sacle - 设置页面最大缩放值,是一个数字,可以是小数
  • user-scalable - 是否允许用户进行缩放,值为'yes'或者'no',yes表示可缩放,no表示禁止缩放
  • minimum-scale - 允许用户缩放的最小值,是一个数字,可以是小数
  • height - 设置layout viewport的高度,这个属性很少使用

一般情况下禁止用户缩放网页,设置的时候只需要:

<meta name="viewport"  content="width=device-width, initial-scale=1.0 , user-scalable=no" >

就可以了,但是由于某些浏览器不能识别 initial-scale,所以添加了最大和最小缩放限制。

viewport 设置可视区之后,就会把网页的宽度设置为移动设备的屏幕宽度。

如想深入学习,可查阅《viewport深入理解和使用 - 前端人 - 博客园》。

2.2、盒模型

CSS3 中新增 box-sizing 属性,可以设置盒模型类型。属性值分别为:

content-box - 标准模型

border-box - IE模型

两者最大区别就是盒子的宽度不同:

标准模型宽 = 内容宽 + padding + border

IE模型宽 = 内容宽(包含padding、border)

这样做的优点就是可以任意设置它的 padding 和 border,不会挤压盒子的排列,但是如果设置一个 margin,会立马改变盒子的排列。

如想深入了解,可查阅《前端面试题中的“盒模型”是什么?》

2.3、flex - 弹性布局

Flex 是 Flex Box 的简写,意为弹性布局,为盒子提供最大的灵活性。任何一个元素都可以指定为弹性布局。

使用语法:

.box{
display:-webkit-flex;
display:flex;
}

采用 flex 布局的,也称 flex 容器,对应的属性有:

  • flex-direction 设置排列方向(向下、向上、向左、向右)的
  • flex-wrap 内容放置不下时换行方式
  • flex-flow 是flex-direction和flex-wrap属性简写默认值row nowrap
  • justify-content 定义在主轴上的对齐方式。
  • align-items 定义项目在交叉轴上如何对齐。
  • align-content 定义多根轴线的对齐方式

容器内的子元素增加,布局所占的系数:如:

<div class="box">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
//其样式为
.box{
display:-webkit-flex;
display:flex;
}
.child{
flex:1;
background:#eee;
height:100px;
border:solid 1px red;
}

此时我们给 child 不论如何设置边框、内边距,还有外边距,三个 child 始终排列在一行。

flex 布局优点:

  • 可以实现 border-box 的效果。
  • 添加弹性布局之后,元素不需要再使用浮动,清除浮动等。
  • 同行元素设置边框、内外边距均不影响同行排列。
  • 还可使用 max-width、min-width 或固定宽度与 flex 配合使用,另一边可自动填充功能。

不设置其他属性的时候,弹性布局默认水平方向从左排列,还可以通过属性控制垂直方向布局,对齐方式等,可以点击《flex布局制作自适应网页 - 前端人 - 博客园》详细学习。弹性布局超强大,应用也非常广泛。

2.4、rem

rem是一种相对单位。长度单位可分为两种:相对单位和绝对单位。

绝对单位:长度是固定的值,反应物理真实尺寸。如:px像素,一个像素相当于我们屏幕的一个小点,屏幕实际就是由很多个像素点组成的,不同显示器像素大小不同。还有cm、mm、in等等。

相对单位:根据其参考物决定的,参照物大小改变时,它也会改变。如%、rem、em、vh、ex等等。

网页布局中我们常用到em和rem两种单位:

em - 是相对于自身的

rem - 是root em,相对于根元素的

em和rem 修改他们自身和html的font-size大小,会改变em、rem单位大小。

特点:使用rem布局时,只需要通过宽度改变html的font-size,就可以改变所有元素大小。注意的是,所有设置大小的时候都要使用rem。

「移动端」Web页面适配的更多相关文章

  1. 移动端调试Web页面

    移动端调试Web页面 虽然可以在PC下,通过开发者工具,模拟移动端,但是这样只能模拟页面样式,对于代码的执行情况是无法模拟的,所以在此结合实际调试经验,针对安卓与IOS设备,进行总结. IOS 安卓 ...

  2. 记一个在移动端调试 web 页面的方法

    1. 工具:Weinre 2. 安装:npm -g install weinre | npm install weinre -g --registry=https://registry.npm.tao ...

  3. 移动端Web页面适配方案

    概念理解 viewport视口 visual viewport 可见视口,设备屏幕的宽度  windw.innerWidth/Height layout viewport 布局视口,DOM宽度 doc ...

  4. Weinre 远程调试移动端手机web页面

    调试场景 1.调试页面在手机上.2.调试工具在PC的chrome3.手机跟pc要在同一个网络环境下,也就是都使用一个wifi 一.安装 Weinre 1.Weinre是基于nodejs实现的,所以使用 ...

  5. 「移动端」touch事件,touchEvent对象

    随着智能手机普及,有越来越多的手机网页和网页版游戏,手机触摸.移动.旋转等等,多种操作.一般电脑的人机交互靠的是鼠标,而手机用的就是触摸.区别有: PC 端一个电脑只能有一个鼠标,而移动端有多点触摸. ...

  6. 移动端 移动web屏幕适配方案 随不同宽度的屏幕而改变

    链接地址1:http://www.cnblogs.com/zjzhome/p/4802157.html 链接地址2:http://www.html-js.com/article/Mobile-term ...

  7. 移动web开发适配方案之Rem

    移动端为什么要做适配 移动端相对PC端来说大部分浏览器内核都是基于Webkit的,所以大部分都支持CSS3的最新语法.但是由于手机的屏幕尺寸和分辨率都不太一样(尤其是安卓),所以不得不对不同分辨率的手 ...

  8. H5 页面适配几种展现形式

    1.contain 模式:以内容中心为基点按照视觉稿的宽高比缩放以适配窗口显示全页面内容,窗口与内容的宽度比或高度比之间较小者缩放填满窗口,当窗口宽高比和视觉稿不同时,另一方向的两侧出现留空部分. 2 ...

  9. 移动端web页面如何适配

    移动端web页面如何适配,现有两个方案: 1 设置viewport进行缩放 简单粗暴,使用过程中反应缩放会导致有些页面元素会糊的情况.天猫的web app的首页使用这种方案 在页面中加入viewpor ...

随机推荐

  1. centos7 php开发环境安装-composer

    1.安装composer cd /usr/local/src curl -sS https://getcomposer.org/installer | php mv composer.phar /us ...

  2. take for granted

    解释含义1 Take for granted是一句地道的英语口语,意思是to expect someone to always be there and do things for you even ...

  3. Java | 集合(Collection)和迭代器(Iterator)

    集合(Collection) 集合就是Java中提供的一种 空器,可以用来存储多个数据. 集合和数组都是一个容器,它们有什么区别呢? 数组的长度是固定的,集合的长度是可变的. 数组中存储的是同一类型的 ...

  4. postman使用笔记

    postman主要是用来做接口测试的工具,用来模拟客户端向服务器发起请求. 一.postman支持的请求类型 1.get请求 get请求是用来向服务器获取数据 get请求没有请求体,只有url和请求头 ...

  5. Cookie学习总结

    Cookie简述 1. 概念 一种客户端会话技术,可以将一些少量的数据保存在客户端. 2. 快速使用 步骤 创建cookie对象,并设定数据 new Cookie(String name, Strin ...

  6. centos7下安装mycat中间件 笔记

    1. 下载 # wget http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/Mycat-server-1.6.7.4-releas ...

  7. 虚拟机安装RHEL8.0.0

    在VMware Workstations 15.0.0中安装RHEL8.0.0 使用到的软件和主机基本配置 此处宿主机基本硬件配置:i3-7100U 4核,内存:12G 虚拟化软件:VMware Wo ...

  8. 第二篇 -- Django写一个接口并用Jmeter进行测试

    第一节学习了Jmeter的下载和安装,那么第二节就来看看具体怎么使用. 本篇介绍的是使用Jmeter进行http接口测试,那么接口程序使用Django开发的一个小接口. 一.Django编写接口 这一 ...

  9. 第二十七篇 -- QTreeWidget总结

    前言 之前写过几篇关于TreeWidget的文章,不过不方便查阅,特此重新整合作为总结.不过关于QtDesigner画图,还是不重新写了,看 第一篇 就OK. 准备工作 1. 用QtDesigner画 ...

  10. Python基础之subprocess

    前言 subprocess这个函数很好用,类似于控制台执行,功能很多,今天先介绍subprocess调用exe,并行调用两个或两个以上的exe. Subprocess调用exe 调用exe有几种方式, ...