CSS之三列自适应布局

不知什么原因,图片贴不进来,三列自适应布局方法也很多,个人感觉CSS3是最简单的,但要考虑浏览器兼容(下面的没有考虑这点).
1.固定左右宽,中间宽度自适应
【1】左右各自向左右浮动即可!
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>CSS-居中</title>
</head>
<style type="text/css">
body div{margin:0;padding:0; }
#left{
    width:200px;
    border:1px solid red;
    float:left;
}
#middle{
    width:auto;
    border:1px solid black; 
    margin:0 202px 0 202px;
}
#right{
    float:right;
    width:200px;
    border:1px solid blue;
}
</style>
<body>
<div id="wrap">
    <div id="left">这是左边部分</div>
    <div id="right">这是右边部分</div>
    <div id="middle">这是中间部分</div>
</div>
</body>
</html>
注:左中右三个div的位置很重要,如果把中间和右边调换位置,中间在左边浮动后,Middle这块div会没有浮动而独自占据一行,导致右边右浮动的时候上不去.
【2】margin负值
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>CSS-自适应布局</title>
</head>
<style type="text/css">
body div{margin:0;padding:0;}
#wrap{
    min-width:1000px;
}
#left{
    width:200px;
    border:1px solid red;
    float:left;
}
#middle{
    width:auto;
    border:1px solid black;
    margin:0 203px 0 202px;
}
#right{
    float:right;
    width:200px;
    border:1px solid blue;
    margin-top:-20px; //此值为middle的div的高度的负数(具体情况具体设置)
}
</style>
<body>
<div id="wrap">
    <div id="left">这是左边部分</div>
    <div id="middle">这是中间部分这是中间部分这是中间部分这是中间部分这是中间部分这是中间部分</div>
    <div id="right">这是右边部分</div>
</div>
</body>
</html>
【3】CSS实现
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>CSS-居中</title>
</head>
<style type="text/css">
body div{margin:0;padding:0; }
#wrap{
    display:flex;
}
#left{
    width:200px;
    border:1px solid red;
}
#middle{
    flex:1;
    border:1px solid black;
}
#right{
    width:200px;
    border:1px solid blue;
}
</style>
<body>
<div id="wrap">
    <div id="left">这是左边部分这是左边部分这是左边部分这是左边部分</div>
     <div id="middle">这是中间部分这是中间部分这是中间部分这是中间部分这是中间部分</div>
    <div id="right">这是右边部分</div>
</div>
</body>
</html>

2.两边宽度自适应,中间固定宽度
【1】浮动实现
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>CSS-自适应布局</title>
</head>
<style type="text/css">
body div{margin:0;padding:0;}
     #middle{
            width:300px;
            float:left;
            border:1px solid black;         
        }
        #left,#right{
            float:left;
            margin:0 0 0 -151px;
            width:50%;       
        }
        .inner{
            padding:20px;       
        }

        #left .inner,
        #right .inner{
            margin:0 0 0 151px;
            border:1px solid red;
        }
</style>
<body>
     <div id="left">
        <div class="inner">这是左边这是左边这是左边这是左边</div>
    </div>
    <div id="middle">
        <div class="inner">这是中间</div>
    </div>
    <div id="right">
        <div class="inner">这是右边</div>
    </div>
</body>
</html>
【2】CSS3实现
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>CSS-自适应布局</title>
</head>
<style type="text/css">
body div{margin:0;padding:0;}
    body{
        display:flex;
    }
         #middle{
            width:300px;
            border:1px solid black;       
        }
        #left,#right{
            flex:1;
            width:auto;   
            border:1px solid red;   
        }
</style>
<body>
    <div id="left">这是左边这是左边这是左边这是左边</div>
    <div id="middle">这是中间</div>
    <div id="right">这是右边这是右边这是右边这是右边</div>
</body>
</html>
3.三边自适应
【1】浮动
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>CSS-自适应布局</title>
</head>
<style type="text/css">
body div{margin:0;padding:0;float:left; }
    #left,#right{
        border:1px solid red;
        width:40%;
    }
    #middle{
        border:1px solid black;
    }
</style>
<body>
     <div id="left">
        <div class="inner">这是左边这是左边这是左边这是左边</div>
    </div>
    <div id="middle">
        <div class="inner">这是中间</div>
    </div>
    <div id="right">
        <div class="inner">这是右边这是右边这是右边这是右边这是右边</div>
    </div>
</body>
</html>
【2】CSS3设置
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>CSS-自适应布局</title>
</head>
<style type="text/css">
body div{margin:0;padding:0;float:left; }
    body{
        display:flex;
    }
    #left,#right,#middle{
        flex:1;
    }
    #left,#right{
        background:red;
    }
    #middle{
        background:orange;
    }
</style>
<body>
     <div id="left">
        <div class="inner">这是左边这是左边这是左边这是左边</div>
    </div>
    <div id="middle">
        <div class="inner">这是中间</div>
    </div>
    <div id="right">
        <div class="inner">这是右边这是右边这是右边这是右边这是右边</div>
    </div>
</body>
</html>







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值