css中margin和padding的用法区别

谈到css中的margin和padding这两个我们几乎每个页面都会用到的属性,我们有必要先来了解一下margin和padding

1.什么是margin和padding

谈到margin和padding我们就有必要了解一下css盒模型 (Box Model)

根据上面的这张图我们可以很清晰的看到,margin用来设置外边距,padding用来设置内边距

啥是外边距和内边距,我们看下w3c上面的官方说明:

css外边距:

围绕在元素边框的空白区域是外边距。设置外边距会在元素外创建额外的“空白”。

设置外边距的最简单的方法就是使用 margin 属性,这个属性接受任何长度单位百分数值甚至负值

css内边距:

元素的内边距在边框和内容区之间。控制该区域最简单的属性是 padding 属性。

CSS padding 属性定义元素边框与元素内容之间的空白区域。

CSS padding 属性定义元素的内边距。padding 属性接受长度值百分比值,但不允许使用负值

2.margin和padding的区别

1.margin能设置负值,padding不能设置负值(这个我就不举例说明啦,控制台自己一试便知)

2.块级元素的垂直相邻外边距会合并,而行内元素实际上不占上下外边距。行内元素的的左右外边距不会合并。同样地,浮动元素的外边距也不会合并。

让我们看截图:

看上面的截图,我们给div1设置了margin-bottom:30px,div2设置margin-top:30px,最后呈现的效果两个div之间的间距只有30px

说明两个div之间的垂直外边距合并啦,数值一样的话就显示相同的,不一样的话,就显示数值大的那一个,比如截图三

注意点:给外层元素包裹的第一个子元素设置margin-top时,往往会影响到外层元素

我给body设置了一种奇怪的紫色,然后外层的wrap设置灰色,并没有给warp设置margin,但是给div1设置了margin-top:30px。

其实我只想要div1距顶部30px,但最后呈现的效果,整个wrap距顶部的距离都变成了30px。这是什么原因呢?额,是因为两个块元素的垂直外边距合并啦

如果不信的话,你给最外层的wrap设置margin-top:40px,最后呈现的效果就是整个wrap距离顶部40px。div1的margin-top和最外层wrap的margin-top合并啦~~~

所以为了避免这种情况,这种时候就要用到padding哦。因为padding不会合并哦,只会呈现相加的效果

备注:未完待续~~~~,有很多地方没有深入去剖析,是因为自己也只知道皮毛而已,后续会慢慢写出来,比如margin合并的时候计算规则(涉及到负数);什么情况下会出现margin折叠(也就是合并);如何避免垂直margin折叠等等……还需要去深入

时间: 2025-01-03 16:31:07

css中margin和padding的用法区别的相关文章

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

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

CSS中margin和padding的区别

本文导读:padding margin都是边距的含义,关键问题得明白是什么相对什么的边距.padding是控件的内容相对控件的边缘的边距.margin是控件边缘相对父空间的边距. 在CSS中margin是指从自身边框到另一个容器边框之间的距离,就是容器外距离.在CSS中padding是指自身边框到自身内部另一个容器边框之间的距离,就是容器内距离. 下面讲解 padding和margin常用的用法 一.padding 1.语法结构 (1)padding-left:10px; 左内边距 (2)pad

网页CSS中*{margin:0; padding:0;}有什么用

* 这东西叫"通配符"用来匹配页面上所有元素.*{margin:0; padding:0;} 像 2L 所说,body ,ul, li ,p,h1~h6,dd,dt 等--都有默认的margin 或padding值的,加上这句就可以删除浏览器这些默认值,方面后面的设置.(注:不是没它不行,只是方便而已) 你加上面那句后页面乱,那是当然的,因为你没加时是基于有默认的margin或padding 进行设置的,去掉了默认值,就当然会乱了.咋办?一,就是不加*{margin:0; paddin

Android中margin和padding标签的区别

Android中的margin标签和padding标签到底有什么区别,从以下这段简单的代码图和效果图片就可以看出效果来! 这是一张普通的ImageView载入的图片 下面代码段先加入的部分为android:layout_margin="20dp"得到的效果图片为,此处明显可以看出在图片上方和左侧留出了20个dp单位的空间. 再加入接下来的代码如下:android:paddingLeft="50dp",得到的效果图片为. 那么此处不难看出,margin指的是Image

CSS中margin和transform:translate()的区别

与margin-left实现居中不同的是,margin-left必须知道自身的宽高,而translate可以在不知道宽高的情况下进行居中,tranlate()函数中的百分比是相对于自身宽高的百分比,所以能进行居中. 原文地址:https://www.cnblogs.com/jaheding/p/11703303.html

margin和padding的用法与区别--以及bug处理方式

margin和padding的用法: (1)padding (margin) -left:10px; 左内 (外) 边距(2)padding (margin) -right:10px;   右内 (外) 边距(3)padding (margin) -top:10px; 上内 (外) 边距(4)padding (margin) -bottom:10px;  下内 (外) 边距(5)padding (margin) :10px;    四边统一内  (外) 边距(6)padding (margin)

border、margin、padding三者的区别

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

Java中PreparedStatement和Statement的用法区别

Java中PreparedStatement和Statement的用法区别 (2012-08-01 11:06:44) 转载▼ 标签: 杂谈   1. PreparedStatement接口继承Statement, PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象. 2.作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能.三种方法 execute. executeQuery

SQL语句Left join 中On和Where的用法区别

SQL语句如下: SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.id = 表2.id AND 表2.Name != 'ff'WHERE 表1.NAME != 'aa' 步骤1:返回笛卡尔积(SELECT * FROM 表1 CROSS JOIN 表2) 步骤2:应用ON筛选器(当前的条件为  表1.id = 表2.id AND 表2.Name != 'ff') 步骤3:添加外部行 这一步只对OUTER JOIN起作用,如果是LEFT JOIN会以左边的表为保留表,如果是