1.CSS常见布局两种方式
相对的:
<style type="text/css">
#wrap{ 770px;/*相对定位*/ height:auto;}
#column1{ float:left; 300px;}
#column2{ float:right; 470px;}
.clear{ clear:both;}
</style>
<body>
<div id="warp">
<div id="column1">这里是第一列</div>
<div id="column2">这里是第二列</div>
<div class="clear"></div>
</div>
</body>
绝对的:
<title>绝对定位</title>
<style type="text/css">
#wrap{ position:relative;/*绝对定位*/770px;}
#column1{ position:absolute; left:0; 300px;}
#column2{ position:absolute; right:0; 470px;}
.clear{ clear:both;}
</style>
</head>
<div id="warp">
<div id="column1">这里是第一列</div>
<div id="column2">这里是第二列</div>
<div class="clear"></div>
</div>
2.CSS常用布局实例
一列
单行一列
body { margin: 0px; padding: 0px; text-align: center; }
#content { margin-left:auto; margin-right:auto; 400px;}
两行一列
body { margin: 0px; padding: 0px; text-align: center;}
#content-top { margin-left:auto; margin-right:auto; 400px; }
#content-end {margin-left:auto; margin-right:auto; 400px; }
三行一列
body { margin: 0px; padding: 0px; text-align: center; }
#content-top { margin-left:auto; margin-right:auto; 400px;}
#content-mid { margin-left:auto; margin-right:auto; 400px;}
#content-end { margin-left:auto; margin-right:auto; 400px; }
两列
单行两列
#bodycenter { 700px;margin-right: auto; margin-left: auto;overflow: auto; }
#bodycenter #dv1 {float: left; 280px;}
#bodycenter #dv2 {float: right; 410px;}
两行两列
#header{ 700px; margin-right: auto;margin-left: auto; overflow: auto;}
#bodycenter { 700px; margin-right: auto; margin-left: auto; overflow: auto; }
#bodycenter #dv1 { float: left; 280px;}
#bodycenter #dv2 { float: right; 410px;}
三行两列
#header{ 700px;margin-right: auto; margin-left: auto; }
#bodycenter { 700px; margin-right: auto; margin-left: auto; }
#bodycenter #dv1 { float: left; 280px;}
#bodycenter #dv2 { float: right; 410px;}
#footer{ 700px; margin-right: auto; margin-left: auto; overflow: auto; }
三列
单行三列
绝对定位
#left { position: absolute; top: 0px; left: 0px; 120px; }
#middle {margin: 20px 190px 20px 190px; }
#right {position: absolute;top: 0px; right: 0px; 120px;}
float定位
xhtml:
<div id="warp">
<div id="column">
<div id="column1">这里是第一列</div>
<div id="column2">这里是第二列</div>
<div class="clear"></div>
</div>
<div id="column3">这里是第三列</div>
<div class="clear"></div>
</div>
CSS:
#wrap{ 100%; height:auto;}
#column{ float:left; 60%;}
#column1{ float:left; 30%;}
#column2{ float:right; 30%;}
#column3{ float:right; 40%;}
.clear{ clear:both;}
3.CSS布局高级技巧
> CSS Hack
> 字体大小: 小 中 大
> div#test {height:20px; /*For Firefox*/}
> div#test {*height:25px; /*For IE7 & IE6*/}
> div#test {_height:20px; /*For IE6*/}
margin和padding总是有可能要用到,而产生的问题如何解决呢?由于浏览器解释容器宽度的方法不同:
IE 6.0 Firefox Opera等是
真实宽度=width+padding+border+margin
IE5.X
真实宽度=width-padding-border-margin
很明显,第一种下很完美的布局在第二种情况下后果是很凄惨的!
解决的方法是hack
div.content {
400px; //这个是错误的width,所有浏览器都读到了
voice-family: "\"}\""; //IE5.X/win忽略了"\"}\""后的内容
voice-family:inherit;
300px; //包括IE6/win在内的部分浏览器读到这句,新的数值(300px)覆盖掉了旧的
}
html>body .content { //html>body是CSS2的写法
300px; //支持CSS2该写法的浏览器(非IE5)有幸读到了这一句
}
div.content {
300px !important; //这个是正确的width,大部分支持!important标记的浏览器使用这里的数值
width(空格)/**/:400px; //IE6/win不解析这句,所以IE6/win仍然认为width的值是300px;而IE5.X/win读到这句,新的数值(400px)覆盖掉了旧的,因为!important标记对他们不起作用
}
html>body .content { //html>body是CSS2的写法
300px; //支持CSS2该写法的浏览器有幸读到了这一句
}
列等高技巧
n行n列布局,每列高度(事先并不能确定哪列的高度)的相同,是每个设计师追求的目标,做法有:背景图填充、加JS脚本的
方法和容器溢出部分隐藏和列的负底边界和正的内补丁相结合的方法。
背景图填充法:
xhtml:
<div id="wrap">
<div id="column1">这是第一列</div>
<div id="column1">这是第二列</div>
<div class="clear"></div>
</div>
css:
#wrap{ 776px; background:url(bg.gif) repeat-y 300px;}
#column1{ float:left; 300px;}
#column2{ float:right; 476px;}
.clear{ clear:both;}
就是将一个npx宽的一张图片在外部容器纵向重复,定位到两列交错的位置纵向重复,在视觉上产生了两列高度一样的错觉
控制布局的:
height:100px;
weight:100px;
margin: 0px 15px 0px 10px;
padding: 8px;
float: left;
控制图片的:
background: url(line.gif) repeat-x; repeat-x; no-repeat;
background-position: center top;
控制文本的:
line-height:200%;
text-align: left;
text-indent:2em;
Font-size:12px;
color: #000;
font-weight: bold;
控制线条
border-bottom: #d3d3d3 1px solid;