美文网首页
关于css左右布局的那些事

关于css左右布局的那些事

作者: 人穷脸丑小前端 | 来源:发表于2020-06-01 14:53 被阅读0次

前段时间被面试问道左右布局的问题,今天就来亲自试验下,看看有多少种方法。

问:左边固定像素,右边宽度自适应,并且父级元素的高度是由左边或右边的高度撑开的。
<div class="main">
    <div class="left" contenteditable="true">
        左侧内容
    </div>
    <div class="right" contenteditable="true">
        右侧内容
    </div>
</div>

达到类似如下效果


左侧高时.png
右侧高时.png
  • 首先是想到的flex布局
    .main {
        width: 100%;
        display: flex;
        border: 1px solid red;
    }

    .left {
        width: 300px;
        flex: none;
        border-right: 1px solid red;
    }

    .right {
        width: 100%;
    }

flex布局可以轻而易举的实现效果

  • 然后是浮动float
    .main {
        width: 100%;
        overflow: hidden;
        border: 1px solid red;
    }

    .left {
        width: 300px;
        float: left;
        border-right: 1px solid red;
    }

    .right {
        margin-left: 300px;
        border-left: 1px solid red;
    }

浮动布局可以将父元素撑开,但是左右两个子元素并不互相影响高度,所以中间那条线,是左边和右边一个边框重叠的效果。但如果需要两个子元素有不同的背景颜色的话,就不是这样的写法了。
浮动如果是子元素带背景,我是如下写法

    .main {
        width: 100%;
        overflow: hidden;
        border: 1px solid red;
        position: relative;
    }
    .main:before{
        content: '';
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        width: 300px;
        background: orangered;
        z-index: -1;
    }
    .main:after{
        content: '';
        position: absolute;
        top: 0;
        bottom: 0;
        left: 300px;
        right: 0;
        background: yellow;
        z-index: -1;
    }

    .left {
        width: 300px;
        float: left;
        background: orangered;
        border-right: 1px solid red;
    }

    .right {
        margin-left: 300px;
        background: yellow;
        border-left: 1px solid red;
    }
浮动带背景时
  • 行内块元素 display:inline-block
    .main {
        width: 100%;
        border: 1px solid red;
        font-size: 0;
    }

    .left {
        width: 300px;
        display: inline-block;
        border-right: 1px solid red;
        font-size: 14px;
    }

    .right {
        display: inline-block;
        border-left: 1px solid red;
        height: 100%;
        width: calc(100% - 301px);
        font-size: 14px;
        vertical-align: top;
        margin-left: -1px;
    }

行内块元素如果要给子元素加背景参考浮动即可。

  • 表格或display:table
    .main {
        width: 100%;
        border: 1px solid red;
        display: table;
    }

    .left {
        width: 300px;
        display: table-cell;
        border-right: 1px solid red;
        background: aquamarine;
    }

    .right {
        display: table-cell;
        background: antiquewhite;
    }

类表格的布局应该说是比较简单的,也适用子元素带背景的。

  • grid网格布局
    .main {
        width: 100%;
        border: 1px solid red;
        display: grid;
        grid-template-columns: 300px auto;
    }

    .left {
        border-right: 1px solid red;
        background: aquamarine;
    }

    .right {
        background: antiquewhite;
    }

grid布局的写法那就更简单了,只需要在父级元素定义grid即可。


table和grid效果图.png

相关文章

  • 关于css左右布局的那些事

    前段时间被面试问道左右布局的问题,今天就来亲自试验下,看看有多少种方法。 问:左边固定像素,右边宽度自适应,并且父...

  • 2019-04-04

    关于如何使用css布局 左右布局 在页面开发过程中要对页面进行左右布局排版,如何使用css的相关知识来做到呢? 以...

  • css布局和居中

    本文主要介绍了css常用的布局,居中等其他小技巧。 css布局 左右布局 利用float实现左右布局 左右模块设置...

  • CSS经常用到的东西

    一、左右布局 1.float属性实现左右布局 float属性是css中关于布局的一个关键属性,其意为将该块状区域脱...

  • CSS的布局与居中

    css的布局 css左右布局 双浮动|左右布局: 双浮动: 在子元素下面添加float,在父元素上面加上clear...

  • css布局

    最近在学习css相关的知识,本文主要总结一些css布局相关的知识。 一、左右布局和左中右布局 左右布局和左中右布局...

  • CSS布局的那些事

    位置 移动 宽度和高度 即大小 css的"图层" BFC position float flex grid 容器的...

  • CSS布局技巧

    最近学习了CSS的一些知识,下面总结一下我学到的CSS布局技巧 1.左右布局 (1). 浮动左右布局也叫横向布局,...

  • CSS的左右布局

    上篇文章介绍了CSS代码的引入方式,今天列举下CSS的两种布局clearfix和position 1.左右布局 方...

  • 浅析 CSS 布局与定位

    浅析 CSS 布局与定位 较多内容参考:CSS布局与定位入门 一、左右布局 float + clearfix块级元...

网友评论

      本文标题:关于css左右布局的那些事

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