常见的两列、三列布局,宽高自适应

作者: webCoder | 来源:发表于2016-02-15 11:42 被阅读2408次

    今天是猴年的第一天班,也是新的起点。
    分享一个如何用css实现我们在工作中常见的两列布局:1.左侧固定宽度,高度自适应右侧;2.左侧宽度高度固定,右侧自适应宽高;3.左侧、右侧固定宽,中间自适应。

    1.左侧固定宽度,高度自适应右侧

    • 效果图
    pic1.png pic2.png
    • html+css
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>左侧固定宽,自适应右侧高度</title>
        <style>
            .main{
                position: relative;
                color: #fff;
            }
            .left{
                position: absolute;
                top: 0;
                left: 0;
                bottom: 0;
                width: 300px;
                background: #f00;
            }
            .right{
                height: 200px;
                margin-left: 300px;
                background: #000;
            }
        </style>
    </head>
    <body>
        <div class="main">
            <div class="left">left</div>
            <div class="right">right</div>
        </div>
    </body>
    </html>
    
    你看代码,左侧确实没有定高,右侧也没有定宽。

    2.左侧宽度高度固定,右侧自适应宽高

    • 效果图
    pic3.png
    • html+css
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>左侧宽度高度固定,右侧自适应宽高</title>
        <style>
            .main{
                overflow: hidden;
                color: #fff;
            }
            .left{
                float: left;
                width: 300px;
                height: 200px;
                background: #f00;
            }
            .right{
                margin-left: -300px;
                padding-bottom: 9999px;
                margin-bottom: -9999px;
                background: #000;
            }
        </style>
    </head>
    <body>
        <div class="main">
            <div class="left">left</div>
            <div class="right">right</div>
        </div>
    </body>
    </html>
    
    你看代码,左侧确实定了宽高,右侧宽高都没有定。

    3.左侧、右侧固定宽,中间自适应

    • 效果图
    pic4.png pic5.png
    • html+css
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>左侧、右侧固定宽,中间自适应</title>
        <style>
            .fl{
                float: left;
            }
            .main{
                color: #fff;
            }
            .center{
                background: #9A0069;
                width: 100%;
                height: 300px;
            }
            .center .content{
                padding: 0 100px;
            }
            .left{
                width: 100px;
                height: 300px;
                margin-left: -100%;
                background: #009A61;
            }
            .right{
                width: 200px;
                height: 300px;
                background: #00529A;
                margin-left: -200px;
            }
        </style>
    </head>
    <body>
        <div class="main">
            <div class="center fl">
                <div class="content">
                    center
                </div>
            </div>
            <div class="left fl">left</div>
            <div class="right fl">right</div>
        </div>
    </body>
    </html>
    
    你看代码,左侧、右侧都固定了宽度,中间宽度自适应了。关键点是:float:left配合margin-left使用。同时center的div写在了左右的前面,更加符合语义化。

    但我们这里高度是写死的,如何实现既保持“左右固定宽,中间自适应”,又能够以一边的高度为基准,其他两个高度自适应呢? 你可以参考1,2的代码来实现,这里就不写了。

    相关文章

      网友评论

      • noodels:您好 在第二个例子中#right的margin-left应该是300px吧 为左边留出空间
      • 梁生在此:用flexbox。简单。就是兼容性不太好
        梁生在此:@小睿7777777 flexbox为什么吃性能
        小睿7777777:@webCoder flexbox是最后的选择吧,吃性能,功能强大,但一般网页都不需要如此复杂的布局
        webCoder:@梁生在此 移动端微网站可以用flexbox

      本文标题:常见的两列、三列布局,宽高自适应

      本文链接:https://www.haomeiwen.com/subject/thrpkttx.html