(响应式布局)如何使页面在缩放的过程中不变形
今天在改造一个前端页面时,发现页面视图在pc端显示的好好的,一旦缩小页面或者打开开发者工具,进入移动端视图时,页面就会发生严重的变形。
导致观看效果特别不好,一开始我以为是我编写的代码有问题。
后来查阅资料才知道,要想使页面在缩放的过程中不变形。
可以使用响应式布局的方式。
什么是响应式布局?
响应式布局(Responsive design),意在实现不同屏幕分辨率的终端上浏览网页的不同展示方式。通过响应式设计能使网站在手机和平板电脑上有更好的浏览阅读体验。
响应式布局等于流动网格布局,而自适应布局等于使用固定分割点来进行布局。
自适应布局给了你更多设计的空间,因为你只用考虑几种不同的状态。
而在响应式布局中你却得考虑上百种不同的状态。
虽然绝大部分状态差异较小,但仍然也算做差异。
它使得把握设计最终效果变得更难,同样让响应式布局更加的难以测试和预测。
但同时说难,这也算是响应式布局美的所在。
在考虑到表层级别不确定因素的过程中,你也会因此更好的掌握一些基础知识。
当然,要做到精确到像素级别的去预测设943*684像素视区里的样子是很难的。
但是你至少可以很轻松的确定它是能够正常工作的,因为页面的基本特性和布局结构都是根据语义结构来部署的。
响应式设计的步骤:
1. 设置 Meta 标签
大多数移动浏览器将HTML页面放大为宽的视图(viewport)以符合屏幕分辨率。你可以使用视图的meta标签来进行重置。下面的视图标签告诉浏览器,使用设备的宽度作为视图宽度并禁止初始的缩放。在标签里加入这个meta标签。
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
注意:user-scalable = no 属性能够解决 iPad 切换横屏之后触摸才能回到具体尺寸的问题。
2. 通过媒介查询来设置样式 Media Queries
Media Queries 是响应式设计的核心。
它根据条件告诉浏览器如何为指定视图宽度渲染页面。假如一个终端的分辨率小于 980px,那么可以这样写:
//code from http://caibaojian.com/356.html
@media screen and (max-width: 980px) {
#head { … }
#content { … }
#footer { … }
}
这里的样式就会覆盖上面已经定义好的样式。
3. 设置多种试图宽度
假如我们要设定兼容 iPad 和 iphone 的视图,那么可以这样设置:
/** iPad **/
@media only screen and (min-width: 768px) and (max-width: 1024px) {}
/** iPhone **/
@media only screen and (min-width: 320px) and (max-width: 767px) {}
下面是一个关于响应式布局的简单实例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
.a {
border: 1px solid #000000;
width: 100px;
height: 100px;
background-color: #000000;
}
@media only screen and (min-width: 300px) and (max-width: 640px) {
.a {
background-color: red;
}
}
@media only screen and (min-width: 700px) {
.a {
background-color: green;
}
}
@media only screen and (max-width:200px) {
.a {
background-color: blue;
}
}
</style>
</head>
<body>
<div class="a"></div>
</body>
</html>
注意,如果想要进行响应式布局。
那么需要将@media后的代码写在下面,这样在执行的过程中,下面的代码才可以覆盖上面的代码。
不然有可能会出现代码不生效的问题。