HTML5 移动页面自适应手机屏幕四类方法总结


Posted in HTML / CSS onAugust 17, 2017

1、使用meta标签:viewport

H5移动端页面自适应普遍使用的方法,理论上讲使用这个标签是可以适应所有尺寸的屏幕的,但是各设备对该标签的解释方式及支持程度不同造成了不能兼容所有浏览器或系统。

 viewport 是用户网页的可视区域。翻译为中文可以叫做"视区"。

手机浏览器是把页面放在一个虚拟的"窗口"(viewport)中,通常这个虚拟的"窗口"(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。 

viewport标签极其属性:

复制代码
代码如下:
<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>

每个属性的详细介绍:

HTML5 移动页面自适应手机屏幕四类方法总结

2、使用css3单位rem

rem是CSS3新增的一个相对单位(root em,根em),使用rem为元素设定字体大小时,是相对大小,但相对的只是HTML根元素。通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。

目前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。下面就是一个例子:

p {font-size:14px; font-size:.875rem;}

 默认html的font-size是16px,即1rem=16px,如果某div宽度为32px你可以设为2rem。

通常情况下,为了便于计算数值则使用62.5%,即默认的10px作为基数。当然这个基数可以为任何数值,视具体情况而定。设置方法如下:

Html{font-size:62.5%(10/16*100%)}

 具体不同屏幕下的规则定义,即基数的定义方式:可以通过CSS定义,不同宽度范围里定义不同的基数值,当然也可以通过js一次定义方法如下:

<script type="text/javascript">
   (function (doc, win) {
      var docEl = doc.documentElement,
        resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
        recalc = function () {
          var clientWidth = docEl.clientWidth;
          if (!clientWidth) return;
          docEl.style.fontSize = 20 * (clientWidth / 320) + 'px';//其中“20”根据你设置的html的font-size属性值做适当的变化
        };

      if (!doc.addEventListener) return;
      win.addEventListener(resizeEvt, recalc, false);
      doc.addEventListener('DOMContentLoaded', recalc, false);
    })(document, window);
</script>

3、使用媒体查询

媒体查询也是css3的方法,我们要解决的问题是适应手机屏幕,这个媒体查询正是为解决这个问题而生。

媒体查询的功能就是为不同的媒体设置不同的css样式,这里的“媒体”包括页面尺寸,设备屏幕尺寸等。

例如:如果浏览器窗口小于 500px, 背景将变为浅蓝色:

 

@media only screen and (max-width: 500px) {
    body {
        background-color: lightblue;
    }
}

4、使用百分比

百分比指的是父元素,所有百分比都是这样的。子元素宽度50%,那么父元素的宽度就是100%;

所以body默认宽度是屏幕宽度(PC中指的是浏览器宽度)子孙元素按百分比定位(或指定尺寸)就可以了,这只适合布局简单的页面,复杂的页面实现很困难。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
CSS中的字体大小设置属性总结
May 24 HTML / CSS
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
Jan 17 HTML / CSS
纯HTML5+CSS3制作生日蛋糕代码
Nov 16 HTML / CSS
HTML5中canvas中的beginPath()和closePath()的重要性
Aug 24 HTML / CSS
html5指南-7.geolocation结合google maps开发一个小的应用
Jan 07 HTML / CSS
HTML5之tabindex属性全面解析
Jul 07 HTML / CSS
Html5 web本地存储实例详解
Jul 28 HTML / CSS
html5将图片转换成base64的实例代码
Sep 21 HTML / CSS
详解canvas多边形(蜘蛛图)的画法示例
Jan 29 HTML / CSS
详解如何解决canvas图片getImageData,toDataURL跨域问题
Sep 17 HTML / CSS
AmazeUI 平滑滚动效果的示例代码
Aug 20 HTML / CSS
box-shadow单边阴影的实现
May 21 HTML / CSS
HTML5新增属性data-*和js/jquery之间的交互及注意事项
Aug 08 #HTML / CSS
html5 canvas合成海报所遇问题及解决方案总结
Aug 03 #HTML / CSS
从零实现一个自定义html5播放器的示例代码
Aug 01 #HTML / CSS
浅谈HTML5 服务器推送事件(Server-sent Events)
Aug 01 #HTML / CSS
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
Jul 31 #HTML / CSS
html5教你做炫酷的碎片式图片切换 (canvas)
Jul 28 #HTML / CSS
H5 canvas实现贪吃蛇小游戏
Jul 28 #HTML / CSS
You might like
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
php中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
php微信开发之图片回复功能
2018/06/14 PHP
php实现微信公众号企业转账功能
2018/10/01 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
JQuery 操作select标签实现代码
2010/05/14 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
微信小程序 开发之快递查询功能的实现
2017/01/09 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
2017/08/14 Javascript
解决Vue使用mint-ui loadmore实现上拉加载与下拉刷新出现一个页面使用多个上拉加载后冲突问题
2017/11/07 Javascript
Three.js开发实现3D地图的实践过程总结
2017/11/20 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
2019/01/21 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
Python模块结构与布局操作方法实例分析
2017/07/24 Python
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
Python request使用方法及问题总结
2020/04/26 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
2020/06/30 Python
HOTEL INFO英国:搜索全球酒店
2019/08/08 全球购物
10条PHP编程习惯
2014/05/26 面试题
优秀老员工获奖感言
2014/02/15 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
2014个人年终工作总结范文
2014/12/15 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
创业计划书之青年旅馆
2019/09/23 职场文书