让你的网站支持自适应界面
文章目录
1. 介绍
随着智能手机的普及,越来越多的人使用手机上网。 我自己就是,经常懒得开电脑,直接用手机查看网页,简单又方便。 那么,如何才能把自己的博客做成在不同大小的设备上呈现同样的界面?
2. 如何做
1) 在网页代码的头部,加入 viewport 元标签
1
|
<meta name="viewport" content="width=device-width; initial-scale=1.0" /> |
viewport 是页面默认的宽度和高度,上面代码的意思是: 页面宽度默认等于屏幕宽度(width=device-width), 并且原始缩放比例(initial-scale=1.0)为1.0,即页面初始大小占屏幕面积的100%。
这样,我们在手机上查看就可以看到整个页面的大小了。
2) 设置 CSS 的 @media 规则
在同一个CSS文件中,可以根据不同的屏幕分辨率,选择应用不同的CSS规则。
例如:
1 2 3 4 5 6 7 |
@media (min-width: 768px) and (max-width: 979px) { /* CSS1 */ } @media (max-width: 767px) { /* CSS2 */ } |
分别表示屏幕在 768px-979px 之间显示 CSS1 内容 和 屏幕宽度小于 767 像素显示 CSS2 内容。
由于博客用到了 bootstrap,所以我引入了 bootstrap-responsive.css 样式,它已经帮我做了大部分工作了。
3) 加入自定义样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
@media (max-width: 767px) { body { padding-left: 0px; padding-right: 0px; } .header_content { padding-left: 10px; } .fork_me, .header_top, .wenyi-logo, .weibo_content, #bdshare, .bulletin { display: none; } .post_content { padding: 10px; } } |
这段代码的意思是,如果屏幕宽度小于 767 像素,那么 body 的左右间距都为 0,博客的标题和文章的间距为 10 像素, 并且隐藏 fork me 图片、标题图片、博客的 logo、微博、百度分享和公告功能。
这样,我们在手机上查看就可以看到我们自己想要的内容了。
4) 设置 js 代码
由于“返回顶部”按钮在电脑以及手机上的显示位置不同,所以无法用css来进行设置(知道的人麻烦告诉我下), 所以只能用 js 来进行设置,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$(window).resize(showGotoTop); function showGotoTop() { if ($(window).width() > 767) { $gotoTop.css({ 'left': '50%', 'margin-left': $('.posts').width() / 2 + 'px', 'right': 'auto' }); } else { $gotoTop.css({ 'left': 'auto', 'margin-left': '0', 'right': '0' }); } } |
代码监听了界面改变大小时的事件,并且计算出“返回顶部”的位置。
3. 其他问题
由于 IE6-8 等浏览器不支持 CSS3 Media,这里推荐使用 github 上的开源项目 Respond.js。
Respond.js 是一个快速、轻量的 polyfill,用于为 IE6-8 以及其它不支持 CSS3 Media Queries 的浏览器提供媒体查询的 min-width 和 max-width 特性,实现响应式网页设计(Responsive Web Design)。
使用:
1 2 3 |
<!--[if lt IE 9]> <script src="respond.js"></script> <![endif]--> |
文章作者 wenzhixin
上次更新 2013-10-22