代码实例:
<!DOCTYPE html><head>
<meta charset="UTF-8" />
<title>布局之路-移动端开发实例</title>
<meta name="viewport" content="width=device-width,user-scalable = no" />
<link rel="stylesheet" type="text/css" href="css/reset.css" />
</head>
<body>
<div class="wrap"></div>
</body>
</html>
代码解析:由于使用不同设备打开网页时,宽度均有所不同,所以不能讲视口设置为固定值,应当为width=device-width,即将视口设置为当前设备的宽度。
2.确定设计图的最小字体浏览器(部分)能够显示的最小字体未12px,当移动端页面宽度为320px时,要保证最小字体为12px,那么在1080px的设计图中,最小字体应当为42px。
代码实例:
<style type="text/css">html {
font-size: 42px
}
</style> 3.浮动布局
各个区块都是浮动的,不是固定不变的。为了能自适应各个窗口。
代码实例:
.main {float: left
width: 70%
}
.box {
float: left
width: 60.93%
font-size: 1.71rem
text-align: center
line-height: 4.64rem
}
float浮动的好处就是,如果宽度不够放置下这个元素,元素会自动滚动到下方。
4.通过媒介查询,为不同设备加载相应样式有条件应用样式:
<style>@media all and(min-width:500px){ ... }
@media (orientation){ ... }
</style>
代码解析:
第一行媒体查询代码指的是:为宽度大于等于500px的设备设置样式。
第二行媒体查询代码指的是:为纵屏状态(可见区域大于或等于宽度)下的移动端设备设置样式。
有条件的加载样式表:
<head><link rel="stylesheet" href="wide.css" media="screen and(min-width:1024)" />
<link rel="stylesheet" href="mobile.css" media="screen and(max-width:320)" />
</head>
代码解析:
第一行媒体查询代码指的是:为宽度大于等于1024px的设备,加载wide.css文件。
第二行媒体查询代码指的是:为宽度小于等于320px的设备,加载mobile.css文件。
5.使用百分比和rem替换px
除了布局和文本,"自适应网页设计"还必须实现图片的自动缩放。
代码效果对比:
/*使用固定像素*/.box {
float: left
width: 658px
font-size: 72px
text-align: center
line-height: 195px
}
/*使用百分比和rem*/
.box {
float: left
width: 60.93%
font-size: 1.71rem
text-align: center
line-height: 4.64rem
}
代码解析:
水平方向的值,将具体像素调整为百分比。百分比的计算是根据父级的内容区宽度进行计算的。
例如,父级宽度为1080px, 子级元素为197px,那么子元素转换为百分比为:197/1080*100%=18.24%。需要注意的是百分比根据父级计算,当标签结构级别不同时,计算公式中的“分母”也有所不同,在开发时这个地方很容易出现问题,请务必注意。
垂直方向的值,将具体像素调整为rem,与水平方向相比,垂直方向的计算就比较简单。例如,行高为195px,HTML标签当前的字体大小为42px,将行高转换为rem单位,即195/42= 4. 64rem。
不要用固定宽度属性来描述元素,改用百分比,这样元素的宽度就是父元素的百分比,这是响应式布局最基本的技巧。采用响应式布局,需要注意以下几点:第一,用百分比给元素设定大小;第二,不要对元素进行绝对定位;第三,写css时用上@media媒体查询技巧。bootstrap是响应式布局做得不错的前端开发工具,有兴趣可以学习一下。
随着终端屏幕尺寸的种类越来越多,如果针对每一种尺寸都独立开发一个页面的话,这样的开发成本将会变得非常高,响应式布局就成了解决这一问题的有效途径。当然,深层次的响应式布局应该是贯穿前端和服务端的。
响应式网页设计现在无疑是一件大事情。如果你还不了解响应式设计,可以看看我最近发表的响应式站点列表(译者注:可以好好看看示例中的网站在不同分辨率下的展现方式)。对新手来说,响应式设计可能有一点复杂,但是事实上比你想象的简单。为了帮助你迅速的了解响应式设计,我起草了一篇快速教程。你可以在3个步骤中学习到响应式设计和媒介查询(Media Queries)的基本原理(假定你了解基本的CSS知识)。
第一步:Meta标签
大多数移动浏览器将HTML页面放大为宽的视图(viewport)以符合屏幕分辨率。你可以使用视图的meta标签来进行重置。下面的视图标签告诉浏览器,使用设备的宽度作为视图宽度并禁止初始的缩放。
第二步:HTML结构
在这个例子里,我有一个包括头部、内容、侧边栏和页脚的基本页面布局。头部有固定的高度180像素,内容容器是600像素而侧边栏是300像素。
第三步:媒介查询-Media Queries
CSS3 Media Query-媒介查询是响应式设计的核心。它根据条件告诉浏览器如何为指定视图宽度渲染页面。
当视图宽度为小于等于980像素时,如下规则将会生效。基本上,我会将所有的容器宽度从像素值设置为百分比以使得容器大小自适应。
然后为小于等于700像素的视图指定#content和#sidebar的宽度为自适应并且清除浮动,使得这些容器按全宽度显示。
对于小于等于480像素(手机屏幕)的情况,将#header元素的高度设置为自适应,将h1的字体大小修改为24像素并隐藏侧边栏。
你可以根据你的喜好添加足够多的媒介查询。我在示例中仅仅展示了3个媒介查询。媒介查询的目的在于为指定的视图宽度指定不同的CSS规则,来实现不同的布局。媒介查询可以写在同一个或者单独的样式表中。