布局
自适应
两列
三列

在传统方法的基础上加入了Flex布局并阐述各方法的优缺点,希望对大家有所帮助。先上目录:

两列布局:左侧定宽,右侧自适应

方法一:利用float和负外边距

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
.main,.sitebar{
font: bolder 20px/300px;
}
.main{
width: 100%;
float: left;
}
.main .content{
margin-left: 200px;
background-color: red;
}
.sitebar{
width: 200px;
float: left;
background-color: green;
margin-left: -100%;
}
</style>
</head>
<body>
<div class="main">
<div class="content">右侧主体自适应区块</div>
</div>
<div class="sitebar">左侧定宽200px区块</div>
</body>
</html>
  • 优点:考虑了页面优化,右侧主内容区先加载,左侧后加载。

  • 缺点:多添加了一层div包裹。

方法二:利用外边距

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
.sitebar{
float: left;
width: 200px;
background-color: green;
}
.content{
background-color: red;
margin-left: 200px;
}
</style>
</head>
<body>
<div class="sitebar">左侧定宽200px区块</div>
<div class="content">右侧主体自适应区块</div>
</body>
</html>
  • 优点:代码简洁,便于理解

  • 缺点:不利于页面优化,右侧主内容区后加载

方法三:利用position

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
.sitebar{
width: 200px;
background-color: green;
}
.content{
position: absolute;
left: 200px;
right: 0;
top: 0;
background-color: red;
}
</style>
</head>
<body>
<div class="content">右侧主体自适应区块</div>
<div class="sitebar">左侧定宽200px区块</div>
</body>
</html>
  • 优点:考虑到了页面优化,右侧内容区先加载

  • 缺点:目测没有

上述三种方法兼容IE7以上,但在IE7下不设置高度时,会产生高度错位bug。可通过设置父元素font-size=0,再分别设置子元素font-size解决。

方法四:利用flex布局

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
.main{
display: flex;
}
.content{
flex:1;
background-color: red;
}
.sitebar{
flex:0 0 200px;
order:-1;
background-color: green;
}
</span><span class="hljs-tag" style="color: #cc6666;">&lt;/<span class="hljs-title" style="color: #8abeb7;">style</span>&gt;</span>

</head>

<body>

<div class="main">

<div class="content">右侧主体自适应区块</div>

<div class="sitebar">左侧定宽200px区块</div>

</div>

</body>

</html>

  • 优点:CSS3新布局方式,高大上

  • 缺点:仅支持IE11+。

三列布局:左右定款,中间自适应。

方法一:使用负外边距

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
.main,.left,.right{
height: 300px;
font: 20px/300px;
color: #fff;
text-align: center;
}
.main{
width: 100%;
float: left;
}
.main .content{
margin: 0 300px 0 200px;
background-color: black;
}
.left{
width: 200px;
float: left;
margin-left: -100%;
background-color: red;
}
.right{
width: 300px;
float: left;
margin-left: -300px;
background-color: blue;
}
</style>
</head>
<body>
<div class="main">
<div class="content">中间主体区域宽度自适应</div>
</div>
<div class="left">左侧定宽200px</div>
<div class="right">右侧定宽300px</div>
</body>
</html>
  • 优点:兼容IE7+,考虑到页面优化,中间内容区先加载

  • 缺点:多一层div嵌套,不易理解

方法二:使用绝对定位

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin:0px;
}
#left {
background-color: #E8F5FE;
border: 1px solid #A9C9E2;
height: 400px;
width: 100px;
position: absolute;
top: 0px;
left: 0px;
}
#center {
background-color: #F2FDDB;
border: 1px solid #A5CF3D;
height: 400px;
margin-right: 102px;
margin-left: 102px;
}
#right {
background-color: #FFE7F4;
border: 1px solid #F9B3D5;
height: 400px;
width: 100px;
position: absolute;
top: 0px;
right: 0px;
}
</style>
</head> <body>

<div id="center">中列</div>

<div id="left">左列</div>

<div id="right">右列</div>

</body>

</html>

  • 优点:代码结构简单,考虑到了页面优化,中间内容去先加载

  • 缺点:目测没有

方法三:使用flex布局

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.HolyGrail-body {
display: flex;
flex: 1;
}
.HolyGrail-content {
flex: 1;
background-color: green;
} .HolyGrail-nav, .HolyGrail-ads {

/* 两个边栏的宽度设为12em */

flex: 0 0 200px;

background-color: blue;

} .HolyGrail-nav {

/* 导航放到最左边 */

order: -1;

background-color: grey;

}

</style>

</head>

<body>

<div class="HolyGrail-body">

<main class="HolyGrail-content">...</main>

<nav class="HolyGrail-nav">...</nav>

<aside class="HolyGrail-ads">...</aside>

</div>

</body>

</html>

  • 优点:高大上

  • 缺点:仅支持IE11+

最新文章

  1. sql 删除表中的重复记录
  2. 个人Win10 +archlinux安装笔记
  3. Unity3d与Android交互
  4. 利用servlet3.0上传,纯原生上传,不依赖任何第三方包
  5. 【rails3教材】博客构建过程2
  6. css公共样式,初始化
  7. [iOS]深入浅出 iOS 之多线程 NSThread
  8. DNS服务器全面解析--转
  9. /调整button的title的位置
  10. lhgDialog
  11. Posix消息队列实现机制
  12. 【HTML】谈谈html的meta标签
  13. 从源码浅析Java中的Lock和AbstractQueuedSynchronizer
  14. 别跟我谈EF抵抗并发,敢问你到底会不会用EntityFramework
  15. 用react重构个人网站 3-22
  16. 猴子 JDFZ模拟赛
  17. Motorola和Intel格式报文解析的区别
  18. 初识SEO
  19. 用python turtle画玫瑰
  20. 如何更改vs2013中git的远程仓库url地址

热门文章

  1. [算法练习] UVA 10420 - List of Conquests?
  2. ps扩大、缩小选区
  3. &lt;转&gt;HTML+CSS总结/深入理解CSS盒子模型
  4. Ajax具体使用
  5. Servlet &amp; JSP - 中文字符问题
  6. Linux 命令 - w: 显示登录的用户及其当前执行的任务
  7. spring分布式事务学习笔记
  8. HDOJ2009求数列的和
  9. 第四十五篇、UITableViewCell高度计算
  10. Swift泛型和泛型函数