请珍惜小编劳动成果,该文章为小编原创,转载请注明出处。

摘要:

    CSS3相对CSS2增加了一些新的布局方式:多栏布局和盒子布局。在这篇文章中,将对CSS2的布局进行简单的回忆,并总结CSS3的布局方式。

DIV+CSS其实是错误的叫法

     关于当前的页面布局,很多人都习惯于叫做DIV+CSS,其实这是一种错误的叫法,标准叫法应该叫做XHTML+CSS.

这是为什么呢?传统的页面布局采用的是Table布局,即Table+CSS,后来出现了使用DIV的布局方式,所以人们就把它叫做DIV+CSS,而且有些人认为用DIV+CSS制作的页面才是标准页面,其实这句话是比较狭隘的。

那什么是标准页面呢?WEB标准由结构,表现和行为三部分组成。其中结构话标准语言是XHTML和XML,表现化标准语言是CSS。因为XML比较复杂,大多数浏览器都没有完全支持,故不使用XML来实现页面布局,所以标准的页面布局应该是符合WEB标准的页面布局,即XHTML+CSS。

而XHTML中不仅仅只有DIV标签,还有a,p,ul,li,dl,dt等等标签,所以即使不使用DIV标签,制作的页面也是标准页面,XHTML的各个标签都有其功能,并不是说只能用DIV去实现页面布局(在一本书上有怎么一句话:如果满屏都是DIV,那也算不上标准页面了)

所以说,以后我们要尽可能的说XHTML+CSS,而不是DIV+CSS.

CSS2时代的布局方式

      简单点说,CSS2时代是使用float的浮动属性来实现布局的。
layout.css

  1. /* CSS Document */
  2.  
  3. /*基本信息*/
  4. body{
  5. margin:0px; /*外边距*/
  6. text-align:center; /*文字居中对齐*/
  7. background:#E1D0BB; /*背景色*/
  8. }
  9. /*页面层容器*/
  10. #container{
  11. width:80%;
  12. height:100%;
  13. margin-left:10%;
  14. margin-right:10%;
  15. background:#ABE0F1;
  16. }
  17. /*头部*/
  18. #header{
  19. width:100%;
  20. height:15%;
  21. margin:0px;
  22. background:#FF0000;
  23. }
  24.  
  25. #logo{
  26. float:left; /*浮动属性,居左对齐,使其可以在同一行显示*/
  27. width:60%;
  28. height:80%;
  29. margin:0px;
  30. background:#E18CDD;
  31. clear:left; /*取消左侧浮动*/
  32. }
  33. #banner{
  34. float:right; /*浮动属性,居右对齐,使其可以在同一行显示*/
  35. width:38%;
  36. height:80%;
  37. margin:0px;
  38. background:#8376D8;
  39. clear:right; /*取消右侧浮动*/
  40. }
  41. #menu{
  42. width:100%;
  43. height:5%;
  44. margin:0px;
  45. background:#00FF00;
  46. }
  47. #pageBody{
  48. width:100%;
  49. height:70%;
  50. margin:0px;
  51. background:#00FFFF;
  52.  
  53. }
  54. #footer{
  55. width:100%;
  56. height:10%;
  57. margin:0px;
  58. background:#FFFF00;
  59. }

layout.html


  1. <!DOCTYPE>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>布局</title>
  6. <link href="style/layout.css" rel="stylesheet" type="text/css" />
  7. </head>
  8.  
  9. <body>
  10. <div id="container">
  11. <div id="header">
  12. <div id="logo">
  13. logo
  14. </div>
  15. <div id="banner">
  16. banner
  17. </div>
  18. container
  19. </div>
  20. <div id="menu">
  21. menu
  22. </div>
  23. <div id="pageBody">
  24.  
  25. </div>
  26. <div id="footer">
  27. footer
  28. </div>
  29. </div>
  30. </body>
  31. </html>



但是,使用float实现布局会有一些缺点,由于各个div是相互独立的,所以在一个div中加入一些内容后会使得无法对齐,CSS3提供了多栏布局和盒子布局来弥补这种缺点。

多栏布局

layout.css
  1. /* CSS Document */
  2.  
  3. /*基本信息*/
  4. body{
  5. margin:0px; /*外边距*/
  6. text-align:center; /*文字居中对齐*/
  7. background:#E1D0BB; /*背景色*/
  8. }
  9. /*页面层容器*/
  10. #container{
  11. width:80%;
  12. height:100%;
  13. margin-left:10%;
  14. margin-right:10%;
  15. background:#ABE0F1;
  16. }
  17. /*头部*/
  18. #header{
  19. width:100%;
  20. height:15%;
  21. margin:0px;
  22. background:#FF0000;
  23. }
  24.  
  25. #logo{
  26. float:left; /*浮动属性,居左对齐,使其可以在同一行显示*/
  27. width:60%;
  28. height:80%;
  29. margin:0px;
  30. background:#E18CDD;
  31. clear:left; /*取消左侧浮动*/
  32. }
  33. #banner{
  34. float:right; /*浮动属性,居右对齐,使其可以在同一行显示*/
  35. width:38%;
  36. height:80%;
  37. margin:0px;
  38. background:#8376D8;
  39. clear:right; /*取消右侧浮动*/
  40. }
  41. #menu{
  42. width:100%;
  43. height:5%;
  44. margin:0px;
  45. background:#00FF00;
  46. }
  47. #pageBody{
  48. width:100%;
  49. height:70%;
  50. margin:0px;
  51. background:#00FFFF;
  52. -moz-column-count:4; /*多栏布局:火狐浏览器中需要的格式,表示列数*/
  53. -moz-column-gap:10px; /*列之间的间隔*/
  54. -moz-column-rule:1px solid red; /*在列之间加一条红色的线*/
  55.  
  56. -webkit-column-count:4; /*多栏布局:safari和chrome需要的格式*/
  57. -webkit-column-gap:10px; /*列之间的间隔*/
  58. -webkit-column-rule:1px solid red; /*在列之间加一条红色的线*/
  59. }
  60. #footer{
  61. width:100%;
  62. height:10%;
  63. margin:0px;
  64. background:#FFFF00;
  65. }

layout.html

  1. <!DOCTYPE>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>布局</title>
  6. <link href="style/layout.css" rel="stylesheet" type="text/css" />
  7. </head>
  8.  
  9. <body>
  10. <div id="container">
  11. <div id="header">
  12. <div id="logo">
  13. logo
  14. </div>
  15. <div id="banner">
  16. banner
  17. </div>
  18. container
  19. </div>
  20. <div id="menu">
  21. menu
  22. </div>
  23. <div id="pageBody">
  24. 内容省略
  25. </div>
  26. <div id="footer">
  27. footer
  28. </div>
  29. </div>
  30. </body>
  31. </html>

效果图:



盒子布局

hezi.css
  1. /* CSS Document */
  2.  
  3. /*基本信息*/
  4. body{
  5. margin:0px; /*外边距*/
  6. text-align:center; /*文字居中对齐*/
  7. background:#E1D0BB; /*背景色*/
  8. }
  9. /*页面层容器*/
  10. #container{
  11. display:-moz-box;
  12. display:-webkit-box;
  13. }
  14. #left_side{
  15. width:200px;
  16. height:200px;
  17. margin:20px;
  18. padding:50px;
  19. background-color:#FF0000
  20.  
  21. }
  22. #center_side{
  23. width:200px;
  24. height:200px;
  25. margin:20px;
  26. padding:50px;
  27. background-color:#00FF00
  28. }
  29. #right_side{
  30. width:200px;
  31. height:200px;
  32. margin:20px;
  33. padding:50px;
  34. background-color:#FFFF00;
  35. }
  36. #left_side,#center_side,#right_side{ /*实现盒子布局*/
  37. -moz-box-sizing:border-box;
  38. -webkit-box-sizing:border-box;
  39. }
  40. #down_left{
  41. -moz-box-flex:1; /*可根据内容自动调整大小,实现弹性盒子,此为火狐下的格式*/
  42. -webkit-box-flex:1;
  43. padding:20px;
  44. margin:20px;
  45. background-color:blue;
  46. }
  47. #down_left{
  48. -moz-box-sizing:border-box;
  49. -webkit-box-sizing:border-box;
  50. }

hexi.html

  1. <!DOCTYPE>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>布局</title>
  6. <link href="style/hezi.css" rel="stylesheet" type="text/css" />
  7. </head>
  8.  
  9. <body>
  10. <div id="container">
  11. <div id="left_side">
  12. 百度
  13. </div>
  14. <div id="center_side">
  15. 谷歌
  16. </div>
  17. <div id="right_side">
  18. 淘宝
  19. </div>
  20. <div id="down_left">
  21. 亚马逊
  22. </div>
  23. </div>
  24. </body>
  25. </html>

效果图:


如果想要让盒子垂直分部,可以在将container改为:
  1. #container{
  2. display:-moz-box;
  3. display:-webkit-box;
  4. -moz-box-orient:vertical; /*垂直分布*/
  5. -webkit-box-orient:vertical;
  6. }

这里仅给出了大致的布局方式,关于更多的属性,大家可以阅读相关的书籍和资料。







版权声明:本文为博主原创文章,未经博主允许不得转载。

玩转CSS3(一)----CSS3实现页面布局的更多相关文章

  1. HTML5/CSS3 第三章页面布局

    页面布局 1 页面组成 2 布局相关的标签 <div></div> 定义文档中的分区或节 <span></span> 这是一个行内元素,没有任何意义 & ...

  2. .Net程序猿玩转Android开发---(3)登陆页面布局

    这一节我们来看看登陆页面如何布局.对于刚接触到Android开发的童鞋来说.Android的布局感觉比較棘手.须要结合各种属性进行设置,接下来我们由点入面来 了解安卓中页面如何布局,登陆页面非常eas ...

  3. CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

  4. CSS3与页面布局学习总结(七)——前端预处理技术(Less、Sass、CoffeeScript、TypeScript)

    CSS不像其它高级语言一样支持算术运算.变量.流程控制与面向对象特性,所以CSS样式较多时会引起一些问题,如修改复杂,冗余,某些别的语言很简单的功能实现不了等.而javascript则是一种半面向对象 ...

  5. CSS3与页面布局学习总结(四)——页面布局大全

    一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能 ...

  6. CSS3与页面布局学习笔记(四)——页面布局大全(负边距、双飞翼、多栏、弹性、流式、瀑布流、响应式布局)

    一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能 ...

  7. CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

  8. HTML5+CSS3学习笔记(二) 页面布局:HTML5新元素及其特性

    HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显得非常简单. 本次学习HTML5的新标签元素有: <head ...

  9. CSS3与页面布局学习总结(四)——页面布局大全BFC、定位、浮动、7种垂直居中方法

    目录 一.BFC与IFC 1.1.BFC与IFC概要 1.2.如何产生BFC 1.3.BFC的作用与特点 二.定位 2.2.relative 2.3.absolute 2.4.fixed 2.5.z- ...

随机推荐

  1. EBS R12安装升级(FRESH)(四)

    7 升级Oracle数据库到11gR2 7.1 先打补丁7303030_zhs,9062910,8919489,8919489_ZHS ,9868229,10163753,11071569,97380 ...

  2. OpenLayers3的WMS空间查询实现多个图层

    空间查询前面的帖子写过,但是在一次性查询多个图层的时候卡了一下,再次记录下. 1.WMS数据源: var wmsSource = new ol.source.TileWMS({ url:'http:/ ...

  3. 使用XStream是实现XML与Java对象的转换(6)--持久化

    九.持久化 在第八节的示例中,当我们操作一组对象时,我们可以指定Writer.OutputStream来写出序列化后的XML数据,我们还可以指定Reader.InputStream来读取序列化后的XM ...

  4. 用js来实现那些数据结构14(树02-AVL树)

    在使用二叉搜索树的时候会出现 一个问题,就是树的一条分支会有很多层,而其他的分支却只有几层,就像下面这样: 如果数据量够大,那么我们在某条边上进行增删改查的操作时,就会消耗大量的时间.我们花费精力去构 ...

  5. letter combinations of a phone number(回溯)

    Given a digit string, return all possible letter combinations that the number could represent. A map ...

  6. javascript学习(一)构建自己的JS库

    库是一个饱受争议的热门话题.一种观点认为它是一种非常棒的工具,是任何开发者都不可或缺的:另一种观点则认为在不理解库的内部工作原理的情况下对库形成依赖,会助长懒惰的风气从而导致开发者素质下降 库是一个饱 ...

  7. 精彩源于起点——2018年潍坊市首次青少年Python编程公开课

    有一种语言叫计算机语言 I want to talk with Computer 春遇到冬,有了岁月 天遇到地,有了永恒 我们拥有的, 不止是长大, 还有那份长大的悲欢经历. 未来会有很多可能, 但一 ...

  8. 使用Python自动提取内容摘要

    https://www.biaodianfu.com/automatic-text-summarizer.html 利用计算机将大量的文本进行处理,产生简洁.精炼内容的过程就是文本摘要,人们可通过阅读 ...

  9. UE4中创建第一、第三人称角色,并进行角色间的切换

    在游戏中经常会出现第一人称和第三人称的视角切换场景,笔者在这里简单介绍如何进行这步操作. 1.创建角色 在内容浏览器中添加2个Character蓝图,分别命名为FirstPersonalCharact ...

  10. java 用ant打包成jar文件

    一.下载ant包,解压放放到你的项目中 二.在ant文件夹下创建一个build.xml文件,内容如下 <?xml version="1.0" encoding="G ...