CSS经典布局 -- 圣杯布局 & 双飞翼布局

2023-11-13

引言

圣杯布局和双飞翼布局都是比较经典的三栏布局,两种布局的页面效果基本相同。两种布局都是两侧宽度固定, 中间宽度自适应 且 中间内容优先渲染 的三栏布局

在这里插入图片描述

圣杯布局

圣杯布局DOM结构

 	<header>this is the header</header>
    <main>
      <div class="center">this is the center</div>
      <div class="left">this is the left</div>
      <div class="right">this is the right</div>
    </main>
    <footer>this is the footer</footer>

内容区域main包含三个div标签,class分别为center、left、right。(顺序很重要,center一定要放到最前面,确保其优先渲染)

圣杯布局样式

第一步,将内容区域设置padding,为左右两栏留出空间。并设置内容区域的各栏宽度,中间栏宽度 100%,让其自适应,两边栏宽度固定。(宽 / 高根据实际情况设置,这是数值是为了演示方便)

		main{
            padding-left: 200px; 
            padding-right: 150px;
        }
        .center {
            width: 100%;
            height: 200px;
        }
        .left {
            width: 200px; 
            height: 200px;
        }
        .right {
            width: 150px; 
            height: 200px;
        }

页面效果:

在这里插入图片描述
第二步,为三栏分别添加 float: left; (为了演示效果,添加了背景颜色)

修改后的CSS代码如下:

 		.center {
 			float: left;
            width: 100%;
            height: 200px;
            background-color: orange;
        }
        .left {
        	float: left;
            width: 200px; 
            height: 200px;
            background-color: red;
        }
        .right {
        	float: left;
            width: 150px; 
            height: 200px;
            background-color: green;
        }

页面效果:
在这里插入图片描述
第三步,通过 margin-left: -100%; 结合相对定位 right: 200px;,设置左边栏。

修改后的CSS代码如下:

        .left {
            float: left;
            width: 200px; 
            height: 200px;
            margin-left: -100%;
            position: relative;
            right: 200px;
            background-color: red;
        }

页面效果:
在这里插入图片描述
第四步,通过 margin-right: -150px,设置右边栏,完成圣杯布局。

修改后的CSS代码如下:

        .right {
            float: left;
            width: 150px; 
            height: 200px;
            margin-right: -150px; 
            background-color: green;
        }

圣杯布局最终页面效果:
在这里插入图片描述
完整CSS代码:

        body {
            min-width: 550px;
        }
        header, footer{
            height: 50px;
            background-color: #ccc;
            clear: both;
        }
        main{
            padding-left: 200px; 
            padding-right: 150px;
            height: 200px;
        }
        .center {
            float: left;
            width: 100%;
            height: 200px;
            background-color: orange;
        }

        .left {
            float: left;
            width: 200px; 
            height: 200px;
            margin-left: -100%;
            position: relative;
            right: 200px;
            background-color: red;
        }

        .right {
            float: left;
            width: 150px; 
            height: 200px;
            margin-right: -150px; 
            background-color: green;
        }

圣杯布局总结

  • 第一步,将内容区域设置padding,为左右两栏留出空间;
  • 第二步,给三栏添加浮动;
  • 第三步,通过 margin-left: -100%; 结合相对定位 right自身宽度,完成左边栏;
  • 第四步,通过 margin-right 负自身宽度,完成右边栏;

双飞翼布局

双飞翼布局DOM结构

    <header>this is the header</header>
    <main>
        <div class="middle">
            <div class="center">
                双飞翼布局
            </div>
        </div>
        <div class="left">this is the left</div>
        <div class="right">this is the right</div>
    </main>
    <footer>this is the footer</footer>

main包含三个div标签,class分别为middle、left、right。其中middle包含一个class为center的div标签(和圣杯布局一样,为了确保middle区域优先渲染,将middle放在left、right之上)

双飞翼布局样式

第一步,给middle中的center,设置margin为左右两栏留出空间。(为了页面效果,也为其他区域添加了宽高以及背景颜色)

        .center{
            margin: 0 200px;  //现在最重要的是理解这一行代码
            height: 200px;
            background: red;
        }
        //下面是其他区域的样式,不用细看,了解即可
        main{
            background: purple;  //背景颜色:紫色
            clear: both;
        }
        .left{
            width: 200px;
            height: 200px;
            background: green;
        }
        .right{
            width: 200px;
            height: 200px;
            background: yellow;
        }
        .middle{
            width: 100%;
            height: 200px;
            background: pink;
        }
        .center{
            margin: 0 200px;
            height: 200px;
            background: red;
        }

页面效果:
在这里插入图片描述

第二步,同圣杯布局一样,为三栏分别添加 float: left;

修改后的CSS代码如下:

        main{
            background: purple;
            clear: both;
        }
        .left{
            float: left;
            width: 200px;
            height: 200px;
            background: green;
        }
        .right{
            float: left;
            width: 200px;
            height: 200px;
            background: yellow;
        }
        .middle{
            float: left;
            width: 100%;
            height: 200px;
            background: pink;
        }
        .center{
            margin: 0 200px;
            height: 200px;
            background: red;
        }

页面效果:

在这里插入图片描述
第三步,给left添加 margin-left: -100%;设置左边栏。

修改后的CSS代码如下:

        main{
            background: purple;
            clear: both;
        }
        .left{
            float: left;
            width: 200px;
            height: 200px;
            background: green;
            margin-left: -100%;
        }
        .right{
            float: left;
            width: 200px;
            height: 200px;
            background: yellow;
        }
        .middle{
            float: left;
            width: 100%;
            height: 200px;
            background: pink;
        }
        .center{
            margin: 0 200px;
            height: 200px;
            background: red;
        }

页面效果:
在这里插入图片描述
第四步,给right添加 margin-left: -200px;,设置右边栏,完成双飞翼布局。

完整CSS代码:

  		header, footer{
            height: 50px;
            background-color: #ccc;
            clear: both;
        }
        main{
            background: purple;
            clear: both;
        }
        .left{
            float: left;
            width: 200px;
            height: 200px;
            background: green;
            margin-left: -100%;
        }
        .right{
            float: left;
            width: 200px;
            height: 200px;
            background: yellow;
            margin-left: -200px;
        }
        .middle{
            float: left;
            width: 100%;
            height: 200px;
            background: pink;
        }
        .center{
            margin: 0 200px;
            height: 200px;
            background: red;
        }

双飞翼布局最终页面效果:
在这里插入图片描述

双飞翼布局总结

  • 第一步,给middle中的center,设置margin为左右两栏留出空间;
  • 第二步,同圣杯布局一样,给三栏添加浮动;
  • 第三步,通过给left添加 margin-left: -100%; 完成左边栏;
  • 第四步,通过给right添加 margin-left: -200px;,完成右边栏;

总结

圣杯布局 、双飞翼布局都使用float布局

圣杯布局 、双飞翼布局两侧都使用margin负值

为防止中间内容被两侧覆盖,圣杯布局使用的padding,双飞翼布局使用的是margin

结语

本小节到此就结束了,谢谢大家的观看!

如有问题欢迎各位指正

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSS经典布局 -- 圣杯布局 & 双飞翼布局 的相关文章

  • 多列定义列表[重复]

    这个问题在这里已经有答案了 我有一个 dl 像这样 dl dt Quantity dd dt Size dd dt Rise dd dt Color dd dd dt dd dt dd dt dd dt dl 该列表是通过 php 动态生成
  • 将单选按钮放置在图像上

    我试图在图像上的确切位置放置一些单选按钮 我已将两者都放在 Div 中 但我不知道下一步该怎么做 这是我想要放置单选按钮的位置 红色圆圈 到目前为止 这是我的代码 center display block margin left auto
  • iPhone 上的 Chrome 溢出空白页面上的内容(仅在新选项卡上,而不是重新加载)

    在 iOS Chrome 上 正文会在没有内容的新选项卡或页面上溢出 但如果重新加载页面 问题就会得到解决 它会给位于底部的任何元素 绝对或固定 带来问题 这是重现问题的代码
  • 边界半径圆

    我有这个代码 span p margin 0 span background color red display inline block border radius 50 span p 25 p p 08 p span 我想在我的跨度上画
  • 有 CSS 父选择器吗?

    我该如何选择 li 元素是锚元素的直接父元素 举个例子 我的 CSS 应该是这样的 li lt a active property value 显然 有多种方法可以使用 JavaScript 实现此目的 但我希望 CSS Level 2 本
  • 导航栏折叠在 Bootstrap 中不起作用

    Bhanu pratap 解决了这个问题 在这个问题的末尾检查一下 我一直在遵循旧的路线来构建导航栏折叠 三明治 问题是课程中的页面顶部似乎有一个黑条 并且缩小页面时会出现导航栏 对我来说 我只需在左侧找到一个按钮 另外 当我缩小页面时 我
  • 如何仅使用CSS设置某个角的边框半径

    如上所示 我可以只给顶部部分而不给底部提供半径 或者有时给底部而不是顶部提供半径吗 有没有办法只给一个角提供边界半径 Like border radius top left top right bottom right bottom lef
  • Menu.Item 中的 Antd 自动换行

    可以在 Menu Item 组件中应用自动换行吗 示例不起作用
  • 监听浏览器宽度以进行响应式网页设计?

    我正在努力使我的网站适合移动设备 我想知道浏览器窗口的大小 以便当它比 728px 窄时我可以执行某些操作 而当它大于 728px 时我可以执行其他操作 这必须考虑到调整 PC 上的窗口大小以及在手机中从纵向模式更改为横向模式 如何才能做到
  • div Hello div div Howdy dere pardner div div div 我明白它的作用 但为什么叫这个名字both 什么是both mean 两者的意思是 一组两件事中的每一项 左 和 右 两件事
  • 删除特定数据表上的所有边框

    我需要使用 PrimeFaces 隐藏一个数据表的所有边框 而不是全部 我尝试了很多事情 但没有人奏效 有谁知道该怎么做 我已将以下样式 单独 应用于ui datatable class border hidden important bo
  • 理解 z-index:该元素如何出现在其父级同级元素的前面?

    为什么当我删除时红色 div 位于绿色 div 前面z index from wrapperRed 感觉像z index是沿着链条向上继承的 如果我改变z index将绿色 div 更改为 6 即使删除第一句中描述的行后 它仍保留在红色 d
  • html 电子邮件内的背景图像 css - Gmail 不支持

    我想向我的用户发送如下所示的带有背景图像 css 的 html 正文电子邮件 div style width 500px height 1000px background color black background image none
  • 将鼠标悬停在原点时会触发translateY()

    当您将光标移动到按钮底部时 是否可以无限期地不触发动画 它看起来是这样的 gif https i stack imgur com QwdHW gif and codepen https codepen io jaeyson pen GwwJ
  • 如何在其他div id的悬停中使用div显示块

    如何打开div悬停时标记href tag 这是我在悬停 href 标签上显示 div 标签的代码 Services is id of href tag Services is id of div tag Service hover Serv
  • 如何在Yii框架中向Form添加类?

    我在 Yii 中有一个表单 我想向该表单添加一个类
  • javascript 选择自定义光标 (svg)

    我正在动态地将光标更改为悬停时的本地 svg element on mouseover function this css cursor url svgs pointer svg 9 30 auto 工作正常 但我想选择该 svg 来操纵其
  • 具有 100% 高度行和 Internet Explorer 9 的表格

    我有以下示例 div style height 150px background color AAAAFF div
  • 主页(网格)上的缩略图现在显得模糊。如何纠正?

    我不知道这看起来是否愚蠢 但从早上开始我就无法纠正这个突然出现在我的博客网站上的错误www candidopinions in http www candidopinions in 我有一个网格视图模板 其中博客文章中的特色图像作为调整大小
  • css3按钮背景颜色无限过渡

    有没有办法仅使用 css3 使按钮的背景颜色从灰色渐变为蓝色 然后又回到灰色 一个很好的例子是默认操作按钮是可可 我知道这可以在 javascript 中完成 但我宁愿只使用 css 来完成此操作 您好 我已经通过 CSS3 动画制作了按钮

随机推荐

  • 升级windows10

    前言 windows7已经被微软停更了 所以说 有些用户想升级到windows10 这篇文章 将会教你升级windows10 下载windows10最新安装包 有一个网址 建议大家收藏好 windwos10最新版本官网下载 点进去链接 往下
  • Java中泛型 Class<T>、T与Class<?>、 Object类和Class类、 object.getClass() 和 Object.class

    From Java中泛型 Class
  • JavaScript Array 对象

    解释 Array 对象用于在变量中存储多个值 语法 var cars Saab Volvo BMW 第一个数组元素的索引值为 0 第二个索引值为 1 以此类推 数组属性 属性 描述 constructor 返回创建数组对象的原型函数 len
  • 数据库关系模型

    数据库关系模型和SQL 文章目录 数据库关系模型和SQL 安装 SQL语句 DCL DDL 关系 候选键 PRIMARY KEY 主键 Foreign KEY 外键 索引Index B 树 约束Constraint 数据库的三大完整性 域约
  • Lua(9) ——Cocos之_从C++过渡到Lua 文章不错 留下备查

    Lua 9 Cocos之 从C 过渡到Lua 唠叨 现在开始学习Lua了 开始用 Cocos Code IDE 开发cocos2dx的游戏了 可是呢 因为 cocos2dx v3 x 刚刚才出来不久 所以网上的教程大部分都是基于C 版本的
  • JNI 基础

    一 JNI 涉及的名词概念 1 1 JNI Java Native Interface 它是Java平台的一个特性 并不是Android系统特有的 实现Java代码调用C C 的代码 C C 的代码也可以调用Java的代码 1 2 二进制库
  • Spring AOP声明式事务

    Spring AOP声明式事务 Spring AOP声明式事务 传统spring配置 SpringBoot配置 Spring AOP声明式事务 Spring AOP声明式事务可以帮我们自动管理事务 在业务操作前后加入事务开始和提交 根据约定
  • vue :class的动态切换

    直接上代码 class index menu index menu index index 点击事件获取下标和获取不同的值 click menuClick index data return menu img menu index0 men
  • 高德地图-2D转换为3D

    手动添加 同时也需要手动修改倾斜度 var map new AMap Map container zoom 17 pitch 90 center 116 379391 39 861536 viewMode 3D 变成了3d 地图了 buil
  • 新能源锂电设备

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 锂电工艺 1 电芯一工段 2 电芯二工段 3 电芯三工段 4 pack生产 二 一工段设备简要介绍 1 合浆机 2 涂布机 2 辊压机 3 分切机 二 一
  • 利用TortoiseGit给github上面上传项目以及上传项目时经常遇到的错误解决

    我们本地有了一个项目 需要托管到github上面去 之前说过用git命令上传 今天说说如何利用TortoiseGit上传 1 假设我们的java工程放在目录E Test中 那么我们进入Test文件夹中 右键菜单点击 Git Create r
  • 关于protected权限的子类访问方式

    声明为protected权限的成员变量和成员方法 可以被同一包中的所有类和不同包中的子类访问 但是 在实际使用中 不同包中的子类要访问父类中protected权限的成员 却不是那么随意的调用 看几个例子 首先在ch13Test包中定义父类A
  • Mysql JDBC支持utf8mb4编码

    项目中需要在mysql中存储包含emoji表情的字段 使用utf8编码无法解决 因为mysql的utf8实现只有3字节 为此mysql在5 3 后加入了utf8mb4支持 完全兼容utf8 utf8mb4最多可用4字节存储一个字符 这样就可
  • hbase建表时region预分区的方法

    hbase建表时region预分区的方法 2015 06 05 13 43 866人阅读 评论 0 收藏 举报 分类 hbase 6 版权声明 本文为博主原创文章 未经博主允许不得转载 如果知道hbase数据表的key的分布情况 就可以在建
  • 【kafka性能测试脚本详解、性能测试、性能分析与性能调优】

    Kafka 性能测试 一 介绍 Apache Kafka 官方提供了两个客户端性能测试脚本 它们的存放位置如下 生产者性能测试脚本 KAFKA HOME bin kafka producer perf test sh 消费者性能测试脚本 K
  • 蓝桥杯 砝码称重 递归 解题报告

    5个砝码 用天平称重时 我们希望用尽可能少的砝码组合称出尽可能多的重量 如果只有5个砝码 重量分别是1 3 9 27 81 则它们可以组合称出1到121之间任意整数重量 砝码允许放在左右两个盘中 本题目要求编程实现 对用户给定的重量 给出砝
  • Java_开源框架_JPinyin汉字转拼音的Java开源库

    本博文为子墨原创 转载请注明出处 http blog csdn net zimo2013 article details 50039339 1 介绍 JPinyin是一个汉字转拼音的Java开源类库 在PinYin4j的功能基础上做了一些改
  • 计算24点

    题目描述 计算24点是一种扑克牌益智游戏 随机抽出4张扑克牌 通过加 减 乘 除 四种运算法则计算得到整数24 本问题中 扑克牌通过如下字符或者字符串表示 其中 小写joker表示小王 大写JOKER表示大王 3 4 5 6 7 8 9 1
  • VUE Element ui el-switch文字在开关里面显示

  • CSS经典布局 -- 圣杯布局 & 双飞翼布局

    文章目录 引言 圣杯布局 圣杯布局DOM结构 圣杯布局样式 圣杯布局总结 双飞翼布局 双飞翼布局DOM结构 双飞翼布局样式 双飞翼布局总结 总结 引言 圣杯布局和双飞翼布局都是比较经典的三栏布局 两种布局的页面效果基本相同 两种布局都是两侧