前端面试题(1)——页面布局

2018-03-25  本文已影响0人  言歌不言歌

题目:假设高度已知,请写出三栏布局,其中左栏、右栏宽度各为300px;中间自适应。

屏幕快照 2018-03-25 上午11.28.45.png

我这边总结了五种方法,如有不正确,欢迎批评指正~

一、浮动

    <section class="layout float">
        <style media="screen">
            html * {
                margin: 0;
                padding: 0;
            }

            .layout article div {
                min-height: 100px;
            }

            .layout.float .left {
                float: left;
                background: red;
                width: 300px;
            }
            
            .layout.float .right {
                float: right;
                background: blue;
                width: 300px;
            }
            
            .layout.float .center {
                background: yellow;
            }
        </style>
        <article class="left-center-right">
            <div class="left"></div>
            <div class="right"></div>
            <div class="center">
                 <h2>浮动布局</h2>
                1、浮动布局左右固定宽度,中间自适应 
                2、浮动布局左右固定宽度,中间自适应
            </div>
        </article>
    </section>

二、绝对定位

     <section class="layout position">
        <style media="screen">
            html * {
                margin: 0;
                padding: 0;
            }

            .layout article div {
                min-height: 100px;
            }

            .layout.position .left-center-right>div {
                position: absolute;
            }
            
            .layout.position .left {
                left: 0;
                width: 300px;
                background: red;
            }
            
            .layout.position .right {
                right: 0;
                width: 300px;
                background: blue;
            }
            
            .layout.position .center {
                left: 300px;
                right: 300px;
                background: yellow;
            }
        </style>
        <article class="left-center-right">
            <div class="left"></div>
            <div class="center">
                <h2>绝对定位</h2>
                1、定位布局左右固定宽度,中间自适应 
                2、定位布局左右固定宽度,中间自适应
            </div>
            <div class="right"></div>
        </article>
    </section>

三、flex布局

    <section class="layout flex">
        <style>
            html * {
                margin: 0;
                padding: 0;
            }

            .layout article div {
                min-height: 100px;
            }

            .layout.flex .left-center-right {
                display: flex;
            }
            
            .layout.flex .left {
                width: 300px;
                background: red;
            }
            
            .layout.flex .center {
                flex: 1;
                background: yellow;
            }
            
            .layout.flex .right {
                width: 300px;
                background: blue;
            }
        </style>
        <article class="left-center-right">
            <div class="left"></div>
            <div class="center">
                <h2>flex布局</h2>
                1、flex布局左右固定宽度,中间自适应 
                2、flex布局左右固定宽度,中间自适应
            </div>
            <div class="right"></div>
        </article>
    </section>

四、表格布局

    <section class="layout table">
        <style>
            html * {
                margin: 0;
                padding: 0;
            }

            .layout article div {
                min-height: 100px;
            }

            .layout.table .left-center-right {
                display: table;
                height: 100px;
            }
            
            .layout.table .left-center-right>div {
                display: table-cell;
            }
            
            .layout.table .left {
                background: red;
                width: 300px;
            }
            
            .layout.table .center {
                background: yellow;
            }
            
            .layout.table .right {
                background: blue;
                width: 300px;
            }
        </style>
        <article class="left-center-right">
            <div class="left"></div>
            <div class="center">
                <h2>tabale布局</h2>
                1、table布局左右固定宽度,中间自适应 
                2、table布局左右固定宽度,中间自适应
            </div>
            <div class="right"></div>
        </article>
    </section>

五、网格布局

    <section class="layout grid">
        <style media="screen">
            html * {
                margin: 0;
                padding: 0;
            }

            .layout article div {
                min-height: 100px;
            }

            .layout.grid .left-center-right {
                display: grid;
                width: 100%;
                grid-template-rows: 100px;
                grid-template-columns: 300px auto 300px;
            }
            
            .layout.grid .left {
                background: red;
            }
            
            .layout.grid .center {
                background: yellow;
            }
            
            .layout.grid .right {
                background: blue;
            }
        </style>
        <article class="left-center-right">
            <div class="left"></div>
            <div class="center">
                <h2>网格布局</h2>
                1、网格布局左右固定宽度,中间自适应 
                2、网格布局左右固定宽度,中间自适应
            </div>
            <div class="right"></div>
        </article>
    </section>

总结

  1. 这五种解决方案各自的优缺点;
  1. 当高度不定时,两侧的高度也跟这中间的高度撑开,以上五种有哪几种可以继续用,哪几种不能用了;
     <article class="left-center-right">
         <div class="left"></div>
         <div class="center">
             1、网格布局左右固定宽度,中间自适应 
             2、网格布局左右固定宽度,中间自适应
             <p>增加高度</p>
             <p>增加高度</p>
             <p>增加高度</p>
             <p>增加高度</p>
             <p>增加高度</p>
             <p>增加高度</p>
         </div>
         <div class="right"></div>
     </article>
  1. 兼容性;如果现在要在业务中实现,你觉得最优选择时哪种;

页面布局小结

  1. 语义化掌握要到位
  2. 页面布局理解深刻
  3. CSS基础知识扎实
  4. 思维灵活且积极上进(对新技术的了解,如网格布局)
  5. 代码书写规范
上一篇下一篇

猜你喜欢

热点阅读