关于margin:-10000px;padding:10000px;的理解

原文链接:http://javakid.blog.163.com/blog/static/191061094201221414057146/

内外补丁负值法是指通过内外补丁的设置来解决一些我们通常方法不能实现的效果。例如:可以通过改变盒模型的样式来使几列div由内容撑开高度但几列div与最高的一栏等高的问题。但是为什么会出现这样的情况呢?先来充分理解一下margin和padding;说的直白一些margin就是模块与模块之间的间隙,而padding是边框与内容之间的间隙。当设置padding-bottom:10000px;margin-bottom:-10000px;是先通过padding-bootom增大盒模型的高度,再通过margin-bottom抵消盒模型的高度。此时运用的是padding可以撑开外层标签而margin不用来撑开外层标签。即当padding-bottom:10000px时撑开外层标签的高度增加10000px,外层标签用overflow:hidden;隐藏掉多余的高,这样可以让高度与最高的那一栏对齐;而margin关乎模块布局,margin:-10000px可以抵消掉padding撑开的盒子使布局能够从内容部分开始。这样再看这道题:

题一:两栏div并列,一栏固定宽,另一栏div自适应屏幕大小的一道题;

这只需要给一栏设定宽另一栏不设宽设margin-left的负值大小为另一栏的宽度即可。这不需要内外补丁相互抵消的方法,这里要讲的是另外两道题。

题二:两栏div并列,左栏内容撑开宽度,右栏宽度自适应屏幕大小。做题时脑袋晕晕的,一直转在第一题上,结果就很悲剧了。下来听到同学说起思路恍然惊醒。

思路是:左栏以内容撑开宽度,右栏设定margin-left:-10000px;padding-left:10000px;结果就是我们所需要的了。

题三:三栏布局内容撑开高度但三栏以最高的一栏对齐;

思路与题二相同。设定margin-bottom:-10000px;padding-bottom:10000px;

想想为什么开始做题时没有做出来呢?究其原因还是因为我对margin负值来抵消padding的原理不太理解。所以在运用的时候思路打不开。而内外补丁负值法就是源于对盒模型和margin、padding的深刻理解的基础上;否则我们只能知其然而不知其所以然,这样灵活运用就更不可能了。所以以后在做一个效果的时候不仅仅是掌握解决问题的方法,更要明白这种方法所运用的原理,或是思想。

时间: 2024-10-07 06:00:51

关于margin:-10000px;padding:10000px;的理解的相关文章

HTML CSS——margin和padding的学习

你在学习margin和padding的时候是不是懵了,——什么他娘的内边距,什么他娘的外边距.呵呵呵,刚开始我也有点不理解,后来通过查资料学习总算弄明白了,现在我来谈一下自己对margin和padding的理解: 一.什么是边距 CSS中的边距指的是当前元素border与周围其它元素border的距离(或者称为空间). 二.什么是内边距,什么是外边距 代码2-1: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" &

HTML CSS——margin与padding的初学

下文引自HTML CSS——margin和padding的学习,作者fengyv,不过加入了一些个人的看法. 你在学习margin和padding的时候是不是懵了,——什么他娘的内边距,什么他娘的外边距.呵呵呵,刚开始我也有点不理解,后来通过查资料学习总算弄明白了,现在我来谈一下自己对margin和padding的理解: 一.什么是边距 CSS中的边距指的是当前元素border与周围其它元素border的距离(或者称为空间). 二.什么是内边距,什么是外边距.(用代码来说明) <!DOCTYPE

Android之Margin和Padding属性及支持的长度单位

做了个小软件后,终于把Margin和Padding弄清楚了,现总结如下: Android的Margin和Padding跟Html的是一样的.如下图所示:黄色部分为Padding,灰色部分为Margin. 通俗的理解 Padding 为内边框,Margin 为外边框 对应的属性为: 1 android:layout_marginBottom="25dip" 2 android:layout_marginLeft="10dip" 3 android:layout_mar

使用CSS中margin和padding的基础和注意事项

在CSS中,margin和padding是页面布局的主要属性,如何灵活有效使用对于基于DIV+CSS设计网页方法是非常重要的,笔者经常使用且经常误使用,所以根据经验和网上资料整理出切合自己的内容,以备以后使用. 一.首先了解CSS盒模型 Box Model 通过这个CSS盒模型模型就很容易理解Margin.padding和Border.. W3C定义的盒模式如下: width和height定义的是Content部分的宽度和高度,padding border margin的宽度依次加在外面.背景会

浅谈Margin和Padding值设置成百分数的布局

转自:问说网http://www.uedsc.com/discussion-margin-and-padding-values.html Margin和Padding是我们在网页设计经常使用到的CSS样式,他们分别是间距和填充,一个作用于盒子外面,一个作用于盒子里面,默认的情况下,这些属性的值都会被计算在盒子的面积里面,在网页开发中的流体布局或者是响应式布局中,经常将Margin和Padding设置成百分数,那么到底这个百分数是多少,他是如何计算的呢? Margin 假设我们有这样的一段HTML

border、margin、padding三者的区别

当你写前端的时候,肯定会遇到border,margin和padding这几个单词. 如: padding: 16px 0; margin: 0 10px; 在CSS中,他们是表示距离的东西,很多人刚开始搞不清楚他们的区别,我也是.在网上找到一个很好的说明他们之间的区别的示意图,border.margin.padding三者的区别. 边框属性(border)用来设定一个元素的边线. 边距属性(margin)是用来设置一个元素所占空间的边缘到相邻元素之间的距离. 间隙属性(padding)是用来设置

margin和 padding 以及 float :left和float :right的介绍

1.margin和padding的介绍 margin是外边距padding是内边距,用CSS时首先要做的就是把所有标签的margin和padding清空.这样更容易控制布局和兼容浏览器. p li等标签都是默认有margin的 清空方法:*{margin:0; padding:0;}  *是通配符,表示所有标签元素. CSS把每个元素视为一个“Box(盒子)”,通过排列大大小小的多个“盒子”,完成页面的呈现. 关键是记着盒子模型其实是“一个套一个”的多个矩形,知道“Border”.“Paddin

89组合margin、padding、float、clear问题

有关css外边距margin和内边距padding样式,简而述之,顺时针方向旋转,按照上右下左读取,margin-top:/*距离上边距*/margin-right:/*距离右边距*/margin-bottom:/*距离底边距*/margin-left:/*距离左边距*/:数值排列4-1,比方说margin:10px 11px 12px 13px;/*上右下左*/margin:10px 20px 30px;/*上下不一样,左右一样*/margin:10px 20px;/*上下10px 左右20p

Qt qss一些伪装态,以及margin与padding区别

伪状态    描述 :checked    button部件被选中:disabled    部件被禁用:enabled    部件被启用:focus    部件获得焦点:hover    鼠标位于部件上:indeterminate    checkbox或radiobutton被部分选中:off    部件可以切换,且处于off状态:on    部件可以切换,且处于on状态:pressed    部件被鼠标按下:unchecked    button部件未被选中 子部件    描述::down-