玩转CSS3(一)----CSS3实现页面布局

摘要:

    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

/* CSS Document */

/*基本信息*/
body{
margin:0px;  /*外边距*/
text-align:center; /*文字居中对齐*/
background:#E1D0BB;  /*背景色*/
}
/*页面层容器*/
#container{     
width:80%;
height:100%;
margin-left:10%;
margin-right:10%;
background:#ABE0F1;
}
/*头部*/
#header{
width:100%;
height:15%;
margin:0px;
background:#FF0000;
}

#logo{
float:left;    /*浮动属性,居左对齐,使其可以在同一行显示*/
width:60%;
height:80%;
margin:0px;
background:#E18CDD;
clear:left;     /*取消左侧浮动*/
}
#banner{
float:right;   /*浮动属性,居右对齐,使其可以在同一行显示*/
width:38%;
height:80%;
margin:0px;
background:#8376D8;
clear:right;    /*取消右侧浮动*/
}
#menu{
width:100%;
height:5%;
margin:0px;
background:#00FF00;
}
#pageBody{
width:100%;
height:70%;
margin:0px;
background:#00FFFF;

}
#footer{
width:100%;
height:10%;
margin:0px;
background:#FFFF00;
}




layout.html

<!DOCTYPE>
<html>
<head>
<meta charset="utf-8">
<title>布局</title>
<link href="style/layout.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="container">
   <div id="header">
       <div id="logo">
	     logo
	   </div>
	   <div id="banner">
	   banner
	   </div>
	   container
   </div>
   <div id="menu">
   menu
   </div>
   <div id="pageBody">

   </div>
   <div id="footer">
   footer
   </div>
</div>
</body>
</html>



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

多栏布局

layout.css
/* CSS Document */

/*基本信息*/
body{
margin:0px;  /*外边距*/
text-align:center; /*文字居中对齐*/
background:#E1D0BB;  /*背景色*/
}
/*页面层容器*/
#container{     
width:80%;
height:100%;
margin-left:10%;
margin-right:10%;
background:#ABE0F1;
}
/*头部*/
#header{
width:100%;
height:15%;
margin:0px;
background:#FF0000;
}

#logo{
float:left;    /*浮动属性,居左对齐,使其可以在同一行显示*/
width:60%;
height:80%;
margin:0px;
background:#E18CDD;
clear:left;     /*取消左侧浮动*/
}
#banner{
float:right;   /*浮动属性,居右对齐,使其可以在同一行显示*/
width:38%;
height:80%;
margin:0px;
background:#8376D8;
clear:right;    /*取消右侧浮动*/
}
#menu{
width:100%;
height:5%;
margin:0px;
background:#00FF00;
}
#pageBody{
width:100%;
height:70%;
margin:0px;
background:#00FFFF;
-moz-column-count:4;       /*多栏布局:火狐浏览器中需要的格式,表示列数*/
-moz-column-gap:10px;      /*列之间的间隔*/
-moz-column-rule:1px solid red;   /*在列之间加一条红色的线*/

-webkit-column-count:4;    /*多栏布局:safari和chrome需要的格式*/
-webkit-column-gap:10px;   /*列之间的间隔*/
-webkit-column-rule:1px solid red;   /*在列之间加一条红色的线*/
}
#footer{
width:100%;
height:10%;
margin:0px;
background:#FFFF00;
}




layout.html
<!DOCTYPE>
<html>
<head>
<meta charset="utf-8">
<title>布局</title>
<link href="style/layout.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="container">
   <div id="header">
       <div id="logo">
	     logo
	   </div>
	   <div id="banner">
	   banner
	   </div>
	   container
   </div>
   <div id="menu">
   menu
   </div>
   <div id="pageBody">
    内容省略
   </div>
   <div id="footer">
   footer
   </div>
</div>
</body>
</html>

效果图:


盒子布局

hezi.css
/* CSS Document */

/*基本信息*/
body{
margin:0px;  /*外边距*/
text-align:center; /*文字居中对齐*/
background:#E1D0BB;  /*背景色*/
}
/*页面层容器*/
#container{     
display:-moz-box;
display:-webkit-box;
}
#left_side{
width:200px;
height:200px;
margin:20px;
padding:50px;
background-color:#FF0000

}
#center_side{
width:200px;
height:200px;
margin:20px;
padding:50px;
background-color:#00FF00
}
#right_side{
width:200px;
height:200px;
margin:20px;
padding:50px;
background-color:#FFFF00;
}
#left_side,#center_side,#right_side{      /*实现盒子布局*/
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
}
#down_left{
-moz-box-flex:1;        /*可根据内容自动调整大小,实现弹性盒子,此为火狐下的格式*/
-webkit-box-flex:1;
padding:20px;
margin:20px;
background-color:blue;
}
#down_left{
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
}

hexi.html
<!DOCTYPE>
<html>
<head>
<meta charset="utf-8">
<title>布局</title>
<link href="style/hezi.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="container">
  <div id="left_side">
  百度
  </div>
  <div id="center_side">
  谷歌
  </div>
  <div id="right_side">
  淘宝
  </div>
    <div id="down_left">
  亚马逊
  </div>
</div>
</body>
</html>

效果图:

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

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




玩转CSS3(一)----CSS3实现页面布局,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。