写网页代码时会遇到一个问题,在开发的电脑上显示符合预期,当换成不同大小的显示器或设备时,网页各种走样,还会出现一些样式没有生效的情况。

其中涉及到两个问题,设备屏幕大小的自适应和浏览器软件的兼容性。

自适应网页设计

自适应网页设计是指可以自动识别屏幕宽度、并做出相应调整的网页设计。

允许网页宽度自动调整

在网页代码头部加入如下meta,支持IE9+等所有主流浏览器

1
<meta name="viewport" content="width=device-width, initial-scale=1.0">

viewport是网页默认的宽度和高度
width=device-width设置网页宽度等于设备宽度
initial-scale=1.0表示原始缩放比例,即网页初始大小占屏幕的100%

不使用绝对宽度

具体就是CSS不能指定像素宽度,只能指定百分比宽度或者auto

1
2
width: xx%;
width: auto;

相对大小的字体

字体不能使用绝对大小(px),只能使用相对大小(em)

1
2
3
4
5
6
7
8
9
10
11
12
// 字体大小是页面默认大小的100%,即16像素
body {
font: normal 100% Helvetica, Arial, sans-serif;
}
// h1的大小是默认大小的1.5倍,即24像素(24/16=1.5)
h1 {
font-size: 1.5em;
}
// small的大小是默认大小的0.875倍,即14像素(14/16=0.875
small {
font-size: 0.875em;
}

流动布局

流动布局是使用float,使各个区块的位置都是浮动的,不是固定不变的。

另外,绝对定位(position: absolute)的使用,也要非常小心。

选择加载CSS

“自适应网页设计”的核心,就是CSS3引入的Media Query模块。

它的意思就是,自动探测屏幕宽度,然后加载相应的CSS文件。

1
2
<link rel="stylesheet" type="text/css" href="tinyScreen.css"  media="screen and (max-device-width: 400px)">
<link rel="stylesheet" type="text/css" href="smallScreen.css" media="screen and (min-width: 400px) and (max-device-width:600px)">

除了用html标签加载CSS文件,还可以在现有CSS文件中加载。

1
@import url("tinyScreen.css") screen and (max-device-width: 400px);

同一个CSS文件中,也可以根据不同的屏幕分辨率,选择应用不同的CSS规则。

1
2
3
4
5
6
7
8
9
10
@media screen and (max-width: 1320px) {
.container {
width:768px
}
}
@media screen and (min-width: 1320px) and (max-width:1380px) {
.container {
width:908px
}
}

图片的自适应

除了布局和文本,”自适应网页设计”还必须实现图片的自动缩放。

1
2
3
4
5
img, object {
max-width: 100%;
width: 100%; // 老版本IE不支持max-width
-ms-interpolation-mode: bicubic; // 防止windows平台缩放图片时,可能出现图像失真现象
}

或者,Ethan Marcotte的imgSizer.js

1
2
3
4
addLoadEvent(function() {
var imgs = document.getElementById("content").getElementsByTagName("img");
imgSizer.collate(imgs);
});

不过,有条件的话,最好还是根据不同大小的屏幕,加载不同分辨率的图片。

有很多方法可以做到这一条,服务器端和客户端都可以实现。

参考链接:http://ruanyifeng.com/blog/2012/05/responsive_web_design.html

版权声明:本文为「匿名用户」的原创文章,博客内容遵循 署名-非商业性使用-相同方式共享 协议。
本文永久链接是:https://demo.wujiaxing.com/prowiki/451e44df.html