CSS3弹性盒布局

  1. 使用自适应的窗口弹性盒布局 可以使div总宽度等于浏览器宽度,而且可以随着浏览器的改变而改变。
 1 <!DOCTYPE html>
 2 <html lang="zh-CN">
 3 <head>
 4     <meta http-equiv="content-type" content="text/html; charset=utf-8">
 5     <meta http-equiv="x-ua-compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
 7     <title>测试</title>
 8     <style>
 9     /*弹性盒布局*/
10     #container{
11         display: -webkit-box;
12         display: -moz-box;
13     }
14     #left-sidebar{
15         width: 200px;
16         padding: 20px;
17         background-color: orange;
18     }
19     #content{
20         -moz-box-flex: 1;
21         -webkit-box-flex: 1;
22         padding: 20px;
23         background-color: yellow;
24     }
25     #right-sidebar{
26         width: 200px;
27         padding: 20px;
28         background-color: limegreen;
29     }
30     #left-sidebar, #content, #right-sidebar{
31         box-sizing: border-box;
32     }
33 </style>
34 </head>
35 <body>
36 <div id="container">
37     <div id="left-sidebar">示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。</div>
38     <div id="content">示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。</div>
39     <div id="right-sidebar">示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。</div>
40 </div>
41 </body>
42 </html>
  1. 改变元素的显示顺序 box-ordinal-group可以改变各个元素的显示顺序。
 1 <!DOCTYPE html>
 2 <html lang="zh-CN">
 3 <head>
 4     <meta http-equiv="content-type" content="text/html; charset=utf-8">
 5     <meta http-equiv="x-ua-compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
 7     <title>测试</title>
 8     <style>
 9     /*弹性盒布局*/
10     #container{
11         display: -webkit-box;
12         display: -moz-box;
13     }
14     #left-sidebar{
15         -moz-box-ordinal-group: 2;
16         -webkit-box-ordinal-group: 2;
17         width: 200px;
18         padding: 20px;
19         background-color: orange;
20     }
21     #content{
22         -moz-box-ordinal-group: 1;
23         -webkit-box-ordinal-group: 1;
24         -moz-box-flex: 1;
25         -webkit-box-flex: 1;
26         padding: 20px;
27         background-color: yellow;
28     }
29     #right-sidebar{
30         -moz-box-ordinal-group: 3;
31         -webkit-box-ordinal-group: 3;
32         width: 200px;
33         padding: 20px;
34         background-color: limegreen;
35     }
36     #left-sidebar, #content, #right-sidebar{
37         box-sizing: border-box;
38     }
39 </style>
40 </head>
41 <body>
42 <div id="container">
43     <div id="left-sidebar">示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。</div>
44     <div id="content">示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。</div>
45     <div id="right-sidebar">示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。</div>
46 </div>
47 </body>
48 </html>
  1. 改变元素的排列方向 使用box-orient改变多个元素的排列方向。
 1 <!DOCTYPE html>
 2 <html lang="zh-CN">
 3 <head>
 4     <meta http-equiv="content-type" content="text/html; charset=utf-8">
 5     <meta http-equiv="x-ua-compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
 7     <title>测试</title>
 8     <style>
 9     /*弹性盒布局*/
10     #container{
11         display: -webkit-box;
12         display: -moz-box;
13         -moz-box-orient: vertical;
14         -webkit-box-orient: vertical;
15     }
16     #left-sidebar{
17         -moz-box-ordinal-group: 2;
18         -webkit-box-ordinal-group: 2;
19         width: 200px;
20         padding: 20px;
21         background-color: orange;
22     }
23     #content{
24         -moz-box-ordinal-group: 1;
25         -webkit-box-ordinal-group: 1;
26         -moz-box-flex: 1;
27         -webkit-box-flex: 1;
28         padding: 20px;
29         background-color: yellow;
30     }
31     #right-sidebar{
32         -moz-box-ordinal-group: 3;
33         -webkit-box-ordinal-group: 3;
34         width: 200px;
35         padding: 20px;
36         background-color: limegreen;
37     }
38     #left-sidebar, #content, #right-sidebar{
39         box-sizing: border-box;
40     }
41 </style>
42 </head>
43 <body>
44 <div id="container">
45     <div id="left-sidebar">示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。</div>
46     <div id="content">示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。</div>
47     <div id="right-sidebar">示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。</div>
48 </div>
49 </body>
50 </html>
  1. 元素宽度与高度的自适应 虽然使用盒布局时,元素的高度与宽度具有了一定的适应性,但是容器中总还是会留出一大片空白区域。
  2. 使用弹性盒布局来消除空白 使用弹性盒布局可以消除盒布局残留的空白问题。
 1 <!DOCTYPE html>
 2 <html lang="zh-CN">
 3 <head>
 4     <meta http-equiv="content-type" content="text/html; charset=utf-8">
 5     <meta http-equiv="x-ua-compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
 7     <title>测试</title>
 8     <style>
 9     *{
10         box-sizing: border-box;
11         margin: 0;
12     }
13     html, body{
14         width: 100%;
15         height: 100%;
16     }
17     /*弹性盒布局*/
18     #container{
19         display: -webkit-box;
20         display: -moz-box;
21         -moz-box-orient: vertical;
22         -webkit-box-orient: vertical;
23         border: 2px solid black;
24         width: 100%;
25         height: 100%;
26     }
27     #left-sidebar{
28         -moz-box-ordinal-group: 2;
29         -webkit-box-ordinal-group: 2;
30         width: 200px;
31         padding: 20px;
32         background-color: orange;
33     }
34     #content{
35         -moz-box-ordinal-group: 1;
36         -webkit-box-ordinal-group: 1;
37         -moz-box-flex: 1;
38         -webkit-box-flex: 1;
39         padding: 20px;
40         background-color: yellow;
41     }
42     #right-sidebar{
43         -moz-box-ordinal-group: 3;
44         -webkit-box-ordinal-group: 3;
45         width: 200px;
46         padding: 20px;
47         background-color: limegreen;
48     }
49 </style>
50 </head>
51 <body>
52 <div id="container">
53     <div id="left-sidebar">示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。</div>
54     <div id="content">示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。</div>
55     <div id="right-sidebar">示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。</div>
56 </div>
57 </body>
58 </html>
  1. 对多个元素使用box-flex属性 如果每个div元素都有box-flex,那么每个元素的宽高等于容器宽高的1/n。容器的空白部分根据box-flex的属性值进行分配。

示例代码:

 1 <!DOCTYPE html>
 2 <html lang="zh-CN">
 3 <head>
 4     <meta http-equiv="content-type" content="text/html; charset=utf-8">
 5     <meta http-equiv="x-ua-compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
 7     <title>测试</title>
 8     <style>
 9     *{
10         box-sizing: border-box;
11         margin: 0;
12     }
13     html, body{
14         width: 100%;
15         height: 100%;
16     }
17     /*弹性盒布局*/
18     #container{
19         display: -webkit-box;
20         display: -moz-box;
21         -moz-box-orient: vertical;
22         -webkit-box-orient: vertical;
23         border: 2px solid black;
24         width: 100%;
25         height: 100%;
26     }
27     #left-sidebar{
28         -moz-box-ordinal-group: 2;
29         -webkit-box-ordinal-group: 2;
30         -moz-box-flex: 1;
31         -webkit-box-flex: 1;
32         padding: 20px;
33         background-color: orange;
34     }
35     #content{
36         -moz-box-ordinal-group: 1;
37         -webkit-box-ordinal-group: 1;
38         -moz-box-flex: 2;
39         -webkit-box-flex: 2;
40         padding: 20px;
41         background-color: yellow;
42     }
43     #right-sidebar{
44         -moz-box-ordinal-group: 3;
45         -webkit-box-ordinal-group: 3;
46         -moz-box-flex: 1;
47         -webkit-box-flex: 1;
48         padding: 20px;
49         background-color: limegreen;
50     }
51 </style>
52 </head>
53 <body>
54 <div id="container">
55     <div id="left-sidebar">示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。</div>
56     <div id="content">示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。</div>
57     <div id="right-sidebar">示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。示例文字,页面中比较长的示例文字。</div>
58 </div>
59 </body>
60 </html>
  1. 指定水平方向与垂直方向的对齐方式  可以使用box-pack属性及box-align属性来指定元素中文字、图片水平或垂直方向的对齐方式。

示例代码:

 1 <!DOCTYPE html>
 2 <html lang="zh-CN">
 3 <head>
 4     <meta http-equiv="content-type" content="text/html; charset=utf-8">
 5     <meta http-equiv="x-ua-compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
 7     <title>测试</title>
 8     <style>
 9     *{
10         box-sizing: border-box;
11         margin: 0;
12     }
13     html, body{
14         width: 100%;
15         height: 100%;
16     }
17     /*弹性盒布局*/
18     #container{
19         display: -webkit-box;
20         display: -moz-box;
21         -moz-box-align: center;
22         -webkit-box-align: center;
23         -moz-box-pack: center;
24         -webkit-box-pack: center;
25         -moz-box-orient: vertical;
26         -webkit-box-orient: vertical;
27         border: 2px solid black;
28         width: 50%;
29         height: 50%;
30     }
31     #content{
32         display: -webkit-box;
33         display: -moz-box;
34         -moz-box-align: center;
35         -webkit-box-align: center;
36         -moz-box-pack: center;
37         -webkit-box-pack: center;
38         -moz-box-orient: vertical;
39         -webkit-box-orient: vertical;
40         width: 50%;
41         height: 50%;
42         padding: 20px;
43         background-color: yellow;
44     }
45 </style>
46 </head>
47 <body>
48 <div id="container">
49     <div id="content">示例文字。</div>
50 </div>
51 </body>
52 </html>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏知道一点点

echarts动态数据获取展示(地图,折线图)

6152
来自专栏前端知识分享

第48天:垂直滚动条

731
来自专栏前端技术总结

CSS自定义滚动条的样式

本文会介绍CSS滚动条选择器,并在演示中展示如何在Webkit的内核浏览器和IE浏览器中,自定义一个横向以及一个纵向的滚动条。

1.8K65
来自专栏Java后端技术

让div等块级元素水平以及垂直居中的解决办法

  我们在设计页面的时候,经常要把div等块级元素居中显示,而且是相对页面窗口水平和垂直方向居中显示,如让登录窗口居中显示。我们传统解决的办法是用纯CSS来让d...

812
来自专栏跟着阿笨一起玩NET

html打印表格每页都有的表头和打印分页

本文转载:http://www.cnblogs.com/RitchieChen/archive/2008/07/30/1256829.html

1761
来自专栏九彩拼盘的叨叨叨

Flex布局 写法示例

581
来自专栏一“技”之长

标签之美四——为网页添加绚丽多彩的图像 原

这里图片路径的写法和本地超链接的写法是一样的,可以参考上一篇博客中关于本地路径的地方:http://my.oschina.net/u/2340880/blog/...

913
来自专栏Java后端技术

HTML标记语法之表格元素

8.直列化格式:<colgroup><colgroup>(<col>与<colgroup>的功能完全一样)

1051
来自专栏木子昭的博客

css布局-实现左中右布局的5种方式

? <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ...

3428
来自专栏从零开始的linux

mongodb分片

分别在三台机器上面创建 mkdir -pv /data/mongodb/mongos/log mkdir -pv /data/mongodb/config/{d...

4074

扫码关注云+社区