如何使用HTML5将现有网页转成mobile版?


据说移动版的webkit浏览器支持一些特性,能带来更好的的浏览体验。 那么,网页内容应该怎么样去适应设备的屏幕,同时对设备的屏幕进行优化呢?

移动版网页 web 技术 html5

复写神之眼 10 years, 4 months ago

移动meta标签

移动版的webkit浏览器支持一些比较特性,能带来更好的的浏览体验。

Viewport设置

最先要设置的meta属性就是viewport。设置viewport告诉浏览器,网页内容应该怎么样去适应设备的屏幕,同时对设备的屏幕进行优化。例如:

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

Note: width能用px单位,如设置width=320和设置width=device-width在iphone和其它一些智能手机上的效果一样。但并不是所有手机都是这个宽度,所以最好设置device-width让浏览器自己去识别。

Android对viewport标签进行了扩展:

<meta name="viewport" content="target-densitydpi=device-dpi">

target-densitydpi的值有 device-dpi, high-dpi, medium-dpi, low-dpi.

如果你要为网页针对不同屏幕分辨率修改,用-webkit-device-pixel-ratio这个media标签或在js中用 window.devicePixelRatio这个方法,设置target-densitydpi标签和device-dpi属性。这让你的定制更具有灵活性。

全屏浏览

在iOS中有两个meta值,apple-mobile-web-app-capable和apple-mobile-web-app-status-bar-style,这两个会让网页内容以应用程序风格显示,并使状态栏透明。

<meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">

HTML4和CSS2支持 media-dependent style sheets有一段时间了,例如

<link rel="stylesheet" media="print" href="printer.css">

能针对打印设备自动改变样式。CSS3则对媒体类型进行了扩展和优化。你能对媒体类型进行修改定制和扩展,就不需要特意为其它设备编写新样式表,只要在现有样式上改改就好了。

能设置media属性有screen width, device width, orientation等。

屏幕尺寸定位

在下面的例子,phone.css将适用于手持设备或屏幕宽度<= 320px的设备。

<link rel="stylesheet" media="handheld, only screen and (max-device-width: 320px)" href="phone.css">

在media里加上 “only” 关键字,能让不兼容CSS3的浏览器自动忽略这条规则。

下面的是适应641px到800px的屏幕:

<link rel="stylesheet" media="only screenshot and (min-width: 641px) and (max-width: 800px)" href="ipad.css">

Media标记也能用在<style>标签里:

<style> @media only all and (orientation: portrait) { ... }</style>media=”handheld”(手持设备)

我们需要暂停一下讨论手持设备。事实上是,Android和iOS会忽略media="handheld"。这是因为开发者只为高端移动设备开发mobile版本。不同浏览器会用不同方式去解析它。

  • 有的只载入handheld样式,
  • 有的默认载入screen样式,但如果有handheld则载入handheld样式
  • 有的两种都读
  • 有的只读screen样式

怎么样对html5rocks这个网站使用media属性

在每个页面的<head>标签,你会看到:

<link rel="stylesheet"  media="all" href="/static/css/base.min.css" /><link rel="stylesheet"  media="only screen and (max-width: 800px)" href="/static/css/mobile.min.css" />

Base.css是为桌面浏览器制定的样式,mobile.css则是为宽度800px以下的屏幕制定的。范围从智能手机的(320px)到iPad的(768px)。主要是通过覆盖base.css里的样式(除了几个必须的)来使网页很适合移动设备。 一些mobile.css覆盖的样式:

  • 减少整站额外的空白/间距,小屏幕的空间是很紧凑的。
  • 移除:hover样式,这在触摸屏上没用。
  • 将布局调整为单列。
  • 移除主容器的box-shadow效果,大容器的阴影效果会影响页面性能。
  • 用css容器模块(box-ordinal-group)来改变主页上各部分的顺序。
  • 移除透明(opacity)效果,这也影响性能。要看这个meta的更多选项,请看 Safari reference documentation

Home 界面上的图标

iOS用rel="apple-touch-icon",android 用rel="apple-touch-icon-precomposed"。这样就能在用户把网页存为书签时,在手机HOME界面创建应用程序样式的图标。

<link rel="apple-touch-icon" href="/static/images/identity/HTML5_Badge_64.png" />
<link rel="apple-touch-icon-precomposed" href="/static/images/identity/HTML5_Badge_64.png" />

看看html5rocks使用的移动meta标签

<head>
    ... 
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" /> 
    <link rel="apple-touch-icon" href="/static/images/identity/HTML5_Badge_64.png" /> 
    <link rel="apple-touch-icon-precomposed" href="/static/images/identity/HTML5_Badge_64.png" /> 
    ...
</head>

垂直布局

在小屏幕中,垂直滚动比水平滚动方便很多,保持内容单列,垂直布局对移动设备最有利。

暴君T233 answered 10 years, 4 months ago

Your Answer