zoukankan      html  css  js  c++  java
  • 双飞翼布局和圣杯布局的理解

    在很久以前,有了解过双飞翼布局,但那是仅仅只是了解,当时知道怎么样去布局,但是在后来的实际项目中没有用到,就往了怎么回事了;

    前不久去面试,有被问到了这个问题,当时只记得听过,但是具体怎么实现的就全然不知了,所以特地了解了下,并理解了实现原理。

    其实最重要的就是利用 float 属性,使盒子脱离文档流;一下记录一下实现方法;

    第一步:实现基本布局

    <div class="main">
         <div class="center"></div>
         <div class="left"></div>
         <div class="right"></div>
    </div>
    main{
        width: 100%;
        height: 100px;
        overflow: hidden;
        div{
            height: 100px;
            float: left;
            word-break: break-all;
    
        }
        .center{
            background: yellow;
            width: 100%;
        }
        .left{
            width: 100px;
            background: deepskyblue;
        }
        .right{
            width: 100px;
            background: red;
        }
    }

    看起来是这样的;只需要做一些调整就ok了,利用margin-left 到达左右布局;left盒子  margin-left :-100%;right 盒子 margin-left :-100px;这样布局基本完成;效果是这样的

    那么问题来了,中间的盒子就被两边盒子遮挡住了一部分;接下来就是双飞翼布局和圣杯布局的差异了,实现的目的是相同的,只不过是思想不同;

    圣杯布局注意利用父级的内边距,也就是padding,然后左右两个盒子的相对定位;让左边盒子向左移,右边盒子向右移动就搞定;

    一下是完整的css 代码;

    .main{
        width: 100%;
        height: 100px;
        overflow: hidden;
        padding: 0 100px;
        div{
            height: 100px;
            float: left;
            word-break: break-all;
        }
        .center{
            background: yellow;
            width: 100%;
        }
        .left{
            position: relative;
            width: 100px;
            background: deepskyblue;
            margin-left: -100%;
            left: -100px;
        }
        .right{
            position: relative;
            width: 100px;
            background: red;
            margin-left: -100px;
            right: -100px;
        }
    }

    其实我还有一种方法也能实现,也是通过padding ;设置center  中间盒子 padding : 0 100px; 同样可以达到效果。个人觉得没有什么问题;但还是需要实践。也不用给左右两边盒子设置 相对定位了,这样代码量还会少一点;但是这样的话要是给中间盒子设置一个图片背景就话就会麻烦一点,所以还是用经典的圣杯布局和双飞翼吧。经典是有原因的,是经过时间和实践的考考验的。

  • 相关阅读:
    Can't connect to X11 window server using 的问题,求解
    自动化运维,让你远离背锅侠
    python netmiko实现cisco网络设备配置备份
    如何备份思科、锐捷、Juniper的配置文件
    网络配置备份。
    使用SecureCRT脚本备份网络设备配置的一点感悟
    網管利器!開源管理系統-LibreNMS
    邮件协议与port
    视频播放技术汇总(列表播放,小窗播放,跨界面播放,播放中网络切换提示)
    android插件式开发资料整理
  • 原文地址:https://www.cnblogs.com/DivHao/p/7822796.html
Copyright © 2011-2022 走看看