margin background_margin自述

1aa7ab3bc63d968c2fb5844656c7bb83.png
hello,大家好我是margin,经常有小伙伴把我跟我的兄弟padding搞混,下面我就详细的说一下我的主要工作,让大家能够明白我到底是做什么的。

通常情况下,我会帮助一些元素让他们之间产生距离,先来看一段代码:

<!-- HTML结构 -->

a525d39d2c06586b9b08a67234f4e474.png

两个写好的DIV元素会从上到下显示,就是上图的效果,在这里我们会发现a的下方和b的上方紧紧挨在一起的,如果想让他们分开一些,可以给a添加一个margin

<

047f42ba26f43e3234e209988e042a91.png

为什么会变成这个样子了呢,我们本来只想让下方有距离就可以了,但是怎么感觉不一样呢?这是因为我的写法是有很多种的,可以先来研究一下有哪几种写法。

首先,刚刚写的是margin:20px,在这里如果后面写一个值的话,代表了上下左右四个方向上都会添加20像素的距离

98b95e025de20819bf38c05120ef99bb.png
如果你写了两个值,那么第一个值代表上下距离,第二个值代表左右;
写三个值,第一个值代表上,第二个值代表左右,第三个值代表下;
写四个值,就分别代表上、右、下、左四个方向

参考下面的图例:

5c03debad1ff0739f6b3b11cd8321cc9.png

其实关于我的写法,还可以写单个方向的,使用margin-top、margin-left、margin-right、margin-bottom都可以实现。

div

ca1216aa16b3db50fe8870ae2205d8e4.png

如上图所示

元素A,在左边有10像素的距离,

元素B,在右侧有10像素距离(不过由于浏览器默认靠左排列,这里看不出效果)

元素C,在下方有10像素距离

元素D,在上方有10像素距离

等等?! 好像哪里不对?

6345ce37cd68ad68510f2cc34fca0172.png

C和D之间好像只有10像素的距离,而不是我们期望的20像素。

好吧,我承认,这是我的问题。

当元素在垂直方向上(水平方向是正常的),两个元素,分别设置了margin-top和margin-bottom,我不会叠加这两段距离,而是把它们重叠在一起了。

这有可能会造成跟你的预期不符。以后写的时候要注意哦

通常情况下,我们只需要给一个元素设置距离就好了,例如:

<

96e5e4ff62981dd2111a7dd1b8e23ef4.png

这样就实现了a和b之间的距离,如果要想缩短他们的距离该怎么做呢?

你只要写负值,就能实现,就像下面这样

<

97bcea3bbb4e108dabe923f4e6498ca4.png

看,我是不是很强大!但同时我还有一个小bug,那就是两个元素嵌套的时候

比如:这里有一个元素,里面又放了一个元素,如果给里面的小元素写了margin-top会发现没有效果,我们来试验一下。

<!-- HTML结构 -->

396447055efa370b990b8c88c8ef7d9c.png
未添加margin的效果

上面是没有加margin-top的效果,在看一下给粉色块加margin-top的效果

<

cd37af1956fcd35ed5c3b43df962e505.png
是不是跟你想象的有点不一样?

这个问题的解决方式有:

1)给父元素添加overflow:hidden;
2)给父元素添加border、padding属性
3)给其中一个元素浮动

我们可以加overflow:hidden来看一下效果

<

4ddf952be2d7f56fdd3b280750e6eb6e.png

好了,这样就完美解决了这个小bug。

总结一下

大家通常喜欢叫我外边距,我觉得这个名字挺恰当,我的主要作用就是控制元素之间的距离,下次有机会,再给你介绍我的大兄弟padding,今天先聊到这,再见!

千锋HTML5学院:如何讲清楚this指向?​zhuanlan.zhihu.com
0af9b7540b13b4740d6cd5e607516027.png
千锋HTML5学院:什么是闭包?​zhuanlan.zhihu.com
a3a060115ef2614c3b9b1780c073d365.png
千锋HTML5学院:如何讲清楚Redux的概念?​zhuanlan.zhihu.com
c31eb8bc5acc98254e65de0e38bd5704.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值