您好,欢迎访问一九零五行业门户网

CSS 响应式设计_html/css_WEB-ITnose

响应式设计是指在不同分辨率的设备中,网页布局可以自适应的调整。这种弹性化的布局使网站在不同设备中的布局都比较合理,可以为不同终端的用户提供更加舒适的界面和更好的用户体验,其根本理念是使原本 pc 上的网站兼容手机和平板。简单理解就是可以让一个网站兼容多个终端,而不是为每个终端做一个特定的版本,响应式设计是移动设备快速崛起下的产物,这个概念就是为了解决移动互联网而诞生的。大部分响应式网页都是通过媒体查询,根据不同的媒体设备从而加载不同样式的 css 文件来实现的。
1、响应式 web 设计 - viewport (1)、什么是 viewport?
viewport 翻译为中文为视区/视窗/视口,就是指用户网页的可视区域。手机浏览器是把页面放在一个虚拟的 viewport 中,通常这个虚拟的 viewport 比屏幕宽,这样就不用把每个网页挤到很小的窗口中,这样会破坏没有针对手机浏览器优化的网页的布局,用户可以通过平移和缩放来查看网页的不同部分。
(2)、设置 viewport
一个常用的针对移动网页优化过的页面的 viewport 元素大致如下:

代码解析:
width:控制 viewport 的大小,可以是指定的一个值,比如 1920,或者是特殊的值,如 device-width 为设备的宽度,单位为缩放为 100% 时的 css 的像素。
height:和 width 相对应,指定高度,可以是指定的一个值,比如 1080,或者是特殊的值,如 device-height 为设备的高度。
initial-scale:初始缩放比例,即当页面第一次载入是时缩放比例。
maximum-scale:允许用户缩放到的最大比例。
minimum-scale:允许用户缩放到的最小比例。
user-scalable:用户是否可以手动缩放。
2、 响应式 web 设计 - css 栅格系统 (1)、什么是栅格系统?
栅格系统也叫做网格视图,即通过固定的格子结构,来进行设计布局网页,响应式设计就是网格视图的实现方式。
很多网页都是基于网格设计的,这说明网页是按列来布局的。使用网格视图有助于我们设计网页,这让我们向网页添加元素变的更简单。
响应式网格视图通常是 12 列,宽度为 100%,在浏览器窗口大小调整时会自动伸缩。如下:
响应式设计就是让一个网站兼容多个终端,即为一个页面设计多种布局结构,分别适配不同屏幕尺寸的设备,就像下图显示这样:
通过上图,不难发现一个页面可以拆分成多个区块,而这些区块就构成了网页的布局,根据不同的屏幕尺寸,调整这些区块的排版,就可以实现响应式设计。此外,通过对比上图中不同设备的区块位置,当屏幕宽度较大时,区块倾向于水平分布,而当屏幕缩小时,区块则倾向于垂直堆叠。
(2)、创建响应式网格视图
首先确保所有的 html 元素都有 box-sizing 属性且设置为 border-box。该属性允许以确切的方式定义适应某个区域的具体内容。当值为 border-box 时,为元素设定的宽度和高度决定了元素的边框盒。也就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。
确保边距和边框包含在元素的宽度和高度间,可以添加如下代码:
1 *{2 box-sizing:border-box;3 }
下面的例子,是一个简单的响应式网页,包含两列:
1 2 3 4 5 6 简单的响应式网页 7 28 29 30 31 页头32
33 34 35 菜单 136 菜单 237 菜单 338 菜单 439 40
41 42 内容43 响应式设计是指在不同分辨率的设备中,网页布局可以自适应的调整。这种弹性化的布局使网站在不同设备中的布局都比较合理,可以为不同终端的用户提供更加舒适的界面和更好的用户体验,其根本理念是使原本 pc 上的网站兼容手机和平板。
44 响应式网格视图通常是 12 列,宽度为 100%,在浏览器窗口大小调整时会自动伸缩。
45
46 47
上例中的响应式设计只包含两列。12 列的网格系统可以更好的控制响应式网页。
首先我们可以计算每列的百分比:100% / 12 列 = 8.33%,在每列中指定 class, class=col- 用于定义每列有几个 span:
1 2 3 4 5 6 简单的响应式网页 7 41 42 43 44 页头45
46 47 48 49 50 菜单 151 菜单 252 菜单 353 菜单 454 55
56 57 58 内容59 响应式设计是指在不同分辨率的设备中,网页布局可以自适应的调整。这种弹性化的布局使网站在不同设备中的布局都比较合理,可以为不同终端的用户提供更加舒适的界面和更好的用户体验,其根本理念是使原本 pc 上的网站兼容手机和平板。
60 响应式网格视图通常是 12 列,宽度为 100%,在浏览器窗口大小调整时会自动伸缩。
61
62
63 64
代码解析:
每一行使用 包裹,所有列数加起来应为 12:
1 2 ...
3 ...
4

指定所有的列向左浮动,间距(padding)为 15px:
1 [class*=col-]{2 padding:15px;3 border:1px solid red;4 float:left;5 }
因为设置了浮动,所以需要清除浮动的影响,使用 :after 伪元素来清除浮动:
1 .row:after{2 content:;3 display:block;4 clear:both;5 }
最后给这个简单的响应式网页添加一些样式和颜色,可在 chrome 的开发者工具中或在 firefox 的开发者中选择响应式设计视图,调整显示设备的尺寸来查看效果。
1 2 3 4 5 6 简单的响应式网页 7 57 58 59 60 页头61
62 63 64 65 66 菜单 167 菜单 268 菜单 369 菜单 470 71
72 73 74 内容75 响应式设计是指在不同分辨率的设备中,网页布局可以自适应的调整。这种弹性化的布局使网站在不同设备中的布局都比较合理,可以为不同终端的用户提供更加舒适的界面和更好的用户体验,其根本理念是使原本 pc 上的网站兼容手机和平板。
76 响应式网格视图通常是 12 列,宽度为 100%,在浏览器窗口大小调整时会自动伸缩。
77
78
79 80
3、响应式 web 设计 - 媒体查询 使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。
(1)、css3 @media 查询
@media 可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的页面,@media 是非常有用的。
当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。
注意:ie9+ 以及所有浏览器都支持 @media 规则。
css 语法:
1 @media mediatype and|not|only (media feature){2 ...3 }
你也可以针对不同的媒体使用不同 stylesheets:

下面的例子,如果浏览器窗口小于 600px,背景将变为浅蓝色:
1 2 3 4 5 6 媒体查询 7 17 18 19 调整浏览器尺寸,当页面的宽度小于 600 像素,背景会变为浅蓝色,否则为浅绿色。
20 21

(2)、添加断点
在之前网格视图的例子中使用行和列来制作网页,虽然他是响应式的,但通过调整浏览器的尺寸,可以发现他在小屏幕上并不能友好的展示。通过媒体查询就可以很好的解决这个问题。我们可以在样式表中添加断点,不同的断点有不同的效果。
下面的例子,使用媒体查询在 768px 添加断点,当屏幕/浏览器窗口小于 768px,每一列的宽度是 100%:
1 2 3 4 5 6 添加断点 7 79 80 81 82 页头 83
84 85 86 87 菜单 1 88 菜单 2 89 菜单 3 90 菜单 4 91 92
93 94 内容 95 响应式设计是指在不同分辨率的设备中,网页布局可以自适应的调整。这种弹性化的布局使网站在不同设备中的布局都比较合理,可以为不同终端的用户提供更加舒适的界面和更好的用户体验,其根本理念是使原本 pc 上的网站兼容手机和平板。
96 响应式网格视图通常是 12 列,宽度为 100%,在浏览器窗口大小调整时会自动伸缩。
97
98 99 100 viewport101 viewport 翻译为中文为视区/视窗/视口,就是指用户网页的可视区域。
102 css 栅格系统103 栅格系统也叫做网格视图,即通过固定的格子结构,来进行设计布局网页,响应式设计就是网格视图的实现方式。
104 媒体查询105 使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。
106
107
108
109 110 页脚
111
112 113
(3)、为移动端优先设计
移动端优先意味着在设计桌面和其他设备时优先考虑移动端的设计,这就意味着必须对 css 做一些改变。
上面的例子在屏幕小于 768px 进行样式修改,同样移动端优先就是在屏幕宽度大于 768px 时修改样式。
下面的代码,是移动端优先设计:
1 /* 移动端优先: */ 2 [class*=col-]{ 3 width:100%; 4 } 5 @media only screen and (min-width: 768px){ 6 /* 桌面: */ 7 .col-1{width:8.33%;} 8 .col-2{width:16.66%;} 9 .col-3{width:25%;}10 .col-4{width:33.33%;}11 .col-5{width:41.66%;}12 .col-6{width:50%;}13 .col-7{width:58.33%;}14 .col-8{width:66.66%;}15 .col-9{width:75%;}16 .col-10{width:83.33%;}17 .col-11{width:91.66%;}18 .col-12{width:100%;}19 }
(4)、其他断点
可以根据实际的需求添加断点,同样也可以为平板设备和移动设备设置断点。
下面的代码,在屏幕为 600px 时添加媒体查询,并设置新的样式(屏幕大于 600px 但小于 768px):
1 2 3 4 5 6 其他断点 7 95 96 97 98 页头 99
100 101 102 103 104 菜单 1105 菜单 2106 菜单 3107 菜单 4108 109
110 111 112 内容113 响应式设计是指在不同分辨率的设备中,网页布局可以自适应的调整。这种弹性化的布局使网站在不同设备中的布局都比较合理,可以为不同终端的用户提供更加舒适的界面和更好的用户体验,其根本理念是使原本 pc 上的网站兼容手机和平板。
114 响应式网格视图通常是 12 列,宽度为 100%,在浏览器窗口大小调整时会自动伸缩。
115
116 117 118 119 viewport120 viewport 翻译为中文为视区/视窗/视口,就是指用户网页的可视区域。
121 css 栅格系统122 栅格系统也叫做网格视图,即通过固定的格子结构,来进行设计布局网页,响应式设计就是网格视图的实现方式。
123 媒体查询124 使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。
125
126
127
128 129 页脚
130
131 132
注意:上面代码中,平板和桌面两组类样式是相同的,但名称不同 col- 和 col-m-,这看起来很多余,但是他们可以根据屏幕大小自动设置不同的样式,所以还是非常必要的。如下:
1 2 ...
3 ...
4 ...
5

针对桌面设备:第一和第三部分跨 3 列,中间部分跨 6 列。
针对平板设备:第一部分跨 3列,第二部分跨 9 列,第三部分跨 12 列。
(5)、方向:横屏/竖屏
结合 css 媒体查询,可以创建适应不同设备的方向(横屏 landscape、竖屏 portrait 等)的布局。
语法:
orientation:portrait | landscape
portrait:指定输出设备中的页面可见区域高度大于或等于宽度。
landscape:除 portrait 值情况外,都是 landscape。
下面的例子,如果是横屏则背景显示为浅蓝色:
1 2 3 4 5 6 横屏/竖屏 7 18 19 20 调整浏览器尺寸,当页面的宽度大于高度时,背景会变为浅蓝色,否则为浅绿色。
21 22
4、响应式 web 设计 - 图片 (1)、使用 width 属性
如果 width 属性设置为 100%,图片会根据上下范围实现响应式功能:
1 2 3 4 5 6 图片 7 13 14 15 16 可以调整浏览器窗口,查看图片是如何扩展的。
17 18
注意:上面的例子,图片会比它的原始图片大,在 chrome 中显示如下:
扩大或缩小浏览器窗口,图片也会相应的调整自身大小,可以使用 max-width 属性很好的解决这个问题。
(2)、使用 max-width 属性
如果 max-width 属性设置为 100%,图片永远不会大于其原始大小:
1 img{2 max-width:100%;3 height:auto;4 }
同样的窗口大小,在 chrome 中显示如下:
不管如何调整浏览器窗口大小,他始终都显示原始图片大小。
(3)、在网页中添加图片
将上面例子中的图片,添加到媒体查询为移动端优先设计的响应式网页中:
1 2 3 4 5 6 响应式图片 7 100 101 102 103 页头104
105 106 107 108 109 菜单 1110 菜单 2111 菜单 3112 菜单 4113 114
115 116 117 内容118 响应式设计是指在不同分辨率的设备中,网页布局可以自适应的调整。这种弹性化的布局使网站在不同设备中的布局都比较合理,可以为不同终端的用户提供更加舒适的界面和更好的用户体验,其根本理念是使原本 pc 上的网站兼容手机和平板。
119 响应式网格视图通常是 12 列,宽度为 100%,在浏览器窗口大小调整时会自动伸缩。
120 121
122 123 124 125 viewport126 viewport 翻译为中文为视区/视窗/视口,就是指用户网页的可视区域。
127 css 栅格系统128 栅格系统也叫做网格视图,即通过固定的格子结构,来进行设计布局网页,响应式设计就是网格视图的实现方式。
129 媒体查询130 使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。
131
132
133
134 135 页脚
136
137 138
(4)、背景图片
背景图片可以响应调整大小或缩放。
以下是三个不同的方法:
①、如果 background-size 属性设置为 contain,背景图片将按比例自适应内容区域,图片保持其比例不变:
1 2 3 4 5 6 背景图片-1 7 16 17 18 调整浏览器大小查看效果。
19
20 21
在 chrome 中显示如下:
②、如果 background-size 属性设置为 100% 100% ,背景图片将延展覆盖整个区域:
1 div{2 width:100%;3 height:400px;4 background:url('images/xi.jpg') no-repeat;5 background-size:100% 100%;6 border:2px solid red;7 }
在 chrome 中显示如下:
③、如果 background-size 属性设置为 cover,则会把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。注意该属性保持了图片的比例,因此背景图像的某些部分无法显示在背景定位区域中:
1 div{2 width:100%;3 height:400px;4 background:url('images/xi.jpg') no-repeat;5 background-size:cover;6 border:2px solid red;7 }
在 chrome 中显示如下:
(5)、不同设备显示不同图片
大尺寸图片可以显示在大屏幕上,但在小屏幕上确不能很好显示。因此没有必要在小屏幕上去加载大图片,这样很影响加载速度。所以可以使用媒体查询,根据不同的设备显示不同的图片。
1 2 3 4 5 6 不同设备显示不同图片 7 20 21 22 调整浏览器宽度,背景图片在小于 400 px 时将改变。
23 24
当设备宽度大于 400px 时,在 firefox 的响应式设计视图中显示如下:
当设备宽度小于 400px 时,在 firefox 的响应式设计视图中显示如下:
你可以使用媒体查询的 min-device-width 替代 min-width 属性,它将检测的是设备宽度而不是浏览器宽度。注意:浏览器大小重置时,图片大小不会改变。
1 /* 设备小于 400px:*/ 2 body{ 3 background:url('images/xi.jpg') no-repeat; 4 } 5 6 /* 设备大于 400px: */ 7 @media only screen and (min-device-width:400px){ 8 body{ 9 background-image: url('images/xi-big.jpg');10 }11 }
(6)、html5 元素
html5 的 元素可以设置多张图片,该元素用来处理响应式图片。
元素类似于 和 元素。可以设置不同的资源,第一个设置的资源为首选使用的。
下面的例子,使用 元素为不同的设备显示不同的图片:
1 2 3 4 5 6 picture 元素 7 8 9 10 11 12 13 14 调整浏览器宽度,背景图片在小于 400 px 时将改变。
15 16
source 属性的必须的,用于定义图片资源。media 属性是可选的,对于不支持 元素的浏览器可以使用 元素来替代。
注意:chrome 和 firefox 都支持该元素,ie 浏览器不支持。
虽然 ie 不支持 元素,但是可以通过 picturefill.js 插件来解决 ie 浏览器的兼容性问题。
picturefill 是一个用于处理图片响应式的类库,他能够让你针对不同浏览器屏幕,加载对应的图片元素。我们可以利用插件让 ie 浏览器识别 元素。在百度搜索 picturefill.js,将文件下载下来,然后在文档中引用:
1 2 3 7
在实际使用时,可以给引用文件的 script 元素添加一个 async 属性:

这就告诉浏览器,可以异步执行脚步,仅适用于外部脚步。
当浏览器宽度大于 400px 时,在 ie 中显示如下:
当浏览器宽度小于 400px 时,在 ie 中显示如下:
但是该方法只适用于 ie10+ 浏览器,ie9 仍然不支持,在 ie9 中显示如下:
5、响应式 web 设计 - 视频 (1)、使用 width 属性
如果 width 属性设置为 100%,视频播放器会根据屏幕大小自动调整比例:
1 2 3 4 5 视频 6 12 13 14 15 16 17 18 19 调整浏览器窗口大小,查看视频播放器变化。
20 21
注意:上面的例子,视频播放器根据屏幕大小自动调整比例,且可以比原始尺寸大。更多情况下我们可以使用 max-width 属性来替代。在 chrome 中显示如下:
(2)、使用 max-width 属性
如果 max-width 属性设置为 100%,视频播放器会根据屏幕自动调整比例,但不会超过其原始大小:
1 video{2 max-width:100%;3 height:auto;4 }
同样的窗口大小,在 chrome 中显示如下:
(3)、在网页中添加视频
将上面例子中的视频,添加到之前创建的媒体查询为移动端优先设计的响应式网页中。
该视频会根据 div 区域大小自动调整并占满整个 div 区域:
1 2 3 4 5 6 响应式视频 7 100 101 102 103 页头104
105 106 107 108 109 菜单 1110 菜单 2111 菜单 3112 菜单 4113 114
115 116 117 内容118 响应式设计是指在不同分辨率的设备中,网页布局可以自适应的调整。这种弹性化的布局使网站在不同设备中的布局都比较合理,可以为不同终端的用户提供更加舒适的界面和更好的用户体验,其根本理念是使原本 pc 上的网站兼容手机和平板。
119 响应式网格视图通常是 12 列,宽度为 100%,在浏览器窗口大小调整时会自动伸缩。
120 121 122 123 124
125 126 127 128 viewport129 viewport 翻译为中文为视区/视窗/视口,就是指用户网页的可视区域。
130 css 栅格系统131 栅格系统也叫做网格视图,即通过固定的格子结构,来进行设计布局网页,响应式设计就是网格视图的实现方式。
132 媒体查询133 使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。
134
135
136
137 138 页脚
139
140 141
6、响应式 web 设计 - 框架 创建响应式网页可以使用框架来完成,比如:响应式 web 设计框架 bootstrap。
bootstrap 是基于 html、css、jsvascript 的,它简洁灵活,使得 web 开发更加快捷,是目前最受欢迎的前端框架。
bootstrap 中的网格和之前创建响应式网页的方式是相同的,默认分为 12 列,正确的写法如下:
1 2 3 4 ... 5
6 7 ... 8
9 10 ...11
12
13

使用 bootstrap 创建响应式网页,必须理解容器(container)、行(row)和列(column)之间的层级关系。container 是网格的容器,row(.row)必须位于 container 的内部,column(如 .col-sm-4)必须位于 row 的内部,container、row、column 必须保持特定的层级结构,网格系统才能正常运行。
其它类似信息

推荐信息