menu-list定位问题

menu-list定位问题

  1. menu-list相对于父级menu绝对定位,当没有设置left:0时,menu-list左边方向没有和menu对齐,为什么设置left后就对齐了?视频上讲和父级menu最左边padding位置对齐,宽度要包含padding-left吗?应该只是menu的宽度吧?

  2. 觉得需要设置left:-30px

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

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

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

正在回答 回答被采纳积分+1

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

3回答
好帮手慕码 2019-05-08 12:50:54

同学你好!

在css中,父级设置相对定位,子级设置绝对定位之后  子级设置left:0;就是回到父级最左侧显示。

只不过这里是有padding影响,所以才有了子级设置绝对定位但设置left:0;,子级默认是从content区域开始显示.

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

如果left:0;就是在定位元素的最左侧啦~

同学可以回过头再看一下元素定位的加深一下理解。

前端来说内容还是挺多的,不可能会一下子都讲完,需要同学在编程的过程一步一步理解填坑哦~

祝学习愉快~

好帮手慕码 2019-05-08 10:06:20

同学你好!

同学这个例子举得不是很明确,可以来看下我这个

(1)给父级设置了相对定位和padding时候,子级设置绝对定位不设置left值,子级默认是从content区域开始显示的

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

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

之后设置了left:0;值,那么子级就会回到父级的最左边显示了:

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

(2)给父级设置了相对定位和margin时候,子级设置绝对定位不设置left值,父级的margin是不会影响子级的。可能是老师昨天的表述不太严谨,太过笼统了,抱歉给同学造成了误解。

是这样的,父级设置了相对定位,子级绝对定位和margin的话,left:0;是不会使子级回到父级最左侧的(子元素margin影响子元素本身位置)。

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

同学很细心,指出了这个问题。同学很棒,继续加油~

祝学习愉快~

  • 提问者 Leeluo #1
    第一个例子:(1)给父级设置了相对定位和padding时候,子级设置绝对定位设置left:0,子元素就会回到父元素的最左边显示;这个以前好像没有讲过原理。。。
    2019-05-08 12:41:58
好帮手慕码 2019-05-07 17:09:49

同学你好!

宽度不包含padding-left的宽度的,这个理解是正确的的~

(1)menu-list相对于父级menu绝对定位,当没有设置left:0时,menu-list左边方向没有和menu对齐,是因为受到父级padding的影响。

(2)同学首先要知道绝对定位如果不设置top/left的初始位置是会受父级的padding/margin影响的

如图,这是去掉left:0:

http://img1.sycdn.imooc.com//climg/5cd149e800018eac03680167.jpghttp://img1.sycdn.imooc.com//climg/5cd149ef00017a6402330159.jpg

去掉父级的padding,这样他们就是对齐的

http://img1.sycdn.imooc.com//climg/5cd14a1a00010a7802490249.jpghttp://img1.sycdn.imooc.com//climg/5cd14a320001562203890290.jpg

(3)因为left:0;是让它回到父级下面的起始位置,这里设置left:0;就可以了

同学试着理解一下~

如果帮助到了你 欢迎采纳 祝学习愉快~

  • 提问者 Leeluo #1
    1.有点搞不懂,设置left绝对定位是相对于他的父级元素定位的,为什么和父级元素的padding-left有关系?不知道为什么子元素设置left后会移动至父级元素padding的区域;如下代码 <!doctype html> <html> <head> <meta charset="utf-8"> <title>ceshi</title> <style> .two{ width:100px; height:100px; background-color:red; position:absolute; left:0; } .one{ width:200px; height:100px; background-color:blue; margin-left:300px; position:relative; display:inline-block; } </style> </head> <body> <div class="one"> <div class="two"> sdf </div> </div> </body> </html> 2.如下代码:把padding-left,换做margin-left后,绝对定位并没有受到margin的影响,仍然是在父级元素最左边。这个和老师上面说的不一样 <!doctype html> <html> <head> <meta charset="utf-8"> <title>ceshi</title> <style> .two{ width:100px; height:100px; background-color:red; position:absolute; left:0; } .one{ width:200px; height:100px; background-color:blue; margin-left:300px; position:relative; display:inline-block; } </style> </head> <body> <div class="one"> <div class="two"> sdf </div> </div> </body> </html>
    2019-05-07 20:52:02
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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