三栏布局的几种方式

1.流体布局

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
    /*左右浮动,中间margin或者overflow*/
    /*缺点就是主要内容无法最先加载,当页面内容较多时会影响用户体验。*/
    .left {
        float: left;
        height: 200px;
        width: 100px;
        background-color: red;
    }
    .right {
        width: 200px;
        height: 200px;
        background-color: blue;
        float: right;
    }
    .main {
        margin-left: 100px;
        margin-right: 200px;
        /*或者overflow: hidden;或者auto*/
        height: 200px;
        background-color: green;
    }
    </style>
</head>
<body>
    <div class="container">
        <div class="left"></div>
        <div class="right"></div>
        <div class="main"></div>
    </div>
</body>
</html>

2.圣杯布局

<!DOCTYPE html>
<html lang="en">

<head>
    <style>
        /*要点:父元素设置margin左右,main宽度100%,然后left和right都设置margin-left左移到同一排*/
        .container {
            margin-left: 100px;
            margin-right: 200px;
        }
        .main {
            float: left;
            width: 100%;
            height: 300px;
            background-color: red;
        }
        .left {
            float: left;
            width: 100px;
            height: 300px;
            margin-left: -100%;/*左移100%,使left和main在同一行*/
            position: relative;
            left: -100px;/*左移100px,与container的margin-left相对应。使元素响应地靠左排列*/
            background-color: blue;
        }
        .right {
            float: left;
            width: 200px;
            height: 300px;
            margin-left: -200px;/*左移自身宽度,使right和main在同一行*/
            position: relative;
            right: -200px;/*右移200px,与container的margin-right相对应。使元素响应地靠右排列*/
            background-color: green;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="main"></div><!--先写主体内容,优先渲染-->
        <div class="left"></div>
        <div class="right"></div>
    </div>
</body>

</html>

3.双飞翼布局


<!DOCTYPE html>
<html lang="en">

<head>
    <style>
        /*要点:全部都浮动,然后margin-left位移到同一排*/
        .content {
            float: left;
            width: 100%;
        }
        .main {
            height: 200px;
            margin-left: 100px;
            margin-right: 200px;
            background-color: green;
        }
        .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>
 

4.flex布局


<!DOCTYPE html>
<html lang="en">

<head>
    <style>
        /*缺点:新技术要考虑浏览器兼容*/
        .container {
            display: flex;
        }
        .main {
            flex: 1;
            height: 300px;
            background-color: red;
        }
        .left {
            order: -1;/*排最左*/
            flex-basis: 200px;/*分配空间*/
            height: 300px;
            background-color: blue;
        }
        .right {
            flex-basis: 100px;
            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>

5.绝对定位布局


<!DOCTYPE html>
<html lang="en">
<head>
    <style>
    .container {
        position: relative;
    }
    .main {
        height: 300px;
        margin: 0 100px;
        background-color: green;
    }
    .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>
 

6.table布局


<!DOCTYPE html>
<html lang="en">

<head>
    <style>
        /*缺点:无法设置栏间距,也无法优先加载内容*/
        .container {
            display: table;
            width: 100%;
        }
        .left,
        .main,
        .right {
            display: table-cell;
        }
        .left {
            width: 200px;
            height: 300px;
            background-color: red;
        }
        .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>
 
时间: 2024-11-01 19:32:10

三栏布局的几种方式的相关文章

转载:CSS实现三栏布局的四种方法示例

转载网址:http://www.jb51.net/css/529846.html 前言 其实不管是三栏布局还是两栏布局都是我们在平时项目里经常使用的,也许你不知道什么事三栏布局什么是两栏布局但实际已经在用,或许你知道三栏布局的一种或两种方法,但实际操作中也只会依赖那某一种方法,本文具体的介绍了三栏布局的四种方法,并介绍了它的使用场景. 所谓三栏布局就是指页面分为左中右三部分然后对中间一部分做自适应的一种布局方式. 1.绝对定位法 HTML代码如下: <div class="left&quo

三栏布局的5种解决方案及优缺点

假设高度已知,请写出三栏布局,左栏.右栏宽度300px,中间宽度自适应. 这道题本身的难度并不大,我们在布局页面的时候,写个三栏布局还是挺简单的.但是如果在面试的时候遇到这道题,就没有那么简单了.看似简单的一道题,想把它答好是不简单的.往往越简单的题越不好答.如果看到这题只想到了浮动和绝对定位,那这题你连及格都及格不了. 下面是5种三栏布局的方法. 在写布局代码之前,先写两段公共的样式,此段写在头部. 样式 <style media="screen"> html *{ pa

css实现三栏布局的几种方法及优缺点

三栏布局,顾名思义就是两边固定,中间自适应. 三栏布局在实际的开发十分常见,比如淘宝网的首页,就是个典型的三栏布局:即左边商品导航和右边导航固定宽度,中间的主要内容随浏览器宽度自适应. 我们不妨假定这样一个布局:高度已知,其中左栏.右栏宽度各为300px,中间自适应,可以通过几种方法来实现?以及各自的优缺点是什么? 一.浮动布局 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l

经典的两栏布局和三栏布局的几种简单的实现

一,三栏布局 1,两边栏宽度固定值,中间栏宽度自适应 (1)绝对定位法 [关键点]1,绝对定位从普通文档流中脱离出来,中间元素可以不用考虑左右定位元素占的位置 2,左右栏绝对定位到确定的位置上,(absolute,left,right) 3,中间栏左右外边距设置为左右栏的宽度,因此自身宽度就自适应的变成了窗口宽度-左右两边栏的宽度 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <style> 5 html,body{ 6 mar

三栏布局的n种实现

本文主要讨论左右边栏固定宽度,中间栏填满其余空间的布局.至于其他类型,基本上也就是半斤和八两.每一种布局都会有个Demo,个人依然认为文章里帖代码并没有Demo来的直接.所以正文负责解释,源码参见Demo.其中讨论了这么多种(6种)布局,有以下理由:1是每种布局也都有他的毛病,没有十全十美的,每种布局也都有人在用.2是虽然有相对优秀的方案,但是不优秀的方案也有有用的东西在里边,可能会启发其他的思路补充遗漏的知识点. 利用绝对定位特点:左右两栏采用绝对定位抽离文档流,分别固定于页面的左右两侧,中间

Layout 实现三栏布局的几种方法

https://github.com/ljianshu/Blog/issues/14    布局参考 https://github.com/ljianshu/Blog/issues/38  响应式那点事儿 https://github.com/Fundebug/fundebug-blog/issues/68   技术博客那点事儿 原文地址:https://www.cnblogs.com/reeber/p/11231659.html

HTML+CSS的两栏、三栏布局以及垂直居中的实现方式

1.两栏布局(左固定,右适应) 先写出初始样式和结构. <div class="container"> <div class="left">Lorem ipsum dolor sit amet</div> <div class="right">Lorem ipsum dolor sit amet</div> </div> div { height: 200px; color:

详解 CSS 七种三栏布局技巧

作者:林东洲 链接:https://zhuanlan.zhihu.com/p/25070186 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 三栏布局,顾名思义就是两边固定,中间自适应.三栏布局在开发十分常见,那么什么是三栏布局?比如我打开某东的首页: 映入眼帘的就是一个常见的三栏布局:即左边商品导航和右边导航固定宽度,中间的主要内容随浏览器宽度自适应. 下面围绕的这样的目的,即左右模块固定宽度,中间模块随浏览器变化自适应,想要完成的最终效果如下图所示: 红色

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

Css三栏布局自适应实现几种方法 自适应实现方法我们可以从三个方法来做,一个是绝对定位 ,自身浮动法 和margin负值法了,下面我们一起来看看这三个例子吧,希望例子能帮助到各位同学. 绝对定位法三栏布局自适应: 代码如下 复制代码 <!doctype html> <html> <head> <meta charset="utf-8"> <title>绝对定位法</title> <style>  .pa