CSS-三栏布局

 最终实现如下效果图:

1.流体布局

左右模块各自向左右浮动,并设置中间模块的 margin 值使中间模块宽度自适应。

缺点就是主要内容无法最先加载,当页面内容较多时会影响用户体验。

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
	.left {
	    float: left;
	    height: 200px;
	    width: 100px;
	    background-color: red;
	}
	.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"></div>
        <div class="right"></div>
        <div class="main"></div>
    </div>
</body>
</html>

 2.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>

3. 双飞翼布局

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
        .content {
  	        float: left;
  	        width: 100%;
        }
        .main {
  	        height: 200px;
  	        margin-left: 110px;
  	        margin-right: 220px;
  	        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. 圣杯布局

        样式定义复杂

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

 

5. Flex 布局

        推荐使用

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
	.container {
        display: flex;
        height:200px;
	}
	.main {
        flex: 1;
	    background-color: green;
	}
	.left {
        width:100px;
	    margin-right: 20px;
	    background-color: red;
	}
	.right {
        width:100px;
        margin-left: 20px;
	    background-color: blue
	}
    </style>
</head>
<body>
    <div class="container">
	    <div class="left"></div>
        <div class="main"></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: 200px;
	        background-color: red;
        }
        .main {
	        background-color: green;
        }
        .right {
	        width: 100px;
	        height: 200px;
	        background-color: blue;
        }
    </style>
</head>
<body>
    <div class="container">
	<div class="left"></div>
	<div class="main"></div>
	<div class="right"></div>
    </div>
</body>
</html>

若想造成有边距的视觉效果:

1.可以在class为main的类下添加下方代码(不推荐为了效果而强行修改)

border-left: 20px solid white;
border-right: 20px solid white;

 2.可以在main元素外再套一个父元素

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
        .container {
	        display: table;
	        width: 100%;
        }
        .left, box,.right {
	        display: table-cell;

        }
        .left {
	        width: 200px;
	        height:200px;
	        background-color: red;
        }
        .main {
            height:200px;
	        margin:0px 20px;
	        background-color: green;
        }
        .right {
	        width: 100px;
	        height:200px;
	        background-color: blue;
        }
    </style>
</head>
<body>
    <div class="container">
	    <div class="left"></div>
	    <div class="box">
		    <div class="main"></div>
	    </div>
	    <div class="right"></div>
    </div>
</body>
</html>

7. 绝对定位布局

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
	.container {
	    position: relative;
	}
	.main {
	    height: 400px;
	    margin: 0 120px;
	    background-color: green;
	}
	.left {
	    position: absolute;
	    width: 100px;
	    height: 200px;
	    left: 0;
	    top: 0;
	    background-color: red;
	}
	.right {
	    position: absolute;
	    width: 100px;
	    height: 200px;
	    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>
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值