日期:2014-05-17  浏览次数:20604 次

[转]常见左右两列div+css布局技巧整理
转载一初学css布局的朋友的一篇总结文章,
原文地址:http://www.oncecode.com/Html/css/549.htm

在百度搜索‘左右布局’,发现好多朋友在问这个问题,特将上周学到的左右布局技巧整理分享给大家:)

常见的左右两列div+css布局分为以下两种:

一、左右定宽布局
  在css分别指定了左右两列的宽度的情况下,只需要将左边的div 向左浮动{float:left;},右边的div 向右浮动{float:right;},并清除浮动,即可实现。

  常用的清除浮动有两种方式:
  a、通过在浮动元素的父级元素上添加清除浮动的class类:clearfix(见下面的css代码部分);
  b、通过在浮动元素后面添加一个空元素,然后在这个空元素上定义clear:both来清除浮动;

二、不定宽布局

  不定宽布局分为一边不定宽和两边不定宽两种形式,在实际运用中第二种情况是不会采用的,我们具体来分析一下一边不定宽的左右布局方法,有以下两种情况:

  1、左边定宽,右边不定宽,左在上,右在下;(此处的上和下是指在html代码中从上到下编写顺序中的位置,下文皆同)
  遇到这种情况时,要将两个div进行左右布局,与左右定宽布局的方法基本相同,只需要将左边的div向左浮动{float:left;},并清除浮动,右边的div就会跟在已浮动的“div左”后面,即已经实现左右两列布局了。

  2、左边定宽,右边不定宽,左在下,右在上
  将右边div写在上方,通常是希望在加载网站内容时先显示右边的内容,这种情况在“左边为菜单,右边是内容”的左右布局中经常用到。

  总结几点如下:
  1)将右边的div向右浮动,并设一个负的margin-left;
  2)在右边div里面增加一个div,用于放右边的内容,计算出左边需要留出的宽度,并将此数据设置为该div的margin-left,如{margin-left:280px;};
  3)浮动后一定要在父级元素或后一个元素上清除浮动;

三、示例代码
  下面我们通过一个简单的子例来了解一边定宽、左下右上的结构是如何实现左右两列布局的:

html代码
 
<!doctype html public "-//w3c//dtd html 4.01//en" "http://www.w3.org/tr/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>左右布局-左边定宽,右边不定宽;右在上,左在下</title>
<link rel="stylesheet" type="text/css" href="layout3.css" />
</head>
<body>
  <div id="hd"><p>上</p></div>
  <div id="bd" class="clearfix">
  <div class="right">
  <div class="content">
  <p>右我在右边</p>
  <p>右我在右边</p>
  <p>右我在右边</p>
  <p>右我在右边</p>
  </div>
  </div>
  <div class="left">
  <p>我在左边</p>
  </div>
  </div>
  <div id="ft"><p>下</p></div>
</body>
</html>
 
css代码
 
/* reset */
*,body{margin:0;padding:0;}
/* commons */
body{font-size:13px;}
.clearfix{zoom:1;}
.clearfix:after{content:´.´;display:block;visibility:none;height:0;clear:both;}
#bd{background-color:#DDD;min-height:50px;_height:50px;}
#bd .right{background-color:red;float:right;width:100%;margin-left:-25em;}
#bd .right .content{margin-left:270px;background-color:blue;color:#FFF;}
#bd .left{background-color:green;color:#FFF;width:260px;float:left;}


------解决方案--------------------
mark,收藏之。
------解决方案--------------------
up
------解决方案--------------------
编程爱好者请加群88718955,大家一起探讨,学习