实现多栏自适应布局

作者: _星野 | 来源:发表于2018-07-05 23:30 被阅读55次

前言

最近做了一个项目需要自适应布局,在此之前自适应布局并没有去接触过,我就去研究下,总结下自适应布局实现各种方式,有什么不足,希望多提提意见

大概有5种方法,可以实现自适应布局

  • 浮动布局
  • 定位布局
  • flex布局
  • table-cell布局
  • grid布局

题目要求:左边宽度160px,剩余部分自适应

image.png
先说下,我flex布局
html结构,大盒子设置flex,里面设置左右两个小盒子
<body>
    <section class="box">
        <article class="box-left">
        </article>
        <article class="box-right">
            <h1>hello</h1> 
        </article>
    </section>
</body>

CSS部分

        html * {        //去除浏览器默认边距
            margin: 0;
            padding: 0;
        }

        .box {
            display: flex;
            width: 100%;
            // height:100vh;    //高度无法自适应,遇到内容过多,会溢出盒子,用下面方法替代
            min-height: 100vh;
            max-height: 100%;
        }

        .box-left {
            width: 160px;
            min-height: 100vh;
            max-height: 100%;
            background: greenyellow;
        }

        .box-right {
            // 方法一:
            flex: 1;
            // 方法二:
            width: calc(100% -160px);   // 剩余宽度等于总宽度减去左盒子宽度
            
            min-height: 100vh;
            max-height: 100%;
            background: darkcyan;
        }

float 布局,基本就css有些地方改动而已

CSS

.box {
            width: 100%;
            min-height: 100vh;
            max-height: 100%;
        }

        .box-left {
            float: left;            //修改地方 
            width: 160px;
            min-height: 100vh;
            max-height: 100%;
            background: greenyellow;
        }

        .box-right {
            min-height: 100vh;
            max-height: 100%;
            background: darkcyan;
        }

定位布局

CSS

        .box {
            width: 100%;
            min-height: 100vh;
            max-height: 100%;
            position: relative;  //修改地方
        }

        .box-left {
            position: absolute;  //修改地方
            left: 0;   //修改地方
            width: 160px;
            min-height: 100vh;
            max-height: 100%;
            background: greenyellow;
        }

        .box-right {
            position: absolute;    //修改地方
            left: 160px;  //修改地方
            right: 0;   //修改地方
            min-height: 100vh;
            max-height: 100%;
            background: darkcyan;
        }

table-cell 布局

CSS

.box {
            width: 100%;
            min-height: 100vh;
            display: table;  //修改地方
        }

        .box>article {
            display: table-cell;  //修改地方
        }

        .box-left {
            width: 160px;
            min-height: 100vh;
            background: greenyellow;
        }

        .box-right {
            min-height: 100vh;
            background: darkcyan;
        }

grid 布局

CSS

.box {
            width: 100%;
            min-height: 100vh;
            display: grid;  //修改地方
            grid-template-columns: 160px auto;   //修改地方
        }
        .box-left {
            background: greenyellow;
        }

        .box-right {
            background: darkcyan;
        }

后续:

跳转项目

如果有兴趣想看下这项目话,账号为12345678911,密码123或者自己注册下账号

顺便开源下我最近完成的项目源代码,希望能帮到一些人,接口可用

相关文章

  • css三栏布局

    布局:三栏布局(7种方法)实现效果: 左右栏定宽,中间栏自适应 1、绝对定位布局:position + margi...

  • CSS布局

    1. 两栏布局 两栏布局的特征是侧栏固定宽度,主栏自适应宽度。 实现方法: float + margin: 也可以...

  • 实现多栏自适应布局

    前言 自学前端半年多,第一份工作,师傅就想让我独立完成一个网站的项目,需要实现自适应布局页面,在此之前自适应布局并...

  • 常用网页布局

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

  • 二栏布局一栏自适应和三栏布局中间自适应

    二栏布局一栏自适应 效果图: 三栏布局中间自适应 效果图:

  • css布局

    简单的布局问题 高度已知,三栏布局,要求左右宽度固定,中间自适应,怎么实现?

  • 实现三栏布局的7种方法

    三栏布局一般多指左右两栏宽度固定,中间栏宽度自适应的布局。在能实现效果的情况下,尽可能的中间栏内容优先渲染。面试的...

  • 我还是要说的布局

    两栏布局 左边固定右边自适应 使用float布局 使用position布局    三栏布局 左右两边固定中间自适应...

  • 前端常见面试题(十九)@郝晨光

    实现三栏布局,左右两栏固定宽度100px,中间栏自适应宽度,实现三列自适应等高 使用弹性盒子肯定是最简单的一种方法...

  • 浅谈双飞翼布局和圣杯布局(一)

    双飞翼布局和圣杯布局都是实现两边固定中间自适应的三栏布局的方式,最近在整理三栏布局实现方式的笔记,决定但拉出来一篇...

网友评论

    本文标题:实现多栏自适应布局

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