一、两栏布局(左定宽,右自动)
1. float + margin
即固定宽度元素设置float属性为left,自适应元素设置margin属性,margin-left应>=定宽元素宽度。
举例:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>两栏布局-左定宽,右自动</title>
<style type="text/css">
html,body,div{
margin: 0;
padding: 0;
}
.wrap{
margin: 10px;
}
.wrap_left{
float: left;
width: 200px;
background-color: red;
}
.wrap_right{
margin-left: 220px;
background-color: green;
}
</style>
</head>
<body>
  <div class="wrap">
    <div class="wrap_left">
      我是左栏
    </div>
    <div class="wrap_right">
      我是右栏
    </div>
  </div>
</body>
</html>

2.position + margin
即在父标签设置position属性为relative;子标签中定宽元素设置position属性为absolute;自适应元素设置margin属性,margin-left>=定宽元素宽度。
举例:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>两栏布局-左定宽,右自动</title>
<style type="text/css">
html,body,div{
margin: 0;
padding: 0;
}
.wrap{
margin: 10px;
position: relative;
}
.wrap_left{
position: absolute;
width: 200px;
background-color: red;
}
.wrap_right{
margin-left: 220px;
background-color: green;
}
</style>
</head>
<body>
<div class="wrap">
  <div class="wrap_left">
    我是左栏
  </div>
  <div class="wrap_right">
    我是右栏
  </div>
</div>
</body>
</html>

3.float + 负margin
即给自适应宽度元素定义一个父标签,并设置float属性为left;width为100%;自适应宽度元素设置margin,margin-left应>=定宽元素宽度;
固定宽度元素设置margin-left属性为负值:-100%;
除此之外应注意HTML结构中应先写自适应元素,再写固定宽度元素。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>两栏布局-左定宽,右自动</title>
<style type="text/css">
html,body,div{
margin: 0;
padding: 0;
}
.wrap{
float: left;
width: 100%;
}
.wrap .wrap_right{
margin-left: 220px;
background-color: green;
}
.wrap_left{
float: left;
width: 200px;
margin-left: -100%;
background-color: red;
}

</style>
</head>
<body>
<div class="wrap">
  <div class="wrap_right">
  我是右栏
  </div>
</div>
<div class="wrap_left">
  我是左栏
</div>
</body>
</html>

注:使用的float属性,必要时清除一下浮动。

4.用table布局实现<!DOCTYPE html><html>

<head>
<meta charset="UTF-8">
<title>两栏布局-左定宽,右自动</title>
<style type="text/css">
html,body,table{
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<table width="100%" cellspacing="0" cellpadding="0" border="1" height="300">
  <tr>
    <td width="200" bgcolor="red"></td>
    <td bgcolor="green"></td>
  </tr>
</table>
</body>
</html>

注:使用表格时,一定要设置高度才可以

5.触发BFC实现

关于BFC是什么、怎么触发BFC以及BFC可以用来做什么,大家可以看看这篇,
实现方法,即为定宽元素设置float:left;自适应宽度元素设置可以触发BFC的属性。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>两栏布局-左定宽,右自动</title>
<style type="text/css">
html,body,div{
margin: 0;
padding: 0;
}

.wrap_left{
float: left;
width: 200px;
background-color: red;
}
.wrap_right{
overflow: hidden;
background-color: green;
}
</style>
</head>
<body>
  <div class="wrap_left">
    我是左栏
  </div>
  <div class="wrap_right">
    我是右栏
  </div>
</body>
</html>

6.flex伸缩盒方法

即父标签设置display:flex属性,自适应元素设置flex-grow:1;

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>两栏栏布局-左定宽,右自动</title>
<style type="text/css">
html,body,div{
margin: 0;
padding: 0;
}
.wrap{
display: flex;
display: -webkit-flex;
}
.wrap_left{
width: 200px;
background-color: red;
}
.wrap_right{
flex-grow:1;
-webkit-flex-grow:1;
background-color: green;
}
</style>
</head>
<body>
<div class="wrap">
  <div class="wrap_left">
    我是左栏
  </div>
  <div class="wrap_right">
    我是右栏
  </div>
</div>
</body>
</html>

二、三栏布局
掌握了上面的方法,我们会发现制作一个三栏布局也是非常容易的。
下面我们在上面栗子的基础上,看看实现一个两侧定宽,中间自适应的三栏布局如何实现

1. float + margin(两侧定宽,中间自适应)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>三栏布局-两侧定宽,中间自适应</title>
<style type="text/css">
html,body,div{
margin: 0;
padding: 0;
}
.wrap_left{
width: 200px;
float: left;
background-color: red;
}

.wrap_content{
margin-left: 220px;
margin-right: 220px;
background-color: yellow;
}
.wrap_right{
width: 200px;
float: right;
background-color: green;
}

</style>
</head>
<body>
  <div class="wrap_left">
    我是左栏
  </div>
  <div class="wrap_right">
    我是右栏
  </div>
  <div class="wrap_content">
    我是中间栏
  </div>
</body>
</html>

2. position + margin(两侧定宽,中间自适应)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>三栏布局-两侧定宽,中间自适应</title>
<style type="text/css">
html,body,div{
margin: 0;
padding: 0;
}
.wrap_left{
width: 200px;
position: absolute;
background-color: red;
left: 0;
}

.wrap_content{
margin-left: 220px;
margin-right: 220px;
background-color: yellow;
}
.wrap_right{
width: 200px;
position: absolute;
right: 0;
background-color: green;
}

</style>
</head>
<body>
  <div class="wrap_left">
    我是左栏
  </div>
  <div class="wrap_right">
    我是右栏
  </div>
  <div class="wrap_content">
    我是中间栏
  </div>
</body>
</html>

3.float + 负margin(两侧定宽,中间自适应)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>三栏布局-两侧定宽,中间自适应</title>
<style type="text/css">
html,body,div{
margin: 0;
padding: 0;
}
.wrap{
float: left;;
width: 100%;
}
.wrap_left{
width: 200px;
float: left;
margin-left: -100%;
background-color: red;

}

.wrap_content{
margin-left: 220px;
margin-right: 220px;
background-color: yellow;
}
.wrap_right{
width: 200px;
float: left;
margin-left: -200px;
background-color: green;
}

</style>
</head>
<body>
<div class="wrap">
  <div class="wrap_content">
    我是中间栏
  </div>
</div>
<div class="wrap_left">
  我是左栏
</div>
<div class="wrap_right">
  我是右栏
</div>
</body>
</html>

4.table实现

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>三栏布局-两侧定宽,中间自动</title>
<style type="text/css">
html,body,table{
margin: 0;
padding: 0;
}

</style>
</head>
<body>
<table width="100%" cellspacing="0" cellpadding="0" border="1" height="300">
  <tr>
    <td width="200" bgcolor="red"></td>
    <td bgcolor="yellow"></td>
    <td width="200" bgcolor="green"></td>
  </tr>
</table>
</body>
</html>

5.BFC方法

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>三栏布局-两侧定宽,中间自动</title>
<style type="text/css">
html,body,div{
margin: 0;
padding: 0;
}

.wrap_left{
float: left;
width: 200px;
background-color: red;
}
.wrap_right{
float: right;
width: 200px;
background-color: green;
}
.wrap_content{
overflow: hidden;
background-color: yellow;
}
</style>
</head>
<body>
<div class="wrap_left">
  我是左栏
</div>
<div class="wrap_right">
  我是右栏
</div>
<div class="wrap_content">
  我是中间栏
</div>
</body>
</html>

注:HTML中先写定宽元素,再写自适应宽度元素。

6.flex伸缩盒
即父标签设置display:flex属性,自适应元素设置flex-grow:1;

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>三栏布局-两侧定宽,中间自动</title>
<style type="text/css">
html,body,div{
margin: 0;
padding: 0;
}
.wrap{
display: flex;
display: -webkit-flex;
}
.wrap_left{
width: 200px;
background-color: red;
}
.wrap_right{
width: 200px;
background-color: green;
}
.wrap_content{
flex-grow:1;
-webkit-flex-grow:1;
background-color: yellow;
}
</style>
</head>
<body>
<div class="wrap">
  <div class="wrap_left">
    我是左栏
  </div>
  <div class="wrap_content">
    我是中间栏
  </div>
  <div class="wrap_right">
    我是右栏
  </div>
</div>
</body>
</html>

最新文章

  1. 排列组合算法的javascript实现
  2. java任务调度quartz框架的小例子
  3. webpack 的简单使用
  4. SQL Server 2012 数据库笔记
  5. 031医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------sql补充知识
  6. 利用反射及JDBC元数据编写通用查询方法
  7. Android之ViewDragHelper
  8. VB 活动添加item元素
  9. 美国企业人事喜欢考的3道.Net经典笔试题
  10. 【MSP是什么】MSP认证之项目群管理
  11. JS 之完美运动框架
  12. 使用Yeoman generator来规范工程的初始化
  13. 利用docker搭建spark hadoop workbench
  14. 关于ipv6被拒的问题
  15. node.js http接口调试时请求串行特性分析
  16. gitlab api 使用
  17. jquery:input操作
  18. CAN control
  19. 简单的知识图谱,neo4j+python
  20. MySql连接空闲8小时自动断开引起的问题

热门文章

  1. 采用tcp协议和UDP协议实现简单的聊天功能
  2. js中时间戳与日期时间之间的相互转换
  3. bzoj 1189: [HNOI2007]紧急疏散evacuate 分层图最大流_拆点_二分
  4. 算法46----移除K位数字
  5. javascript事件列表解说
  6. BZOJ 4951 [WF2017]Money for Nothing (决策单调优化DP+分治)
  7. php 安装mysql扩展注意事项
  8. 正则表达式和豆瓣Top250的爬取练习
  9. el表达式中的比较和包含
  10. 数据库连接池和connection的理解