为何使用margin-right用负值,元素不会往右移动呢?

为何使用margin-right用负值,元素不会往右移动呢?

为何使用margin-right用负值,元素不会往右移动呢?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,可以结合老师给同学解释的第二条中的第三小条理解。当设置负的margin-right值小于自身宽度的时候, 此时负的margin-right +width值大于0, 右侧盒子在页面中还占据实际的宽度,父级元素没有空间容纳右侧的盒子, 所以右侧盒子不会移动到上面与其他盒子一排显示,会待在原地不动

http://img1.sycdn.imooc.com//climg/5d2d72be0001f3f707350323.jpg

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

好帮手慕慕子 2019-07-15 00:19:13

同学你好, 老师以一个不是很恰当但是很方便同学的理解的方式, 给同学解释一下为什么设置负的margin-right值等于自身的宽度, 不用结合定位, 就可以实现在右边。

  1. 首先, 我们要了解元素在页面中实际占据的宽度为margin+border+padding+width

  2. 那么, 我们就从盒子占据页面的实际宽度这个点出发。

    (1)当三个盒子同时设置浮动 ,本来是要在一行显示的。 但是由于中间的盒子宽度需要自适应 ,设置成100% ,所以左右两个小盒子被挤下去了 .

    (2)左侧盒子通过负的margin-left值结合定位属性实现左侧显示。

    (3)右侧盒子设置负的margin-right值, 那么它占据页面的实际宽度就是 负的margin-right + width, 当这个负值刚好等于自身宽度的时候, 我们可以理解为它实际占据页面的宽度为0,我们可以抽象的理解成它不占据位置, 所以可以在一排显示在最右侧了

  3. 然后, 同学可以测试一下,调整右侧盒子负的margin-right值。当这个负值小于自身宽度的时候, 他会在原地不动, 当这个负值大于自身的宽度的时候, 他会继续显示在右侧

最后, 老师这里想跟同学说一下, 对于圣杯布局这一块, 课程上也做了标注,了解即可,同学目前不需要纠结这一块具体的原理,可以继续往后学习。 圣杯布局它其实更像是是一个公式,因为有规律可循,大家使用的时候一般都是按着这个公式来, 所以才被称作是一种布局方案。 同学如果是对这一块感兴趣,可以等知识积累到一定程度,再返回来研究这一块, 会更容易理解哦

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~


  • 提问者 lcyjerry #1
    我理解了,但是其中的原理是啥呢?这个不恰当的方式,是不恰当在哪里呀
    2019-07-15 13:51:03
  • 好帮手慕慕子 回复 提问者 lcyjerry #2
    同学你好, 其中的原理简单理解就是margn-right设置负值会影响盒子和父级盒子所占据的空间。老师说的不恰当是指为了方面同学理解,解释的有点抽象。 同学理解了就好, 另外, 同学不用纠结在这里,可先继续往后学习, 随着知识的积累,在返回来研究会更容易理解一点哦,祝学习愉快~~~
    2019-07-15 14:45:18
  • 提问者 lcyjerry 回复 好帮手慕慕子 #3
    那调整右侧盒子负的margin-right值。当这个负值小于自身宽度的时候, 他会在原地不动这是为什么呢
    2019-07-16 13:31:37
好帮手慕慕子 2019-07-14 19:23:23

同学你好, 首先, 我们可以简单地理解设置margin值是为了设置盒子与盒子之间的距离。

然后我们在来理解设置margin-right值的话,是设置当前盒子与他后面盒子之间的距离, 如果设置了负值,当前盒子不会移动, 会让后面的盒子发生移动。 老师这里举个简单的示例帮助同学理解

http://img1.sycdn.imooc.com//climg/5d2b0fbf0001c37504650558.jpg

效果图:可以看到粉色盒子没有移动, 绿色盒子往左移动了

http://img1.sycdn.imooc.com//climg/5d2b0fca00013c2f03550223.jpg

同学可以结合示例,自己测试一下,加深理解

不是很清楚同学说的具体是指给哪个元素设置负的margin-right值, 同学可以参考上面的解释理解。 如果还有疑惑, 建议:详细的指出具体你说的这种情况布局是什么样的, 对那个元素设置负的margin-right 值, 便于老师高效的为你解决问题

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

  • 提问者 lcyjerry #1
    在用圣杯布局的时候,我给right设置了css是margin-right:-220px; 它就可以实现在右边,但是这个值设置其他数值的时候,right只在原地不动。
    2019-07-14 19:50:11
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师