CSS Margin中5个经典布局解决方案,重难点知识,记得收藏复习

HTML5期末大作业:5G网络网页设计——3页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, 可满足大学生网页大作业和毕业网页设计需求!4.首页栏目数量不少于 3 个,各栏目能正确链接到相应栏目页面,同时各栏目页面能正确返回网站首页。5.网站内容具有原创性,内容充实,特效且运用合理。... 阅读详情

前几天我在面试前端开发同学的时候,有问到关于margin基础布局相关内容的过程中,发现很多同学基本解释不清楚,今天刚好有点时间就整理了一篇笔记出来。就以下5点在CSS布局经常会用到的经典布局解决方案。

  1. css中margin外边距(重叠)合并现象
  2. css中margin外边距穿透现象
  3. css中margin设置负值时的特性
  4. css经典3列自适应布局:圣杯布局
  5. css经典3列自适应布局:双飞翼布局

可以尝试动手试一试,有什么疑问 !可随时交流,有问必答 。

margin 纵向重叠(合并)问题

元素垂直排列时,第一个元素的下外边距与第二个元素的上外边距会发生合并,合并后的间距就是两者中最大的那个值。

1、以下代码中,item1与item4之间的间距是多少?

<style>
    .box{
        margin-top:10px;/*上外边距*/
        margin-bottom:20px;/*下外边距*/
        height: 20px;
        background-color:skyblue;
    }
</style>
<body>
    <div class="box">item1</div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box">item4</div>
</body>

答案:

解析:item1 与 item4 之间的间距为 3个下外边距大小+2个盒子高度=20*3+20*2=100px

2、以下代码中,item1与item4之间的间距是多少 ?

<style>
    .box{
        margin-top:10px;
        margin-bottom:20px;
        background-color:skyblue;
    }
</style>
<body>
    <div class="box">item1</div>
    <div class="box"></div>
    <div class="box"></div>
    <div class="box">item4</div>
</body>

答案: item1与item4之间间距为 20px

解析:因为中间两个box中没有内容也没有边框线,所以外边距会一直重叠合并,所以最后item1和item4之间距离只有一个下外边距的大小

3、以下代码中 container 、 item 、box与浏览器顶部的间距是多少 ?

margin 穿透问题

当一个元素包含在另一个元素中时,如果父元素没有设置内边距或边框把外边距分隔开,它们的上或下外边距也会发生合并。

<style>
    body{
        margin:0;
        padding:0;
    }
    .container{
        width:300px;
        height: 300px;
        background-color: salmon;   
        margin-top:100px;/*与浏览器顶部的距离*/
        border:5px solid blue;
    }
    .container .item{
        width:200px;
        height: 200px;
        background-color: skyblue;
        margin-top:50px;/*因为container中加了border边框,所以这里的外边距不会穿透合并*/
    }
    .container .item .box{
        width:100px;
        height: 100px;
        background-color: bisque;
        margin-top:10px;/*item没有加边框线,内边距和其它内容,所以外边距会发生穿透合并*/
        border:5px solid red;
    }
</style>
<body>
    <div class="container">
        <div class="item">
            <div class="box"></div>
        </div>
    </div>
</body>

答案: 100px 、155px、155px

解析:

.container与浏览器顶部距离是100px,

.item与浏览器顶部距离100px + 5px+50px=155px

.box与浏览器顶部距离:100px+5px+50px=155px

margin负值问题

margin-left 设置负值,元素向左移动

margin-right 设置负值,自身不受影响,右边元素向左移动

margin-top设置负值,元素向上移动

margin-bottom 设置负值,自身不受影响,下方元素向上移动

1、 两元素水平排列,左右外边距设置负值时

<style>
    body{
        margin:0;
    }
    .container{
        width:500px;
        height:200px;
        padding:20px 0px;
        border:5px solid #ddd;
        margin:0px auto;
    }
    .container .common{
        width:200px;
        height: 200px;
        float: left;
    }
    .container .box1{
        background-color: skyblue;
        /* margin-left:-100px; 元素自身向左移动,右边的元素也会受影响*/
        margin-right:-100px;/*元素自身不受影响,右边元素向左移动*/
    }
    .container .box2{
        background-color: tomato;
    }
</style>
<body>
    <div class="container">
        <div class="box1 common"></div>
        <div class="box2 common"></div>
    </div>
</body>

当.container .box1中margin-left:-100px;时,如:图1

当.container .box1中 margin-right:-100px;时,如:图2

当.container .box1设置margin-left:-100px;和margin-right:-100px时,如:图3

2、两元素垂直排列,上下外边距设置负值时

<style>
    body{
        margin:0;
    }
    .container{
        height: 500px;
        width: 200px;
        padding:0px 20px;
        border:5px solid #ddd;
        margin-top:100px;
    }
    .container .common{
        width:200px;
        height: 200px;
    }
    .container .box1{
        background-color: skyblue;
        /*margin-top:-100px;元素向上移动,下方元素也会受影响*/
        margin-bottom:-100px;/*自身不受影响,下方元素向上移动*/
    }
    .container .box2{
        background-color: rgba(0,0,255,0.5);
    }
</style>

<body>
    <div class="container">
        <div class="box1 common"></div>
        <div class="box2 common"></div>
    </div>
</body>

当.container .box1中margin-top:-100px时,如:图 1

当.container .box1中margin-bottom:-100px时,如:图 2

当.container .box1中同时设置margin-top:-100px; 和margin-bottom:-100px;时,如:图 3

3、经典布局:圣杯布局

这种布局的优点:

中间一栏内容最重要,最先加载和渲染,同时对搜索引擎优化最利。

两边内容固定,中间内容自适应

<style>
    body{
        margin:0;
        /*核心代码*/
        min-width: 650px;/*当页面宽度不够时,出现滚动条而不会造成布局错乱*/
    }
    .clearfix::after{
        display: block;
        content: "";
        clear: both;
    }
    .fl{/*核心代码*/
        float:left;/*三个盒子一定要添加浮动*/
    }
    .header{
        height: 100px;
        background-color: tomato;
    }

    .container{
        padding-left:200px;/*左边预留200px位置  用来放left*/
        padding-right:250px;/*右边预留200px位置  用来放right*/
    }
    .container .center{
        width:100%;/*自适应container的宽度,实现自适应缩放*/
        height: 500px;
        background-color: skyblue;
    }
    .container .left{
        width:200px;
        height: 500px;
        background-color:cadetblue;
        /*核心代码*/
        margin-left:-100%;/*盒子向左移,因为加了浮动,所以会移动到上一行的最左边*/
        position: relative;/*利用相对定位,再把盒子往左移200px就占据了最左边预留的200px空间*/
        left:-200px;
    }
    .container .right{
        width:250px;
        height: 500px;
        background-color:aquamarine;
        /*核心代码*/
        margin-right:-250px;/*加上这个代码,相当于right没有一点宽度,就会移动到上的最右边位置*/
    }
    .footer{
        height: 100px;
        background-color: #000;
    }
</style>
<body>
    <div class="header">头部</div>
    <div class="container clearfix">
        <div class="center fl">中间</div>
        <div class="left fl">左边</div>
        <div class="right fl">右边</div>
    </div>
    <div class="footer">底部</div>
</body>

4、经典布局:双飞翼布局

这种布局的优点:

中间一栏内容最重要,最先加载和渲染,同时对搜索引擎优化最利。

两边内容固定,中间内容自适应

<style>
    body{
        margin:0;
    }
    .fl{/*核心代码*/
        float: left;/*一定要添加浮动*/
    }
    .main{
        background-color: #ddd;
        width:100%;
    }
    .main .main-content{
        background-color: skyblue;
        height: 300px;
        /*核心代码*/
        margin:0 200px 0 200px;/*盒子左右两边余留200px,分别给left和right来占用*/
    }
    .left{
        width: 200px;
        height: 300px;
        background-color: coral;
        /*核心代码*/
        margin-left:-100%;/*往左移动浏览器的宽度,最后移动到上一行的最左边*/
    }
    .right{
        width: 200px;
        height: 300px;
        background-color: tomato;
        /*核心代码*/
        margin-left:-200px;/*相当于自身宽度为0了,因为加了浮动,然后就显示在了上一行的最右边*/
    }
</style>
<body>
    <div class="main fl">
        <div class="main-content">中间</div>
    </div>
    <div class="left fl">左边</div>
    <div class="right fl">右边</div>
</body>

为帮助到一部分同学不走弯路,真正达到一线互联网大厂前端项目研发要求,首次实力宠粉,打造了《30天挑战学习计划》,内容如下:

HTML/HTML5,CSS/CSS3,JavaScript,真实企业项目开发,云服务器部署上线,从入门到精通

  • PC端项目开发(1个)
  • 移动WebApp开发(2个)
  • 多端响应式开发(1个)

共4大完整的项目开发 !一行一行代码带领实践开发,实际企业开发怎么做我们就是怎么做。从学习一开始就进入工作状态,省得浪费时间。

从学习一开始就同步使用 Git 进行项目代码的版本的管理,Markdown 记录学习笔记,包括真实大厂项目的开发标准和设计规范,命名规范,项目代码规范,SEO优化规范

从蓝湖UI设计稿 到 PC端,移动端,多端响应式开发项目开发

  • 真机调试,云服务部署上线;
  • Linux环境下 的 Nginx 部署,Nginx 性能优化;
  • Gzip 压缩,HTTPS 加密协议,域名服务器备案,解析;
  • 企业项目域名跳转的终极解决方案,多网站、多系统部署;
  • 使用 使用 Git 在线项目部署;

这些内容在《30天挑战学习计划》中每一个细节都有讲到,包含视频+图文教程+项目资料素材等。只为实力宠粉,真正一次掌握企业项目开发必备技能,不走弯路 !

过程中【不涉及】任何费用和利益,非诚勿扰 。

如果你没有添加助理老师微信,可以添加下方微信,说明要参加30天挑战学习计划,来自头条号!老师会邀请你进入学习,并给你发放相关资料

30 天挑战学习计划 Web 前端从入门到实战 | arry老师的博客-艾编程

VTK的编译和部署,配合c++和visual studio2022,VTK开发环境的配置 在官网选择最新的版本下载之后进行解压,然后再里面创建build目录,方便后面使用cmake进行编译。 阅读详情

相关推荐

【PVE9.1使用教程】

弹窗代码在 /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js 中,通过 void({…}) 可以让弹窗部分代码不执行,实现删除弹窗的效果。安装过程这里不再赘述,记得不要使用网络版本进行安装,安装的时候不要使用镜像,否则安装过程会很卡。把下面的配置添加进去,允许同一个网段下的所以主机访问/mnt/pve_share文件夹。可以自己搭建也可以去咸鱼购买,本人在咸鱼上面购买的,暂时可用。也可以使用下面的命令,版本号需要自己查看最新的版本号。

weixin_42950821的博客 960

margin值穿透及合并问题

如上图,只给大盒子设置了宽高,然后给小盒子设置宽高在设置margin值时,下间距和左右间距不影响,但是上间距导致大盒子随着一起掉下来了。外边大盒子不设置padding-top或者border-top,只给小盒子设置margin-top,外边大盒子会随着小盒子下掉。

weixin_44358189的博客 383

手把手教你用示波器抓取MIPI D-PHY波形:从LP11到HS Burst的完整信号解析

本文详细介绍了使用示波器精准捕获MIPI D-PHY信号的关键技巧,包括探头选择、示波器参数设置、信号状态解析及高级触发配置。通过实战案例和波形分析,帮助工程师快速识别从LP11到HS Burst的各种信号状态,解决常见的信号完整性问题,提升调试效率。

weixin_30471561的博客 563

1、7外边距margin

本文仅仅简单介绍了margin表示盒子与盒子之间的边距,称为外边距。

qq_62865634的博客 1397

转子动力学 | 临界速度与稳定性分析

本文深入探讨了转子动力学中的核心问题——临界速度与稳定性分析。临界速度是旋转机械发生共振的危险转速,通过模态分析和坎贝尔图可进行预测。文章还剖析了油膜涡动等稳定性问题,并结合ANSYS仿真案例,详细阐述了从建模、分析到设计优化的完整工程实践流程,为旋转机械的可靠设计与安全运行提供关键指导。

weixin_29313239的博客 518

Cyclone MAX独立编程实战:从硬件接口到SAP镜像的嵌入式烧录指南

在嵌入式系统开发与量产中,固件烧录是连接软件与硬件的关键环节。其核心原理是通过特定的调试接口(如JTAG、BDM)和编程算法,将编译后的机器码写入目标处理器的非易失性存储器。这项技术的价值在于确保软件在硬件上的可靠部署,是产品功能实现和质量保证的基础,广泛应用于汽车电子、工业控制等对一致性与可靠性要求极高的领域。独立编程器(Stand-Alone Programmer)在此基础上,通过集成存储、交互界面和任务逻辑,实现了脱离PC的自动化操作,极大提升了产线效率和现场维护的便捷性。本文以Cyclone MAX

weixin_34038293的博客 467

如何解决margin-top穿透现象!?

margin-top 又好用 又烦人

qq_44161703的博客 518

数字IC后端PPA优化实战:Innovus中Timing一致性策略与Module Region布局技巧

本文深入探讨了数字IC后端设计中PPA优化的核心挑战,重点解析了Innovus与PrimeTime之间Timing不一致的根本原因。通过实战案例,详细介绍了在Innovus中设置Timing Margin、Derate以及RC Scale Factor等关键策略,以校准时序视图。同时,文章分享了利用Module Region进行物理布局规划的技巧,将关键模块约束在最优区域,并结合Group Path等进阶方法,有效提升时序收敛效率与PPA结果的可预测性。

f9g0h的博客 2690

margin重叠,塌陷,穿透问题的解决

margin塌陷问题解决 (1)为父盒子设置border,为外层添加border后父子盒子就不是真正意义上的贴合 (可以设置成透明:border: 1px solid transparent) (2)为父盒子添加overflow: hidden; (3)为父盒子设定padding值; (4)为父盒子添加position:fixed; (5)利用伪元素给子元素的前面添加一个空元素 .box1:before{ content:""; overflow:hidden; }

weixin_48181168的博客 2239

Unity WebView 插件⭐️(十八)3D WebView 原生2D模式 — Native 2D Mode

Unity中的 浏览器插件:3D WebView,利用好该插件我们可以自己使用Unity打造出一个自定义的多样化浏览器。可以用于2D显示,也可以用于3D空间场景中使用,在PC端、手机端和VR设备等都可以有一个非常好的效果。一起来浏览器插件:3D WebView的专栏学习使用吧!

努力前行,总会成为自己心中的那道光 7642

微搭低代码实现用户登录及注册功能

在小程序开发中,我们可以拿到微信用户的openid,openid可以作为用户的唯一标识,在查询数据的时候可以进行数据过滤实现查询自己提交的数据。那微搭中是否也有openid这个概念,可以获取用户自己提交的数据呢? 答案是肯定的,那要怎么去做呢?思路是先创建一个数据源方法,在数据源中返回openid,然后低代码中可以调用数据源的方法并且赋值给全局变量,这样在后续的业务中从全局变量就可以获取openid了,方便做数据权限的控制。 为了实现这个目的,我们从创建数据源开始。 创建数据源 我们先创建一个用户管理的数据

低代码布道师的博客 3000

外边距、内边距以及浮动相关

一、margin是外间距,可以设置一个容器外面的缝隙 1、简写 margin:20px; 上下左右 margin:20px 30px; 上下 左右 margin:20px 30px 40px; 上 左右 下 margin:20px 30px 40px 50px; 上右下左 2、单独设置 margin-top:20px; 外上间距 margin-bottom:20px; 外下间距 margin-left:20px; 外左间距 margin-right:20px; 外右间距

weixin_43507887的博客 1471

Vue - 解决报错 Error: Cannot find module ‘XXX\@vue\cli-service\bin\vue-cli-service.js‘(vue项目编译运行出错,启动失败)

vue报错,Error: Cannot find module ‘@vue\cli-service\bin\vue-cli-service.js‘,vue2项目启动报错,vue3项目运行出错,vue执行npm run serve报错,找不到@vue/cli-service模块,vue项目关于:Error: Cannot find module ‘D:\@vue\cli-service\bin\vue-cli-service.js‘的解决方案,vue项目跑不起来了,Vue项目报错,跑项目报错Cannot fi

🏆 前端领域优质创作者 3115

深入解析 StudyHub学习中心:基于HarmonyOS ArkTS API 24 StudyHub 采用了经典的“状态提升 + 子组件分发“模式,主组件 StudyApp 持有所有应用级状态

在 HarmonyOS NEXT 正式商用的背景下,ArkTS 作为鸿蒙生态的官方应用开发语言,正在从传统的命令式 UI 开发范式向声明式 UI 范式全面迁移。ArkUI 框架以组件化、声明式、状态驱动为核心特征,要求开发者以"描述 UI 应该是什么样"而非"一步步操作 UI 怎么变"的思维方式构建界面。

qq_17776737的博客 185

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

行内间隔问题

&lt;!DOCTYPE html&gt;&lt;html lang="en"&gt;&lt;head&gt;    &lt;meta charset="UTF-8"&gt;    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;    &

大数据-攻城狮 419

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

html 让元素下移,Html/CSS margin-top穿透传递(子元素设置margin-top无效,父元素下移)...

logo1.出现现象给子元素设置margin-top后子元素和父元素之间没有间距,反而父元素和其他元素之间有了间距,和直接设置到父元素上效果一样。这样的现象叫margin传递。现象是父元素偏移,但并不是会把这个值设置给父元素,在元素检查的时候父元素的margin并没有改变,margin还是在子元素上,只是显示不符合预期。穿透只出现在上下margin属性,左右margin属性不会有穿透现象。2.出现...

weixin_42518035的博客 636

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

前端常见案例

3. 使用padding-top代替margin-top,使用父元素的padding-top代替子元素的margin-top,父元素的高度减去相应的padding-top的值。2. 给父元素添加overflow:hidden 弊端:元素内容溢出会隐藏,设计一些定位展示的效果时,没办法显示。2. 给其中一个元素添加父元素,并且给父元素添加overflow:hidden。1. 给父元素添加border 弊端:border会占据空间。1. 只给其中的一个元素设置margin值。

weixin_71949204的博客 681

css:边距

4、添加属性:overflow: hidden;-------->偏方。添加一个属性:box-sizing: border-box;3,给父元素添加一个属性–>解决文本溢出。1、内边距-----会改变盒子大小。2,给父元素一个padding值。1,给父元素添加边框。

chen_zhi_yu的博客 295

【牛腩新闻】——css中 *margin-bottom:20px!important

css中 *margin-bottom:20px!important;解释下这里的*及!important的作用*的作用:*是区分浏览器兼容性的,写在一条样式里可以区分IE6、IE7和别的浏览器的不同,如:.bor { border:20px solid green; *border:20px solid red ; padding: 30px;width :300px;} 绿色边框的样式写在前面...

严文文 Chris 758

css中div属性及类型

文档流 首先谈一下文档流: 浏览器会根据 元素的排列方式 块元素 从上到下排列行元素和行内块 从左到右排列 如果空间不足 自动换行我们称为流式布局 有了文档流,我们知道了div标签属于标准的块元素,而盒模型又分为标准盒模型和怪异盒模型 盒模型 1.标准盒模型 盒模型(box moldel),是w3c规定一个浏览器如何渲染,显示一个元素,根据元素的种类分为块级元素盒模型和行内元素盒模型 盒子组成 = content+padding+border+margin 补充:父盒子宽高设置,子盒子未设置宽高时子盒

qq_52648305的博客 2070

CSS(二)元素的margin或padding对布局的影响

div默认的padding和margin并不是0px, 参看下面的文章 所以在使用百分比布局时如果同一行的元素有默认的margin或padding的话,总百分比如果到了100%会跑到下一行。可以适当小一点,达到98%左右或更小,或者清除元素的margin和padding。 ...

qq_47627886的博客 386

[css] margin 为负值产生的影响和常见布局应用

margin 为负值产生的影响和常见布局应用 原文链接: margin为负值产生的影响和常见布局应用 前言 前几天去了一家公司面试前端,问了我双飞翼的布局,说实话,之前真没好好研究过实现原理。 面试回来,查了下,主要都是用到了 margin-left 负数产生的效果。 所以今天整理些 margin:负数会对哪些元素或者定义产生影响、margin 为负值在 web 布局中的应用做下总结。(不能说最全...

weixin_36210698的博客 2459

7种web前端页面css(css3)布局方式,不知道最后两种方式的就亏大了

前端页面常见的布局方式有以下几种 1、文档流 --内联元素从左往右排列,块级元素从上往下排列。 2、float(浮动)布局 3、position (定位)布局 4、display inline-block (行向)布局 5、margin 布局 6、display:flex 弹性布局 7、display:grid 栅格布局

qq_34171965的博客 3506

通过bootstrap4框架制作商城网页

这是整个页面显示出来的效果 下面来解析: 最上面显示的是导航栏用到椭圆形头像,下拉列表,文本框,button里设置font-awesome图标,因为bootstrap4没有自带图标了,所以我们就用font awesome。Font Awesome 品牌图标 | 菜鸟教程 <nav class="navbar navbar-expand-sm bg-dark navbar-dark fixed-top" > <img src=...

m0_55366658的博客 3975

【css】最全布局总结

布局就是控制元素位置、大小,常见布局有 标准流布局、弹性布局、表格布局、流体布局、网格布局、混合布局、定位布局、浮动布局等,我会从文档流,容器,效果这些角度介绍

qq_45406325的博客 1万+

css经典布局

css经典三栏布局、圣杯布局、双飞翼布局、flex布局

weixin_42405477的博客 596
上一篇: 54个CSS重难点整理,12-24篇,进阶高薪必需要掌握的知识点
下一篇: CSS相对定位3大应用场景5个实战应用案例详解
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾编程前端技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值