整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

怎么制作HTML5页面让它适应电脑和手机的尺寸?

、 利用meta标签

Meta标签主要用来描述一个HTML网页文档的属性,如作者、日期时间、网页描述、关键词、页面刷新等,它的Description和Keywords属性,可加入网站的关键字,让网页利于搜索引擎。

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

解释:Viewport指用户网页的可视区域,content中的“width”指的是虚拟窗口宽度,上面代码意为虚拟窗口/页面宽度初始比例为1,最小比例为1,最大比例为1,用户不可扩展,页面不可缩放。

以上标签只支持一种尺寸,正确的做法是用js动态生成下面标签,前提是要先获取屏幕尺寸。

<script type="text/javascript">

var phoneWidth = parseInt(window.screen.width);

var phoneScale = phoneWidth/640;

var ua = navigator.userAgent;

if (/Android (d+.d+)/.test(ua)){var version = parseFloat(RegExp.);

if(version>2.3){ document.write(‘<meta name="viewport" content="width=640, minimum-scale = ‘+phoneScale+‘, maximum-scale = ‘+phoneScale+‘, target-densitydpi=device-dpi">‘); }

else{document.write(‘<meta name="viewport" content="width=640, target-densitydpi=device-dpi">‘); }

else { document.write(‘<meta name="viewport" content="width=640, user-scalable=no, target-densitydpi=device-dpi">‘); }

</script>

2、百分比法

CSS中的百分比中指的是相对于父元素的宽度。子元素的padding-left:50%,父元素的宽度是百,子元素的margin-top:20%,那么父元素的高是百。body默认宽度是屏幕宽度(PC中指的是浏览器宽度)子孙元素按百分比定位(或指定尺寸)就可以了。但这只适合布局简单的页面,复杂的页面实现很困难。

3、 使用CSS3单位rem

在页面载入开始时首先判断window的宽度(是window的宽度($(window).width()),不是屏幕分辩率的宽度(screen.width),两者差别请自行查阅),假设宽度为W,一个div在宽度为640px的设计稿的下的宽度为dW1,如果html的font-size为100px,那么这个div的宽度用rem表示是多少呢?

计算:div宽度dW2=dW1/100,px与rem之间换算除以100就可以,这是假定屏幕宽度为640的,而不同宽度的屏幕怎么处理,为了能保证换算容易那就要为html设置一个合适的font-size,计算:100 / 640 = fontSize / W, fontSize = W / 640 * 100 = W / 6.4。大多数浏览器font-size的最小值为12px,所以只能用100作为缩放比例。

所以会在头部加上这个JS代码:

<script type="text/javascript">

var html = document.querySelector(‘html‘);

var rem = html.offsetWidth / 6.4;

html.style.fontSize = rem + "px";

</script>

4、 媒体查询

媒体查询正是为解决网页适应手机屏幕。媒体查询的功能就是为不同的“媒体”设置不同的css样式,页面尺寸,设备屏幕尺寸等,比如我们要为宽度小于480px的页面中的class="icon"的元素设置样式,可以这样写,@media screen and (max-width=480px) {.icon{ some styles }};具体可自行研究。

以上几种方法,仅供大家参考。如有不妥,欢迎指正。制作自适应页面需要比较好的编程基础和技术觉悟,一般的小白,不建议大家为了做自适应网页专门学习HTML5、CSS3和JS,毕竟这并非一朝一夕就能学会的。如果技术小白想做自适应网页,这里给大家提供一种思路,用建站宝盒。完全不需要编程基础,全程拖拽,一样能做出让人惊艳的自适应网站。现在还有免费建站活动,无论外行内行,大家可以注册体验一下。

零基础免费做HTML5自适应网站:http://www.iisp.com/design/free-site.php?s=yuqiuping

phone6及iphone6plus已经出来一段时间了。很多移动端网站,以前写死body为320px的,现在估计也忙着做适配了。

大屏幕手机其实一直有,只是以前大家没怎么重视,移动端的H5页面大部分都以320px为基准宽度进行布局,那些大屏屌丝android用户也懒得去理,而现在iphone也搞起多屏幕,老板们重视程度就不一样了。

回归正题,兼容iphone各版本机型最佳的方式就是自适应。

1、viewport简单粗暴的方式:

<metaname="viewport"content="width=320,maximum-scale=1.3,user-scalable=no">

直接设置viewport为320px的1.3倍,将页面放大1.3倍。

为什么是1.3?

目前大部分页面都是以320px为基准的布局,而iphone6的宽度比是375/320=1.171875,iphone6+则是414/320=1.29375

那么以1.29倍也就约等于1.3了。

2、ip6+的CSSmediaquery

@media(min-device-width:375px)and(max-device-width:667px)and(-webkit-min-device-pixel-ratio:2){

/*iphone6*/

}

@media(min-device-width:414px)and(max-device-width:736px)and(-webkit-min-device-pixel-ratio:3){

/*iphone6plus*/

}

PS:也可以直接使用实际的device-width:如device-width:375px

在原有页面的基础上,再针对相应的屏幕大小单独写样式做适配。

3、REM布局

REM是CSS3新增的一种单位,并且移动端的支持度很高,android2.x+,ios5+都支持。

REM是相对于dom结构的根元素来设置大小,也就是html这个元素。相较于em单位,rem使用上更容易理解及运用。

REM与PX的换算可以查看网址:https://offroadcode.com/prototypes/rem-calculator/

假设,html我们设置font-size:12px;也就是说12px相对于1rem,那么18px也就是18/12=1.5rem。

那么我们以320px的设计布局为基准,将html设置为font-size:100px,即100px=1rem。(设置100px是为了方便计算)那么可以将大部分px单位除以100就可以直接改成rem单位了。

REM如何做响应式布局?

1、如果仅仅是适配ip6+设备,那么使用mediaquery就行。

伪代码如下:

/*320px布局*/

html{font-size:100px;}

body{font-size:0.14rem/*实际相当于14px*/}

/*iphone6*/

@media(min-device-width:375px)and(max-device-width:667px)and(-webkit-min-device-pixel-ratio:2){

html{font-size:117.1875px;}

}

/*iphone6plus*/

@media(min-device-width:414px)and(max-device-width:736px)and(-webkit-min-device-pixel-ratio:3){

html{font-size:129.375px;}

}

这样,在ip6下,也就将页面内的元素放大了1.17倍,ip6+下也就是放大了1.29倍。

2、如果是完全自适应,那么可以通过JS来控制。

(function(doc,win){

vardocEl=doc.documentElement,

resizeEvt='orientationchange'inwindow?'orientationchange':'resize',

recalc=function(){

varclientWidth=docEl.clientWidth;

if(!clientWidth)return;

docEl.style.fontSize=100*(clientWidth/320)+'px';

};

//AbortifbrowserdoesnotsupportaddEventListener

if(!doc.addEventListener)return;

win.addEventListener(resizeEvt,recalc,false);

doc.addEventListener('DOMContentLoaded',recalc,false);

})(document,window);

页面初始化的时候计算font-size,然后再绑定resize事件。这种效果就和百分比布局一样了。

那么用REM做单位与百分比做单位有什么优势?

主要优势在于能更好的控制元素大小。(一般百分比应用在布局层,一般常见设置为50%,33.3%,25%之类的整数居多,难以运用在复杂的页面小部件内)。

但是相比百分比布局,需要借助JS或mediaquery实现,略有一点瑕疵。

DEMO地址

4、图片自适应

刚说完REM布局,那么用百分比布局也能实现一样的效果,但是用百分比布局,必须要面临一个问题:图片宽度100%,页面加载时会存在高度塌陷的问题。.

那么可以用padding-top设置百分比值来实现自适应。

公式如下:

padding-top=(ImageHeight/ImageWidth)*100%

原理:padding-top值为百分比时,取值是是相对于宽度的。

相关代码实现:

<divclass="cover">

<imgsrc="http://www.hmttv.cn/uploadfile/2024/0807/20240807025558540.jpg"alt=""/>

</div>

.cover{position:relative;padding-top:100%;height:0;overflow:hidden;}

.coverimg{position:absolute;top:0;width:100%;}

DEMO地址,缩放浏览器窗口看看。

5、图片高清化

大家都知道,iphone6plus是3倍高清图了,它的devicePixelRatio=3。

在ios8下,已经开始支持img的srcset属性了(目前移动端也就ios8开始支持),也就是说,可以对一张图片设置2个URL,浏览器自动加载对应的图片。

黄色表示仅支持旧的srcset规范,绿色表示支持全新的srcset规范,包括sizes属性,w描述符。这里不展开,详细了解可自行google。

不过目前前端这边图片的实现基本都用lazyload的方式实现。srcset的图片加载方式在实际项目中运用还比较少。

6、背景图高清化

mediaquery实现高清化

img标签的高清化,可以通过JS判断devicePixelRatio的值来加载不同尺寸的图片,但是对于背景图,写在CSS中的,用JS来判断就略麻烦了,还好CSS通过mediaquery也能判断dpr。

目前兼容性最好的背景图高清化实现方式,使用mediaquery的-webkit-min-device-pixel-ratio做判断:

/*普通显示屏(设备像素比例小于等于1)使用1倍的图*/

.css{

background-image:url(img_1x.png);

}

/*高清显示屏(设备像素比例大于等于2)使用2倍图*/

@mediaonlyscreenand(-webkit-min-device-pixel-ratio:2){

.css{

background-image:url(img_2x.png);

}

}

/*高清显示屏(设备像素比例大于等于3)使用3倍图*/

@mediaonlyscreenand(-webkit-min-device-pixel-ratio:3){

.css{

background-image:url(img_3x.png);

}

}

进一步,可以通过工具生成相应的3x,2x,1x的图片及css,在使用时直接引用即可。谁搞一个?

关于移动设备的-webkit-min-device-pixel-ratio值,可以查看该网页的整理:http://bjango.com/articles/min-device-pixel-ratio/

image-set实现高清化

image-set,它是Webkit的私有属性,也是Css4的一个属性,它是为了解决Retina屏幕下的图像显示而生。

使用方式也很简单。伪代码如下:

.css{

background-image:url(1x.png);/*不支持image-set的情况下显示*/

background:-webkit-image-set(

url(1x.png)1x,/*支持image-set的浏览器的[普通屏幕]下*/

url(2x.png)2x,/*支持image-set的浏览器的[2倍Retina屏幕]*/

url(3x.png)3x/*支持image-set的浏览器的[3倍Retina屏幕]*/

);

}

目前移动端的支持程度来看,ios7+,android4.4+下已经支持了。如果仅仅是做ip6+的高清适配方案。image-set也是一种实现方案。

使用image-set与mediaquery实现有什么区别及好处?

这篇文章里面做了很详细的阐述,大家可以看看:http://blog.cloudfour.com/safari-6-and-chrome-21-add-image-set-to-support-retina-images/

大体的意思是:image-set不需要告诉浏览器使用什么图像,而是直接提供了图像让浏览器选择。这就意味着,如果在低网速下,浏览器可以选择加载低分辨率的图片。(PS:好智能的样子)

但是相比如mediaquery的实现,image-set仅支持单个图片的高清化,不适合在csssprite下使用。并且兼容性也是一大硬伤。

但是一般来说,用在LOGO区域,单个图片图标的区域下,也是个不错的选择。

7、图片列表的自适应

关于适配,也就是要让布局更灵活,在电商网站里面,商品列表是一个非常常见的结构。

一种比较智能的列表方式是:两端对齐,间距自适应。

那么可以使用FLEXBOX布局来实现两端对齐的效果,也可以使用text-align:justify的方式实现。

先看个flex实现的例子,主要通过justify-content:space-between,来实现:

flexbox的布局方式,在PC端就不合适了,ie9以下都不支持,那么更友好的方式可以使用text-align:justify来实现,兼容各大主流浏览器,包括IE6。

但是这2种布局方式都有一定的局限性。就是列表个数必须凑整。目前还没找到一种能够兼容不限个数的实现方案,如果各位看官有更好的实现方式,也欢迎提出,一起交流。

移动端ip6的适配方案有很多,没有固定的套路及方法,请根据自身业务的特点,选择其中的一些方法组合使用。

跨无忧(www.kuawuyou.com)来自“跨屏无忧”的想法,我们首个推出永久的、不依赖第三方的跨屏幕适配方案,希望以我们专业的力量帮助每个企业都能实现在移动互联网的转变,让企业网站轻松无忧完成到移动设备的跨屏幕适配,快速抓住移动互联网机遇。

TML5是用于取代1999年所制定的 HTML 4.01 和XHTML 1.0 标准的 HTML 标准版本,现在仍处于发展阶段,但大部分浏览器已经支持某些 HTML5 技术。HTML 5有两大特点:首先,强化了 Web 网页的表现性能。其次,追加了本地数据库等 Web 应用的功能。广义论及HTML5时,实际指的是包括HTML、CSS和JavaScript在内的一套技术组合。它希望能够减少浏览器对于需要插件的丰富性网络应用服务(plug-in-based rich internet application,RIA),如Adobe Flash、Microsoft Silverlight,与Oracle JavaFX的需求,并且提供更多能有效增强网络应用的标准。

手机站

HTML5的设计目的是为了在移动设备上支持多媒体。新的语法特征被引进以支持这一点,如video、audio和canvas 标记。HTML5还引进了新的功能,可以真正改变用户与文档的交互方式。在用户角度来说, H5页面就是邀请函、产品展示,祝福表达网页,广告宣传页,小游戏、品牌展示、抽奖等。

手机站

选择手机网站或微站H5页面要根据您的具体需求和目的进行判断。以下为两者之间的区别:

  1. 微站H5页面主要用于短期某场景推广,适合于微信裂变传播,更加适配于移动端,以某个具体场景的营销推广为主,例如企业会议邀约、展览展示、论坛峰会、人才招聘、培训招生、产品推广等。在做H5微站的时候可以加入微信的开放API接口来调用一些微信的功能,例如分享。
  2. 手机网站则是企业电脑端官网的手机端展现效果,用于长期的品牌输出宣传,一般通过SEO长期优化。它适用于各种移动设备屏幕,主要用来进行长期的品牌输出和宣传。
  3. 制作方法不同:手机微官网是工程师代码创建的,企业可以自行在后台更改信息,可以长用;H5是专业设计师或工程师开发,企业不能自己更改信息。
  4. 管理后台不同:手机微官网,有一个专门的管理后台,企业可以自己登录,时时更新信息,操作也很简单;H5是没有管理后台的,只能看到手机的展示效果, 功能上便会大打折扣。

因此,如果您需要创建一个短期、特定的营销活动或者需要在微信上进行传播,那么微站H5页面可能是更好的选择。而如果您需要长期展示企业形象、进行品牌输出和SEO优化,那么手机网站可能更适合您。