美文网首页前端笔记网页前端后台技巧(CSS+HTML)让前端飞
7种方法实现CSS左侧固定,右侧自适应布局

7种方法实现CSS左侧固定,右侧自适应布局

作者: 菜菜___ | 来源:发表于2018-12-26 14:18 被阅读0次

左侧内容固定,右侧自动占满屏幕布局是开发中常见的布局,通常可见于一些管理后台:左侧展示菜单栏,右侧展示管理内容。
今天整理了7种实现这种布局的方法:

一:float+bfc ,左侧宽度不需要固定,但父级容器宽度需大于左侧宽度,否则右侧被挤压无法展示

 /*左浮动固定宽度,右边盒子overflow:hidden触发bfc,使其不与浮动盒子区域重叠,因此会重新计算宽度。*/
        .container1 .left{
            float: left;
            width: 100px;
        }
        .container1 .right {
            overflow: hidden;
        }
        /*清除浮动*/
        .container1:after{
            content: "";
            height: 0;
            line-height: 0;
            display: block;
            visibility: hidden;
            clear: both;
        }

二:float+margin-left,左侧宽度需固定

 /*左浮动固定宽度,右边margin-left*/
        .container2 .left{
            float: left;
            width: 100px;
        }
        .container2 .right{
            margin-left: 100px;
        }
        /*清除浮动*/
        .container2:after{
            content: "";
            height: 0;
            line-height: 0;
            display: block;
            visibility: hidden;
            clear: both;
        }

三:absolute+margin-left,左侧宽度需固定并且绝对定位,缺点:当左侧高于右侧时,左侧会超出父元素,需要使用js补救

        .container3 {
            position: relative;
        }
        .container3 .left{
            position: absolute;
            left: 10px;
            top: 10px;
            width: 100px;
        }
        .container3 .right{
            margin-left: 100px;
        }

四:子元素inline-block + calc动态计算宽度,左侧宽度需固定,父元素需要设置font-size:0清除默认间距,子元素设置vertical-align:top使其顶部对齐,右侧设置 width: calc(100% - 140px);达到自适应

/*双display:inline-block*/
        .container4{
           font-size: 0;
        }
        .container4 .left{
            width: 100px;
        }
        .container4 .left,.container4 .right{
            display: inline-block;
            font-size: 16px;
            vertical-align: top;
        }
        .container4 .right{
            width: calc(100% - 100px);
        }

五:table-cell,表格布局

        .container5{
            display: table;
        }
        .container5 .left,.container5 .right{
            display: table-cell;
        }

六::flex,最便捷的方法,flex-grow可自由伸张,缺点:低版本IE不支持

    .container6{
        display: flex;
    }
    .container6 .right{
        flex-grow: 1;
    }

七:grid,网格布局

        .container7{
            display: grid;
        }
        .container7 .left{
            grid-column:1;
        }
        .container7 .right{
            grid-column:2;
        }

效果如下:


示例完整代码:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        .container{
            padding: 10px;
            border: 1px solid #ffa200;
            margin-bottom: 40px;
        }
        .container .left{
            background-color: #4b83e2;
        }
        .container .right {
            background-color: #ff3b30;
        }
        /*左浮动固定宽度,右边盒子overflow:hidden触发bfc,使其不与浮动盒子区域重叠,因此会重新计算宽度。*/
        .container1 .left{
            float: left;
            width: 100px;
        }
        .container1 .right {
            overflow: hidden;
        }
        /*清除浮动*/
        .container1:after{
            content: "";
            height: 0;
            line-height: 0;
            display: block;
            visibility: hidden;
            clear: both;
        }
        /*左浮动固定宽度,右边margin-left*/
        .container2 .left{
            float: left;
            width: 100px;
        }
        .container2 .right{
            margin-left: 100px;
        }
        /*清除浮动*/
        .container2:after{
            content: "";
            height: 0;
            line-height: 0;
            display: block;
            visibility: hidden;
            clear: both;
        }
        /*左边绝对定位,右边设置margin-left,缺点:当左边高于右边时,左边会超出父元素,需要使用js补救。*/
        .container3 {
            position: relative;
        }
        .container3 .left{
            position: absolute;
            left: 10px;
            top: 10px;
            width: 100px;
        }
        .container3 .right{
            margin-left: 100px;
        }
        /*双display:inline-block*/
        .container4{
            font-size: 0;
        }
        .container4 .left{
            width: 100px;
        }
        .container4 .left,.container4 .right{
            display: inline-block;
            font-size: 16px;
            vertical-align: top;
        }
        .container4 .right{
            width: calc(100% - 100px);
        }
        /*table*/
        .container5{
            display: table;
        }
        .container5 .left,.container5 .right{
            display: table-cell;
        }
        /*flex*/
        .container6{
            display: flex;
        }
        .container6 .right{
            flex-grow: 1;
        }
        /*grid*/
        .container7{
            display: grid;
        }
        .container7 .left{
            grid-column:1;
        }
        .container7 .right{
            grid-column:2;
        }
    </style>
</head>
<body>
<div class="container container1">
    <div class="left">左边左边左边左边左边左边左边左边左边左边</div>
    <div class="right">右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边</div>
</div>
<div class="container container2">
    <div class="left">左边左边左边左边左边左边左边左边左边左边</div>
    <div class="right">右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边</div>
</div>
<div class="container container3">
    <div class="left">左边左边左边左边左边左边左边左边左边左边</div>
    <div class="right">右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边</div>
</div>
<div class="container container4">
    <div class="left">左边左边左边左边左边左边左边左边左边左边</div>
    <div class="right">右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边</div>
</div>
<div class="container container5">
    <div class="left">左边左边左边左边左边左边左边左边左边左边</div>
    <div class="right">右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边</div>
</div>
<div class="container container6">
    <div class="left">左边左边左边左边左边左边左边左边左边左边</div>
    <div class="right">右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边</div>
</div>
<div class="container container7">
    <div class="left">左边左边左边左边左边左边左边左边左边左边</div>
    <div class="right">右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边右边</div>
</div>
</body>
</html>

原文作者技术博客:https://www.jianshu.com/u/ac4daaeecdfe
95后前端妹子一枚,爱阅读,爱交友,将工作中遇到的问题记录在这里,希望给每一个看到的你能带来一点帮助。
欢迎留言交流。

相关文章

  • 常用网页布局

    一、多列布局 (1) 宽度自适应布局 两栏布局 左侧固定右侧自适应 右侧固定左侧自适应 技术原理(左侧固定右侧自适...

  • 常见网页布局的介绍

    左侧固定,右侧自适应 右侧固定,左侧自适应 圣杯布局(左右固定,中间自适应) 中间固定 两侧自适应 等分布局 等分...

  • 多列布局方案

    两栏布局 左侧固定右侧自适应 右侧固定左侧自适应 技术原理(左侧固定右侧自适应) 结构上左右两个盒子,左侧设置为固...

  • CSS布局&居中&媒体查询

    1.CSS布局 实现一个两栏布局,右侧固定宽度200px,左侧自适应宽度 浮动元素 + 普通元素margin 实现...

  • css布局

    1.CSS布局 实现一个两栏布局,右侧固定宽度200px,左侧自适应宽度 浮动元素 + 普通元素margin 实现...

  • 左侧固定右侧自适应布局

    title: 左侧固定右侧自适应布局date: 2016-06-08 22:07:19tags: ['css'] ...

  • 2019-04-01常见布局汇总(flex版本)

    1,左侧固定中间自适应 2,右侧固定,左侧自适应 3,两边固定中间自适应 4,等高布局

  • 左侧固定右侧自适应和css布局

    最近想起一个问题“怎么实现左侧固定,右侧内容自适应”。 flex布局的写法 css html 传统的写法 但是fl...

  • 7种方法实现CSS左侧固定,右侧自适应布局

    左侧内容固定,右侧自动占满屏幕布局是开发中常见的布局,通常可见于一些管理后台:左侧展示菜单栏,右侧展示管理内容。今...

  • CSS自适应布局

    今天小编介绍自适应布局实现方法的demo,1)左侧固定宽度,右侧自适应,随着窗口的宽度而变化;2)右侧固定宽度,左...

网友评论

    本文标题:7种方法实现CSS左侧固定,右侧自适应布局

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