h5前端其实很简单(你必须要掌握的技能)

h5前端其实很简单(你必须要掌握的技能)(1)

前端技术面现在越来越广,从PC的浏览器,桌面客户端程序,到移动端的h5、微信小程序开发; 如果你是一名前端开发者,那么仅仅掌握了前端的技术,你就能很快速的去做其他端的开发。

本文将介绍如何使用前端技术去开发移动端h5,掌握之后,开发移动端so easy。

准备工作1、 在开始之前我们首先要了解几个概念(px、rpx、em、rem)。px

px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。(引自CSS2.0手册)

rpx

rpx其实是微信对于rem的一种应用的规定,或者说一种设计的方案,官方上规定屏幕宽度为20rem,规定屏幕宽为750rpx。

em

em是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。

浏览器默认的字号是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就可以了。

em的特点:

  1. em的值并不是固定的;
  2. em会继承父级元素的字体大小。

因为这两个特点,所以我们用em的时候,需要注意三点:

  1. body选择器中声明Font-size=62.5%;
  2. 将你的原来的px数值除以10,然后换上em作为单位;
  3. 重新计算那些被放大的字体的em数值。避免字体大小的重复声明。
rem

rem是相对于根元素<html>,也就是说,我们只需要在根元素确定一个参考值,其他子元素的值可以根据这个参考值来转换。具体这个参考值设置为多少,完全可以根据我们自己的需求来定。

浏览器默认的字号是16px,我们来看一些px单位与rem之间的转换关系:

h5前端其实很简单(你必须要掌握的技能)(2)

为了方便计算,我们经常在<html>元素中设置font-size值为62.5%,相当于在<html>中设置font-size值为10px,此时,上面示例中所示的值将会改变:

h5前端其实很简单(你必须要掌握的技能)(3)

如果css里面没有设定html的font-size,则默认浏览器以1rem=16px来换算。

rem是CSS3新增的一个相对单位(root em,根em)。目前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器,我们只要多写一个绝对单位的声明,这些浏览器就会忽略用rem设定的字体大小。

2、关于css flex知识,这里就不做仔细介绍,可以看下阮一峰的博客,非常详细。3、vw、vh、vmin、vmax 的含义3.1 vw、vh、vmin、vmax

  (1)vwvhvminvmax 是一种视窗单位,也是相对单位。它相对的不是父节点或者页面的根节点。而是由视窗(Viewport)大小来决定的,单位 1,代表类似于 1%

  视窗(VIEwport)是你的浏览器实际显示内容的区域—,换句话说是你的不包括工具栏和按钮的网页浏览器。

  (2)具体描述如下:

  vw:视窗宽度的百分比(1vw 代表视窗的宽度为 1%

  vh:视窗高度的百分比

  vmin:当前 vwvh 中较小的一个值

  vmax:当前 vwvh 中较大的一个值

3.2、vw、vh 与 % 百分比的区别

  (1)% 是相对于父元素的大小设定的比率,vwvh 是视窗大小决定的。

  (2)vwvh 优势在于能够直接获取高度,而用 % 在没有设置 body 高度的情况下,是无法正确获得可视区域的高度的,所以这是挺不错的优势。

3。3、vmin、vmax 用处

  做移动页面开发时,如果使用 vwwh 设置字体大小(比如 5vw),在竖屏和横屏状态下显示的字体大小是不一样的。

  由于 vmin vmax 是当前较小的 vw vh 和当前较大的 vw vh。这里就可以用到 vmin vmax。使得文字大小在横竖屏下保持一致。

实战篇

掌握了以上概念后,开始移动端h5之旅;

1、初始化项目2、css 中为根节点添加font-size:62.5%;样式,方便后面其他单位计算。

/* 移动端 */ html { font-size: 62.5%; } html, body { height: 100%; }

3、如果页面有分上中下,自适应区域,需要设置窗口的高度;

<script> function isMobile() { var result = navigator.userAgent.match( /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i ); return result !== null; } window.onload = function () { // 判断是否是IE,如果不是,添加DetectRTC脚本 // if (browserType.indexOf('IE') < 0) { // var s = document.createElement('script'); // s.type = 'text/script'; // s.src = './player/detectrtc.js'; // document.getElementsByTagName('head')[0].appendChild(s); // } var height = document.documentElement.clientHeight; function setBodyHeight() { if (isMobile()) { // 解决在移动端软键盘出现影响整体body高度的问题 var _body = document.getElementsByTagName('body')[0]; var _height = document.documentElement.clientHeight; _body.style.height = _height 'px' } } setBodyHeight(); window.addEventListener('resize', () => { setTimeout(setBodyHeight, 500) }, false); document.addEventListener('visibilitychange', () => { setTimeout(setBodyHeight, 500) }, false); }; </script>

4、到这里,基本的工作就做完了,剩下的就是写css的时候根据设计稿的宽度来计算应该是多少像素,假如设计稿的font-size为32px,那么我们就写font-size:3.2rem;

是不是非常简单,其实最主要就是掌握rem的用法,这种移动端的方案基本可以满足多数需求;

有时候有些项目还需要支持横屏,可以这样设置一下,然后在横屏样式表中完成横屏适配。

<link rel="stylesheet" media="all and (orientation:portrait)" href="css/index.css">//竖屏 <link rel="stylesheet" media="all and (orientation:landscape)" href="css/landscape.css">//横屏

#创作挑战赛#

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页