zoukankan      html  css  js  c++  java
  • js面试题-----页面布局

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

    答案:

      ①、浮动方式

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style media='screen'>
            *{
                padding:0;
                margin:0;
            }
            .layout article div{
                min-height:100px;
            }
            .layout.float .left{
                float:left;
                300px;
                background:red;
            }
            .layout.float .right{
                float:right;
                300px;
                background:blue;
            }
            .layout.float .center{
                background:yellow;
            }
        </style>
    </head>
    <body>
        <section class="layout float">
            <article class='left-right-center'>
                <div class='left'></div>
                <div class='right'></div>
                <div class='center'>
                    <h1>浮动解决方案</h1>
    
                </div>
            </article>
        </section>
    </body>
    </html>

      ②、定位方式 

    <style media='screen'>
            *{
                padding:0;
                margin:0;
            }
            .layout article div{
                min-height:100px;
                position:absolute;
            }
            .layout.float .left{
                left:0;
                width:300px;
                background:red;
            }
            .layout.float .right{
                right:0;
                width:300px;
                background:blue;
            }
            .layout.float .center{
                left:300px;
                right:300px;
                background:yellow;
            }
        </style>

      ③、flex布局

    *{
                padding:0;
                margin:0;
            }
            .layout article{
                display:flex;
            }
            .layout.float .left{
                width:300px;
                background:red;
            }
            .layout.float .right{
                width:300px;
                background:blue;
            }
            .layout.float .center{
                flex:1;
                background:yellow;
            }

      ④、表格布局

    *{
                padding:0;
                margin:0;
            }
            .layout article{
                width:100%;
                display:table;
                height:100px;
            }
            .layout article div{
                display:table-cell;
            }
            .layout.float .left{
                width:300px;
                background:red;
            }
            .layout.float .right{
                width:300px;
                background:blue;
            }
            .layout.float .center{
                background:yellow;
            }

      ⑤、网格布局 

    *{
                padding:0;
                margin:0;
            }
            .layout article{
                display:grid;
                width:100%;
                grid-template-rows:100px;
                grid-template-columns:300px auto 300px;
            }
            article .left{
                background:red;
            }
            article .center{
                background:yellow;
            }
            article .left{
                background:blue;
            }

    问题扩展:

      1、几种方法的优缺点

        浮动:需要清除浮动,但兼容性较好

        定位:脱离文档流,导致下面的内容都要脱离文档流,但是比较快捷

        flex:可以解决上面两个的问题,但是存在兼容性

        表格:表格布局的兼容性非常好,有一些历史性的问题

        网格:比较新的方式

      2、去掉高度已知,那种方式不起作用?

        除了flex和表格布局可以之外,其余的都不起作用。

  • 相关阅读:
    python的struct模块
    Linux程序设计学习笔记(独乐乐版)
    理解AndroidX
    Android中的样式和主题
    Android中Fragment的使用
    Android 中Dialog的使用
    直接在apk中添加资源的研究
    Android签名生成和互转
    简单扒一下Volley源码,扩展Volley生命周期
    获取android所有联系人信息
  • 原文地址:https://www.cnblogs.com/diasa-fly/p/7506142.html
Copyright © 2011-2022 走看看