在编写适应移动设备的布局前有几个问题值得思考。css
其次,记住要跨浏览器支持,谚语有云“房间里的大象(译者注:英文谚语,指显而易见而又被忽略的事实)指的就是IE。幸运的是,如今发现,只要不会 影响到内容,网站在不一样浏览器的显示不必定要彻底相同。一般来讲一个没法支持CSS3的浏览器也能提供尚可接受的浏览体验。总而言之,要提早知道网页在各 种浏览器上的显示效果。html
不只应该知道如何编写合法的html,并且要尽量地简洁。保持html的流畅、去掉没必要要的Div一直都是不错的习惯,在移动设备浏览上,这点显得更为重要。并且,以往一些须要7个嵌套Div标记的效果,如今经过CSS3的少许代码就能实现。html5
尽管这不是html5教程,可是我依然坚持Xhtm的严格语法。如下是一个典型布局的html,这是一个包含头部、底部、侧边栏、主内容的页面。你能够看到,这个页面至关简单明了,若是采用html5的元素,可以更加的简洁。css3
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
<
body
>
<
div
class
=
'pg'
>
<
div
class
=
'head'
>
<
h1
><
a
href
=
'#'
>My Blog</
a
></
h1
>
</
div
>
<
div
class
=
'pg-main'
>
<
div
class
=
'entries'
>
<
h2
><
a
href
=
'#'
>An Entry About Something</
a
></
h2
>
<
p
class
=
'preview'
>段落文字一前言</
p
>
<
p
>段落文字一</
p
>
<
hr
/>
<
h2
><
a
href
=
'#'
>An Entry About Something Else</
a
></
h2
>
<
p
class
=
'preview'
>段落文字二前言</
p
>
<
p
>段落文字二</
p
>
<
hr
/>
<
h2
><
a
href
=
'#'
>A Third Entry</
a
></
h2
>
<
p
class
=
'preview'
>段落文字三前言</
p
>
<
p
>段落文字三</
p
>
</
div
>
<
div
class
=
'sidebar'
>
<
h2
class
=
'not-there'
>Blog Menu</
h2
>
<
h3
class
=
'subscribe'
>Subscribe</
h3
>
<
ul
class
=
'subscribe'
>
<
li
><
a
href
=
'#'
>RSS</
a
></
li
>
</
ul
>
<
h3
>Social</
h3
>
<
ul
>
<
li
><
a
href
=
'#'
>Facebook</
a
></
li
>
<
li
><
a
href
=
'#'
>Twitter</
a
></
li
>
</
ul
>
<
h3
>Categories</
h3
>
<
ul
>
<
li
><
a
href
=
'#'
>Something</
a
></
li
>
<
li
><
a
href
=
'#'
>Nothing</
a
></
li
>
<
li
><
a
href
=
'#'
>All Things</
a
></
li
>
<
li
><
a
href
=
'#'
>No Things</
a
></
li
>
</
ul
>
<
h3
>Archives</
h3
>
<
ul
>
<
li
><
a
href
=
'#'
>June 2010</
a
></
li
>
<
li
><
a
href
=
'#'
>May 2010</
a
></
li
>
<
li
><
a
href
=
'#'
>April 2010</
a
></
li
>
<
li
><
a
href
=
'#'
>March 2010</
a
></
li
>
</
ul
>
</
div
>
</
div
>
<
div
class
=
'foot'
>
<
p
>© No one in particular 2010</
p
>
</
div
>
</
div
>
</
body
>;
|
在head部分,通常会放置例如CSS样式表、语言、标题等等,可是为了平滑移动设备浏览器效果,还须要而外增长一个Viewport,参考代码以下:windows
1
|
<
meta
name
=
"viewport"
content
=
"width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"
/>
|
这是苹果公司建议的,用于帮助iPhone渲染页面,这个标记会自动匹配页面和浏览器窗口并防止缩放,一些其余的移动浏览器也支持,如黑莓。测试发现,这个标记并不会影响到桌面平台浏览器的效果,因此建议放置在head里面。浏览器
这个教程会将以上的html分红两个布局,一个布局用来适应移动平台,一个用来适应桌面平台。在实践中,一般要根据目标的不一样,分开弄几个布局,这里为了简化教程,只分为两个。ide
先思考一下,要避免出现很长的滚动条,因此修改一下博客的菜单,让用户体验更好。布局
1
2
3
4
5
6
7
8
9
|
.sidebar ul{
border-left
:
solid
1px
#ccc
;
padding
:
0
0
0
5px
;
}
.sidebar ul li{
display
:
inline
;
padding
:
0
5px
0
0px
;
border-right
:
solid
1px
#ccc
;
}
|
这样菜单就变成横排的,每一个目录中间有一条分割线,干净整洁。在移动设备上,保持菜单在屏幕底部是很是有用的,假如浏览完一篇文章,菜单不在底部的话,还要再滚动回菜单的地方,这样就很不方便,在一些设备上,滚动窗口可能会相对麻烦得多。固然这个方式有利有弊。post
其次将RSS订阅移动到顶部区域。学习
01
02
03
04
05
06
07
08
09
10
11
12
13
|
h
3
.subscribe{
display
:
none
;
}
.sidebar ul.subscribe{
position
:
absolute
;
top
:
25px
;
right
:
10px
;
border
:
none
;
color
:
#fff
;
}
.sidebar ul.subscribe li{
border
:
none
;
}
|
除此以外,就是调整一些字体的大小,超连接的颜色等,此教程还包含一个CSS Reset,完整的CSS能够在源码上找到。所以,其实若是站在移动设备优先的角度上思考的话,布局的时候也没什么特别之处。
经过CSS3的媒介查询,跨设备的问题可以较好地解决。媒介查询能够根据若干个条件(好比屏幕尺寸),使页面对移动设备进行匹配,
先看一下下面的代码:
1
2
3
4
|
.pg{</span>
<
pre
>
width
:
800px
;
margin
:
0
auto
;
}
|
在这个例子中,宽度是800px,可是这样必须确保全部用户的浏览器窗口宽度都是至少800px,不然就会出现水平滚动条。因此将这条代码放置在媒介查询里面,代码以下:
1
2
3
4
5
6
|
@media
all
and (
min-width
:
800px
){</span>
<
pre
> .pg{
width
:
800px
;
margin
:
0
auto
;
}
}
|
这样事情变得很简单,代码中“all”意味着这个style可用于全部的媒介,还有其余选项,好比“print”则适用于打印机
有一个重要的地方须要注意的是,保留原来布局样式的代码,将新布局的样式代码放置在媒介查询中,这样一些不支持CSS3媒介查询的浏览器就能够调用以前的布局,同时桌面平台上一些较老的浏览器的显示也不会有什么大问题。
如下例子,在新布局中,咱们将侧边栏从底部移开,并让list的部分以列表的形式显示。代码以下:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
@media
all
and (
min-width
:
800px
){
.sidebar ul{
border
:
none
;
padding
:
0
;
}
.sidebar ul li{
display
:
block
;
padding
:
0
;
border
:
none
;
}
h
3
.subscribe{
display
:
block
;
}
.sidebar ul.subscribe{
position
:
static
;
top
:
auto
;
right
:
auto
;
border
:inherit;
color
:inherit;
}
.sidebar ul.subscribe li{
border
:inherit;
}
}
|
这样就吧侧边栏推到左边(结合css其余代码,请参阅源文件),并把RSS订阅放回到适用于桌面浏览器显示的地方。你能够用不一样平台浏览器打开源文件,并水平缩放,进行测试。
也许有人会疑惑为何是800px,800px是否有什么特殊之处?事实上,我认为这有点宽。在新发布的windows7上有一个屏幕边缘捕捉的功 能(译者注:就是把窗口拉到两边,会把窗口的缩放成屏幕的一半,拉到顶上会最大化),若是把为桌面平台显示的网站宽度设成600px,这样一个在 1280px宽的屏幕下,捕捉到边缘时不须要调整窗口大小就能正常显示布局。固然这只是一个例子而已,只是要清楚800px并不意味着什么特殊值,一切都 要根据本身的须要去思考。
方法不止一种,本文展现了媒介查询这种实用方法以及一些只基于CSS的移动平台网站布局的办法。还有如下的方法能够联合使用,打造移动平台的网站布局。
处理移动互联网浏览的方式不少,最终多是多种方式联合使用。不管是是使用媒介查询或者子域名转向的方式,要点在于提早对移动平台的布局进行规划。