三栏布局,顾名思义就是两边固定,中间自适应。三栏布局在开发十分常见,那么什么是三栏布局?例如当当网首页边商品导航和右边导航固定宽度,中间的主要内容随浏览器宽度自适应。效果如下图所示:

  

  下面围绕的这样的目的,即左右模块固定宽度,中间模块随浏览器变化自适应,想要完成的最终结果如下图:

  红色和蓝色宽度固定,绿色宽度自适应,下面七种方法实现的最终效果跟这个差不多,可能会稍有不同。

  方法一:流体布局(左右模块各自向左右浮动,并设置中间模块的 margin 值使中间模块宽度自适应。缺点就是主要内容无法最先加载,当页面内容较多时会影响用户体验。)

<!DOCTYPE html>

               <html lang="en">

<head>

<style>

.left {

float: left;

height: 200px;

width: 100px;

}

.right {

width: 200px;

height: 200px;

background-color: blue;

float: right;

}

.main {

margin-left: 120px;

margin-right: 220px;

height: 200px;

background-color: green;

}

</style>

</head>

<body>

<div class="container">

<div class="left">left</div>

<div class="right">right</div>

<div class="main">mian</div>

</div>

</body>

</html>

  方法二:BFC三栏布局(缺点跟方法一类似,主要内容模块无法最先加载,当页面中内容较多时会影响用户体验。)

<!DOCTYPE html>
<html lang="en">
<head>
<style>
.left {
float: left;
height: 200px;
width: 100px;
margin-right: 20px;
background-color: red;
}
.right {
width: 200px;
height: 200px;
float: right;
margin-left: 20px;
background-color: blue;
}
.main {
height: 200px;
overflow: hidden;
background-color: green;
}
</style>
</head>
<body>
<div class="container">
<div class="left"></div>
<div class="right"></div>
<div class="main"></div>
</div>
</body>
</html>

  方法三:双飞翼布局(利用的是浮动元素 margin 负值的应用。主体内容可以优先加载,HTML 代码结构稍微复杂点。)

   

<!DOCTYPE html>
<html lang="en">
<head>
<style>
.content {
   float: left;
   width: 100%;
}
.main {
   height: 200px;
   margin-left: 110px;
   margin-right: 220px;
  
}
    .left {
     float: left;
     height: 200px;
     width: 100px;
     margin-left: -100%;
     background-color: red;
    }
    .right {
     width: 200px;
     height: 200px;
     float: right;
     margin-left: -200px;
     background-color: blue;
    }   
</style>
</head>
<body>
<div class="content">
<div class="main"></div>
</div>
<div class="left"></div>
<div class="right"></div>
</body>
</html>
   方法四:圣杯布局(跟双飞翼布局很像,有一些细节上的区别,相对于双飞翼布局来说,HTML 结构相对简单,但是样式定义就稍微复杂,也是优先加载内容主体。)
 
<!DOCTYPE html>
<html lang="en">
<head>
<style>
    .container {
     margin-left: 120px;
     margin-right: 220px;
    }
    .main {
     float: left;
     width: 100%;
     height: 300px;
    
    }
    .left {
     float: left;
     width: 100px;
     height: 300px;
     margin-left: -100%;
     position: relative;
     left: -120px;
     background-color: blue;
    }
    .right {
     float: left;
     width: 200px;
     height: 300px;
     margin-left: -200px;
     position: relative;
     right: -220px;
     background-color: green;
    }
</style>
</head>
<body>
<div class="container">
    <div class="main"></div>
    <div class="left"></div>
    <div class="right"></div>
</div>
</body>
</html>
  方法五:flex布局(简单实用,未来的趋势,需要考虑浏览器的兼容性。)
      

<!DOCTYPE html>
<html lang="en">
<head>
<style>
    .container {
display: flex;
    }
    .main {
flex-grow: 1;
     height: 300px;
    
    }
    .left {
     order: -1;
     flex: 0 1 200px;
     margin-right: 20px;
     height: 300px;
     background-color: blue;
    }
    .right {
     flex: 0 1 100px;
margin-left: 20px;
     height: 300px;
     background-color: green;
    }
</style>
</head>
<body>
<div class="container">
    <div class="main"></div>
    <div class="left"></div>
    <div class="right"></div>
</div>
</body>
</html>
 
 
   方法六:table布局(缺点:无法设置栏间距)
    

<!DOCTYPE html>
<html lang="en">
<head>
<style>
.container {
     display: table;
     width: 100%;
}
.left, .main, .right {
     display: table-cell;
}
.left {
     width: 200px;
     height: 300px;
    
}
.main {
     background-color: blue;
}
.right {
     width: 100px;
     height: 300px;
     background-color: green;
}
</style>
</head>
<body>
<div class="container">
    <div class="left"></div>
    <div class="main"></div>
    <div class="right"></div>
</div>
</body>
</html>

    

  方法七:绝对定位布局(简单实用,并且主要内容可以优先加载。)
    

<!DOCTYPE html>
<html lang="en">
<head>
<style>
    .container {
     position: relative;
    }
    .main {
     height: 400px;
     margin: 0 120px;
    
    }
    .left {
     position: absolute;
     width: 100px;
     height: 300px;
     left: 0;
     top: 0;
     background-color: red;
    }
    .right {
     position: absolute;
     width: 100px;
     height: 300px;
     background-color: blue;
right: 0;
     top: 0;
    }
</style>
</head>
<body>
<div class="container">
<div class="main"></div>
    <div class="left"></div>
    <div class="right"></div>
</div>
</body>
</html>
 
 
 

css中常用的七种三栏布局技巧总结的更多相关文章

  1. 详解 CSS 七种三栏布局技巧

    作者:林东洲 链接:https://zhuanlan.zhihu.com/p/25070186 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 三栏布局,顾名思义就是 ...

  2. css中常用的几种居中方法

    在前端面试中,大都会问你div居中的方法: 文笔不好,就随便寥寥几句话概括了, 不过以后文笔肯定会变得更好一些的. 今天我们就细数一下几种方法: 1,使用position:absolute,设置lef ...

  3. 三种方法实现CSS三栏布局

    本文由云+社区发表 作者:前端林子 本文会分别介绍三种CSS实现三栏布局的方法,可在浏览器中打开查看效果 1.方法一:自身浮动的方法 实现方法:需要左栏向左浮动,右栏向右浮动,中间设左右margin来 ...

  4. css中,在高度已知,写出三栏布局,其中左栏、右栏宽度各位300px,中间自适应

    解决方案主要有五种 首先写入全局样式 <style type="text/css"> html * { margin: ; padding: ; } .layout { ...

  5. CSS实现三栏布局(5种)

    常见的布局方式: float布局.Position定位.table布局.弹性(flex)布局.网格(grid)布局 那么我们就是用以上5种方式完成三栏布局,不过前提是左右宽度(假如左右宽度为300px ...

  6. Css三栏布局自适应实现几种方法

    Css三栏布局自适应实现几种方法 自适应实现方法我们可以从三个方法来做,一个是绝对定位 ,自身浮动法 和margin负值法了,下面我们一起来看看这三个例子吧,希望例子能帮助到各位同学. 绝对定位法三栏 ...

  7. CSS三栏布局的四种方法

    总括: 不管是三栏布局还是两栏布局都是我们在平时项目里经常使用的,也许你不知道什么事三栏布局什么是两栏布局但实际已经在用,或许你知道三栏布局的一种或两种方法,但实际操作中也只会依赖那某一种方法,本文具 ...

  8. CSS系列,三栏布局的四种方法

    三栏布局.两栏布局都是我们在平时项目里经常使用的,今天我们来玩一下三栏布局的四种写法,以及它的使用场景. 所谓三栏布局就是指页面分为左中右三部分然后对中间一部分做自适应的一种布局方式. 1.绝对定位法 ...

  9. css 实现三栏布局的四种方式

    三栏布局就是左中右,左右两边固定,中间自适应. 1. 绝对定位 <div class="left">左边</div> <div class=" ...

随机推荐

  1. 01 DOS常用命令

    有时候没有可视化窗口,命令行对文件进行操作更方便快捷 cmd 命令弹出 dir 查看当前所在目录下的文件 ctrl+c 退出 \a 显示隐藏文件 cd /改变到根目录 dir /a 显示隐藏文件 di ...

  2. 单点登录之 CAS SSO 从入门到精通(第一天)

    转自:http://blog.csdn.net/lifetragedy/article/details/43817903 啊......it's quite a long time. 好久没更新博客了 ...

  3. 51nod1289 大鱼吃小鱼

    有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右.游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼.从左到右给出每条鱼的大小和游动的方向(0表示向左,1表示向右).问足够长的时间之后 ...

  4. salt 根据ip修改主机名

    首先定义pillar [root@web1 pillar]# cat hostname.sls ip_hostname: 10.1.1.1: web1 10.1.1.2: web2 10.1.1.3: ...

  5. Windows Server 2008 R2x64 IIS7+PHP5.6 错误 500.0

    这两天准备升级一个网站项目,新项目基于PHP并进行了ZendGuard加密,需要在PHP5.6版本中运行 而客户之前的运行环境是php5.2~5.4,那好,再新建一个PHP版本不就完事了吗!!! 于是 ...

  6. 3..jquery的ajax获取form表单数据

    jq是对dom进行的再次封装.是一个js库,极大简化了js使用 jquery库在js文件中,包含了所有jquery函数,引用:<script src="jquery-1.11.1.mi ...

  7. python 图片滑动窗口

    METHOD #1: No smooth, just scaling. def pyramid(image, scale=1.5, minSize=(30, 30)): # yield the ori ...

  8. 1012关于SYSBENCH的用法

    sysbench安装.使用.结果解读 sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.目前sysbench代码托管在launchpad上 ...

  9. Mongodb--切片

    1.在3台服务器上分别运行 2717 , 27018,27109,互为副本集,形成3套replSet 2.在3台服务器上各配置config.server,运行在27020端口上,和配置mongod的命 ...

  10. 洛谷 P1768 天路

    P1768 天路 题目描述 “那是一条神奇的天路诶~,把第一个神犇送上天堂~”,XDM先生唱着这首“亲切”的歌曲,一道猥琐题目的灵感在脑中出现了. 和C_SUNSHINE大神商量后,这道猥琐的题目终于 ...