Responsive Web Design - 自适应网页设计概念

自适应网页设计是指自动识别屏幕宽度、并做出相应调整的网页设计。包括两方面:

  • 页面可以根据不同终端的屏幕宽度自动调整,兼容电脑、手机等设备
  • 根据浏览器窗口的大小自动调整。

“自适应网页设计”(Responsive Web Design)的概念是2010由Ethan Marcotte提出。

自适应网页在html中的实现

通过HTML中实现自适应的页面主要是使用HTML及CSS样式实现,具体包括

添加viewport的元信息标签

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

对以上的标签说明如下:

  • viewport - 指的是网页默认的宽度和高度
  • width=device-width - 网页宽度默认等于屏幕宽度
  • initial-scale=1 ,原始缩放比例,1表示网页初始大小占屏幕面积的100%

使用相对宽度

如果是绝对宽度,无法变化就谈不上自动适应了, 所以不能使用 px单位定义宽度。
可以使用百分比或是auto。

width: xx%;
width:auto;

使用相对字体大小

使用相对大小(em),不使用绝对大小(px)。

div {font: normal 100% Helvetica, Arial, sans-serif;}

字体大小是页面默认大小的100%,即16像素

{font-size: 1.5em;
}

h1的大小是默认大小的1.5倍,即24像素(24/16=1.5)

流动布局

使用CSS 的float来进行布局。

.main {float: right;width: 70%;?
}
.left {float: left;width: 22%;
}

根据屏幕大小加载不同的CSS文件

对应在HTML文件中导入CSS的两种不同方式,可以在标签导入不同CSS文件,也可以在CSS文件中直接定义。使用的都是CSS3 的Media特性。

在CSS导入标签中,使用media属性来进行选择, 比如:
 <link rel="stylesheet" type="text/css" media="screen and (max-device-width: 500px)" href="tinyScreen.css" />

屏幕小于500像素(max-device-width: 500px)则加载这个CSS文件。
也可以在CSS文件中使用 @import

@import url("tinyScreen.css") screen and (max-device-width: 400px);
在CSS文件中定义不同频宽的样式

也可以根据屏幕宽度定义不同的CSS

 @media screen and (max-device-width: 500px) {.column {float: none;width:auto;}#leftbar {display:none;}}

responsive布局原则与技巧

1,尽量避免使用无用的div
2, 不要使用内联元素
3, 尽量少用js
4, 不要使用没用的绝对定位,和浮动;
5,放弃100%设置

ResponsiveColumn自适应列实例

没有自适应的CSS样式

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
.grid4 {width: 960px;margin: 20px auto;
}.grid4 div {width: 225px;background: #ccc;margin: 10px;float: left;/*font style*/font-size: 50px;font-weight: bold;color: orange;text-align: center;line-height: 100px;
}.grid4 .first {margin-left: 0px;
}.grid4 .last {margin-right: 0px;
}
</style>
</head>
<body><div class="grid4"><!-- 第一行 --><div class="first">Cell1</div><div>Cell2</div><div>Cell3</div><div class="last">Cell4</div><!-- 第二行 --><div class="first">Cell5</div><div>Cell6</div><div>Cell7</div><div class="last">Cell8</div><!-- 第三行 --><div class="first">Cell9</div><div>Cell10</div><div>Cell11</div><div class="last">Cell12</div></div>
</body>
</html>

效果如下:

自适应的CSS样式

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
.col {background: #ccc;float: left;margin-left: 3.2%;margin-bottom: 30px;/*font style*/font-size: 50px;font-weight: bold;color: orange;text-align: center;line-height: 100px;
}/* grid4 col */
.grid4 .col {width: 20%;
}@media screen and (max-width: 740px) {.grid4 .col {width: 31.2%;}.grid4 .col:nth-of-type(4n+1) {margin-left: 3.2%;clear: none;}.grid4 .col:nth-of-type(3n+1) {margin-left: 0;clear: left;}
}@media screen and (max-width: 600px) {/* change grid4 to 2-column */.grid4 .col {width: 48.4%;}.grid4 .col:nth-of-type(3n+1) {margin-left: 3.2%;clear: none;}.grid4 .col:nth-of-type(2n+1) {margin-left: 0;clear: left;}
}
</style>
</head>
<body><div class="grid4"><!-- 第一行 --><div class="col">Cell1</div><div class="col">Cell2</div><div class="col">Cell3</div><div class="col">Cell4</div><!-- 第二行 --><div class="col">Cell5</div><div class="col">Cell6</div><div class="col">Cell7</div><div class="col">Cell8</div><!-- 第三行 --><div class="col">Cell9</div><div class="col">Cell10</div><div class="col">Cell11</div><div class="col">Cell12</div></div>
</body>
</html>

屏幕正常时和上面的效果类似。

屏幕变小,每行三个。

屏幕再小,每行2个

代码解析:

  1. 使用@media对不同的屏幕宽度定义不同的CSS样式
    @media screen and (max-width: 740px)

  2. nth-of-type(3n+1)
    :nth-of-type(n) 选择器匹配属于父元素的特定类型的第 N 个子元素的每个元素.
    类似 div:nth-of-type(3n+1) , 当有12个div元素时,分别对应第1,4、7、10个元素

  3. clear属性的作用就是“清除”浮动,clear属性有种类型的值:both|left|right|none;

  • clear:left;表示该元素左边不存在浮动元素
  • clear:right;表示该元素右边不存在浮动元素
  • clear:both;表示该元素两边都不存浮动元素。
  • clear:none表示两边允许有浮动元素。

Responsive自适应网页设计与ResponsiveColumn自适应列实例相关推荐

  1. [转]自适应网页设计(Responsive Web Design)

    本文转自:http://www.ruanyifeng.com/blog/2012/05/responsive_web_design.html 作者: 阮一峰 日期: 2012年5月 1日 随着3G的普 ...

  2. 摘抄 web 经 关于 自适应网页设计(Responsive Web Design)

    一."自适应网页设计"的概念 2010年,Ethan Marcotte提出了"自适应网页设计"(Responsive Web Design)这个名词,指可以自动 ...

  3. 自适应网页设计/响应式Web设计 (Responsive Web Design)

    随着3G的普及,越来越多的人使用手机上网. 移动设备正超过桌面设备,成为访问互联网的最常见终端.于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页? 手机的屏幕比较小,宽度通 ...

  4. 自适应网页设计(Responsive Web Design)响应式设计

    随着3G的普及,越来越多的人使用手机上网. 移动设备正超过桌面设备,成为访问互联网的最常见终端.于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页? 手机的屏幕比较小,宽度通 ...

  5. 自适应网页设计(Responsive Web Design)(转)

    随着3G的普及,越来越多的人使用手机上网. 移动设备正超过桌面设备,成为访问互联网的最常见终端.于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页? 手机的屏幕比较小,宽度通 ...

  6. 自适应网页设计(Responsive Web Design)别名(响应式web设计、响应式布局)

    随着3G的普及,越来越多的人使用手机上网. 移动设备正超过桌面设备,成为访问互联网的最常见终端.于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页? 手机的屏幕比较小,宽度通 ...

  7. 自适应网页设计(Responsive Web Design)

    随着3G的普及,越来越多的人使用手机上网. 移动设备正超过桌面设备,成为访问互联网的最常见终端.于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页? 手机的屏幕比较小,宽度通 ...

  8. (转)自适应网页设计(或称为响应式web设计)(Responsive Web Design)

    随着3G的普及,越来越多的人使用手机上网. 移动设备正超过桌面设备,成为访问互联网的最常见终端.于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页? 手机的屏幕比较小,宽度通 ...

  9. 自适应网页设计(Responsive Web Design)转自阮一峰

    二.允许网页宽度自动调整 "自适应网页设计"到底是怎么做到的?其实并不难. 首先,在网页代码的头部,加入一行viewport元标签. <meta name="vie ...

最新文章

  1. 创建BDC域控制器时,提示“出站复制验证失败。在复制源域控制器上未启用出站复制”的解决办法...
  2. table中tr使用toggle不好,选择换一张方式
  3. 在C#程序中实现插件架构
  4. 关于父窗口获取跨域iframe子窗口中的元素
  5. (4)pyspark---dataframe清理
  6. 个人的web开发心得(八)----------非常适合入门新手,都是常识
  7. 数据分析中的统计概率_了解统计和概率:成为专家数据科学家
  8. zabbix内网安装部署_zabbix2.4.8升级3.0.31操作部署记录
  9. matplotlib动画入门(1):基本概念
  10. 浅谈win10修复系统文件的方法
  11. python 安卓库_Android高级面试题资料(持续更新)
  12. APP安全——反编译分析(反编译、再编译、签名)
  13. 18款口碑爆棚手机浏览器,被一网打尽了
  14. 寄人东篱下,愤然见南山
  15. 数据比赛资料(杂合)
  16. 达人评测 r7 7730u和i5 12500h差距 锐龙r77730u和酷睿i512500h对比
  17. AMD XILINX宣布2023年产品涨价8%
  18. 论文摘要部分如何撰写
  19. Linux系统NAT实现机制的升级改进
  20. taro: 如何使用编译配置中定义的常量defineConstants

热门文章

  1. React 错误Each child in an array or iterator should have a unique “key” prop
  2. C++ 中list、vector和deque比较[转]
  3. Selenium自动化测试IE
  4. 如何修改wampserver中mysql中字符编码的解决方案
  5. 算法工程师面试备战笔记9_支持向量机(SVM)中的支持向量是什么意思
  6. 未定义标识符CV_HAAR_SCALE_IMAGE
  7. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
  8. 为什么BERT在商业环境碰壁?
  9. c++中queue用法
  10. 吴恩达深度学习神经网络基础编程作业Building your Deep Neural Network Step by Step