UCloud云社区 - UCloud中立云计算服务商
  • 社区首页
  • 文章专栏
  • 最新活动
  • 产品中心
  • 算力社区
登录
我要发布
  1. 提问题
  2. 写文章
控制台
  • 首页
  • 产品
  • 方案
  • 专栏
  • 问答
  • 云学院
  • 技术专家
  • 最新活动
登录

资讯专栏INFORMATION COLUMN

上云采购季!| 2核2G4M爆款云服务器低至59元/年,更有多台、长期优惠,快来选购!

立即前往
首页/文章专栏/CSS中的负边距

CSS中的负边距

cocopeak 发布于2019-08-29 10:57 / 1736人阅读

摘要:之后仔细的百度了一下,发现了这么一个叫做内外补丁负值法的东西。在这个解决方案中,又涉及到了传说中的负。深入研究之后又发现了圣杯布局双飞翼布局等很多示例,确实要好好研究负边距这个东西了。相关推荐那些年,奇妙的圣杯与双飞翼,还有负边距

2015-04-22 时候写的老文,因为希望引用所以拿了出来。

那天被一个同学问了一个问题,三列的div,要求父div的高度和三个div的高度都和三个中字数最多,也就是高度最高的那个一样高。试了试才发现确实有问题。在网上查到了解决方案,运用了一些很奇葩的代码,贴上来和大家分享。点击这里查看demo。

之后仔细的百度了一下,发现了这么一个叫做内外补丁负值法的东西。不过百度内外补丁负值法,出来的都是同一篇文章,感觉不是一个真正的术语。还是把这篇文章贴出来,有兴趣的同学可以看看。

在这个解决方案中,又涉及到了传说中的负margin。之前在阿里笔试也有一个三栏布局的题,其中一个解决方案用的也是左右的负margin。深入研究之后又发现了圣杯布局、双飞翼布局等很多示例,确实要好好研究负边距这个东西了。

之后参考了CSS布局奇淫巧计之-强大的负边距这篇文章,里面做了实际的demo,总结成一点就是,css中盒子真正的边界,是由margin决定的,而且margin可以很霸气的通过负值来压缩实际宽度(padding不允许负值)。

有了这一点认识之后,很多问题都解决了。就比如说上边那个demo,通过padding-bottom:10000px;创建了一个足够高的盒子,再通过margin-bottom:-10000px;抵消这部分盒子在文档流中的实际占位(但是实际还是存在的,所以就会按照第一个的高度等高),再给父级元素加上overflow:hidden,去掉多余的高度,效果就实现了。

同时,在上边那篇文章里还解决了一个布局的问题,就是多列间有margin,但是两边没margin的问题(听不懂我中文的直接点这里看demo吧,我知道自己说的不好)。之前一直是循环到一行最后一个的时候给加上一个class,现在可以免了,就比如我在demo里用margin-right:10px;给li之间创建一个间隔,然后用marigin-rignt:-10px;强行加宽ul,使四个li能在一行,但是ul外content的宽度设为width:830px;(4200px+310px;),这样就可以正确的居中了。

之后简单说下圣杯布局和双飞翼布局吧,他们主要是为了解决三栏问题。三栏问题的研究可以看看张鑫旭老师的博客文章我熟知的三种三栏网页自适应的布局方法。然后以双飞翼举例吧,他的DOM结构是这样的。

    

把main放在最前面,然后对.sub(也就是left)使用margin-left:100%;强行移动到左边;对.extra(也就是right)使用margin-left:(right的宽度);强行移动到右边。由于右边的栏会盖住main的内容,所有就直接给main里加上子div,通过给子div加上margin-right防止重叠保证正常显示。如此煞费苦心的布局目的只有一个,就是让浏览器先渲染main,实现主内容先被加载的效果。圣杯布局的话,印象中就是把.main-content的margin换成了.main的padding,目的都是一样的。

再多说一点关于三栏布局的东西,就是在利用浮动布局来实现三栏的时候,应该记住,在DOM里的顺序,是左浮动的div最前,右浮动的div中间,中间的在最后,不然就会出问题。千万不要想当然觉得中间的div在DOM的中间,然后两边div分别float。因为中间的div默认要占一行,按理说右边的会先被挤下去,再float,所以他就上不来了,实现不了我们想要的效果。如果没有把中间的div放到第一个位置的需求的话,还是建议用浮动的方法做三栏布局,简单易用成本低。

自此也算是总结了负边距的一些效果,有时候想想的话,要是pading支持负值的话又会有什么样的奇怪方案出现呢?

== 2015-11-27更新 ==

今天见到了一个奇怪的面试题,用三个div实现一条彩虹,同样使用了负边距。

相关推荐:

那些年,奇妙的圣杯与双飞翼,还有负边距

GPU云服务器 云服务器 负边距 边距 内边距 DIV边距

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/111324.html

  • 上一篇:切图崽的自我修养-合理组织CSS结构
  • 下一篇:使用CSS处理标题过长,自动截断,兼容响应式布局

相关文章

  • 那些年,奇妙的圣杯与双飞翼,还有负边距

    摘要:奇妙的圣杯与双飞翼相信很多人和我在学习前端差不多的时候就听说过了圣杯布局与双飞翼布局。他往前移动之后,文档流也会跟着移动元素宽度负边距负边距可以增加元素的宽度,对于没有的元素,负边距可以加宽他们。 [TOC] 没错,题目就是模仿《那些年,我们一起清除过的浮动》而来的。 奇妙的圣杯与双飞翼 相信很多人和我在学习前端差不多的时候就听说过了圣杯布局与双飞翼布局。关于取名无非是觉得长得像圣杯,...

    tianhang 2019-08-30 12:50 评论0 收藏0
  • margin-top 外边距合并

    摘要:中,水平边距永远不会重合。垂直边距可能在特定的框之间重合常规流向中两个或多个块框相邻的垂直边距会重合。结果的边距宽度是相邻边距宽度中较大的值。如果出现负边距,则在最大的正边距中减去绝对值最大的负边距。绝对和相对定位的框的边距不重合。 这是一个早以前研究过的东西,今天java开发说起了这个,顺带记录一下。这里有一行代码,很简单的一段代码 #div1{ background:#0...

    shmily 2019-08-23 17:53 评论0 收藏0
  • CSS布局十八般武艺都在这里了

    摘要:清单一些说明注意文档的书写顺序,先写两侧栏,再写主面板,更换后则侧栏会被挤到下一列圣杯布局和双飞翼布局都会用到。可以通过设置的属性或使用双飞翼布局避免问题。双飞翼布局不用设置相对布局,以及对应的和值。 本文首发于知乎专栏:前端指南 CSS布局 布局是CSS中一个重要部分,本文总结了CSS布局中的常用技巧,包括常用的水平居中、垂直居中方法,以及单列布局、多列布局的多种实现方式(包括传统的...

    includecmath 2019-08-29 12:17 评论0 收藏0
  • CSS概念【记录】

    摘要:语法规则注释层叠优先级继承值块格式化上下文盒模型层叠上下文可替换元素外边距合并包含块视觉格式化模型布局模式语法属性值声明声明块规则规则集规则规则一个语句定义样式表使用的字符集告诉引擎引入一个外部样式表嵌套规则如果满足媒介查询的条件则条件规则 1、CSS语法 2、@规则 3、注释 4、层叠 5、优先级 6、继承 7、值 8、块格式化上下文 9、盒模型 10、层叠上下文 11、可替换元素 12、...

    番茄西红柿 2019-04-23 11:55 评论0 收藏0
  • CSS 布局经典问题初步整理

    摘要:布局经典问题初步整理标签前端本文主要对布局中常见的经典问题进行简单说明,并提供相关解决方案的参考链接,涉及到三栏式布局,负,清除浮动,居中布局,响应式设计,布局,等等。 CSS 布局经典问题初步整理 标签 : 前端 [TOC] 本文主要对 CSS 布局中常见的经典问题进行简单说明,并提供相关解决方案的参考链接,涉及到三栏式布局,负 margin,清除浮动,居中布局,响应式设计,Fl...

    Amos 2019-08-29 12:36 评论0 收藏0

发表评论

登陆后可评论

0条评论

cocopeak

男|高级讲师
我要关注 我要私信

TA的文章

阅读更多
  • 优点知识Kubernetes网络训练营

    阅读 2920·2021-11-22 15:11

  • LiCloud:香港CMI/香港CN2+BGP/华为云香港服务器;E3-1230v2/16GB内存/

    阅读 3641·2021-09-28 09:43

  • AngularJS自定义表单验证

    阅读 2964·2019-08-30 13:05

  • 如何把一个项目从Git本地仓库上传到github上

    阅读 3500·2019-08-30 11:18

  • HTML与CSS中的,链接与图像个人分享

    阅读 1514·2019-08-29 16:34

  • 微信小程序过长文本折叠效果的探索

    阅读 1433·2019-08-29 13:53

  • 巧用CSS遮罩

    阅读 2997·2019-08-29 11:03

  • CSS中的负边距

    阅读 1737·2019-08-29 10:57

最新活动
云服务器
GPU云服务器
阅读需要支付1元查看
UCloud (优刻得科技股份有限公司)

UCloud (优刻得科技股份有限公司)是中立、安全的云计算服务平台,坚持中立,不涉足客户业务领域。公司自主研发IaaS、PaaS、大数据流通平台、AI服务平台等一系列云计算产品,并深入了解互联网、传统企业在不同场景下的业务需求,提供公有云、混合云、私有云、专有云在内的综合性行业解决方案。

  • UCloud与云服务

    公司介绍

    加入我们

    UCan线上公开课

    行业解决方案

    产品动态

  • 友情链接

    GPU算力平台

    UCloud私有云

    SurferCloud

    工厂仿真软件

    AI绘画

    Wavespeed AI

  • 社区栏目

    专栏文章

    专题地图

  • 常见问题

    安全中心

    新闻动态

    媒体动态

    客户案例

    公告

  • 优刻得

    扫扫了解更多

Copyright © 2012-2025 UCloud 优刻得科技股份有限公司|沪公网安备 31011002000058号| 沪ICP备12020087号-3|
<