问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

一道web前端工程师面试题,求解答。

发布网友 发布时间:2022-04-22 22:45

我来回答

3个回答

懂视网 时间:2022-04-20 19:44

相对定位(relative):

先说相对定位:跟它的名一样,相对嘛,要有一个参照物,但这个参照不是别的,是它自己在原来文档流中的位置。相对定位之后的对象并没有完全从文档流中脱离,这个对象原来在文档中的位置保留着(站着茅坑不拉屎),偏移后的对象会把其它的层遮罩住。

将相对定位特征总结如下:

①相对定位的元素,在没有设置宽度的情况下,宽度是整个浏览器的宽度,或者是依赖于父元素的宽度。

②相对定位的块状元素相对于原来位置移动,移动后仍然占据文档流的位置,不影响其他元素的布局

下面通过代码进行验证

在浏览器中放置5个盒子,用不同的颜色来表示,代码如下

HTML代码



CSS代码



最初效果图



给第三个盒子设置相对定位



元素相对于原来位置偏移,宽高都没变,撑大了容器,还占据着原来在文档流中的位置,对其它元素的布局没有产生影响。



绝对定位(absolute):

被绝对定位的对象将从文档流中脱离,绝对定位的参照位置就不再是自己了,是哪个,就看它的上级或上上级有没有定位了,使用left,right,top, bottom等属性相对于其最接近的一个有相对或者绝对定位设置的父级对象进行绝对定位,如果父级没有设置定位属性,则会相对于html根元素进行定位,看了一些帖子发现有人认为如果父对象没有设置定位属性,则会相对于body进行定位,这个说法是不对的。

将绝对定位的特征总结如下:

①绝对定位的块状元素在没有设置宽度的情况下,宽度由元素里面的内容决定

②脱离后原来的位置相当于是空的,下面的元素会来占据位置

③绝对定位的对象相对于距离自己最近的设置了相对定位或者绝对定位的父对象进行定位

④如果父元素没有定位,则相对于html根元素定位

下边还是通过这五个盒子的偏移来验证

(1)块元素无偏移值

上边的5个盒子,只给box5一个绝对定位,无偏移值。此时块状元素只是漂浮在原来的位置,如果后边还有块状元素,将会占据他在文档流中的位置,我们在box5下边加上一个box6看一下效果。

说明:绝对定位的块状元素在没有定义宽度的情况下,宽度由元素里面的内容决定。



效果图如下



加一个box6的效果



从图中可以看出,box6已经占据了box5在文档流中的位置了。

(2)有偏移值

如果设置了偏移值而父元素没有设置相对定位或绝对定位的情况下,元素相对于根元素定位(即html元素,注意是相对于根元素,而不是相对于body)用box5的偏移来验证。

①给box5一个偏移量,父元素没有相对或者绝对定位



效果图如下



②给box5同样的偏移量,给body元素一个绝对定位(body元素设置为了absolute,绝对定位的块状元素的宽度由最长p决定,宽度变小了):



效果图如下


图片发自App

从上边的两张效果图明显发现相对于根元素的定位与相对于body的定位是不相同的,主要的区别在于有没有算进去body的margin值。

下面在五个盒子外边再嵌套三个父盒子,并给这三个父盒子一个定位,来验证是否是根据最近定位的父元素进行偏移。

代码如下

HTML代码



CSS代码




效果图


图片发自App

从上边很明显看的出来box5是相对于第三层容器也就是离它最近的容器进行的定位。有兴趣的可以试一试,把第三层容器的定位去掉,看看是不是就相对于第二层容器定位了,我已经验证过,就不放图了。

有同学会问,为什么要把最外层的盒子设置为绝对定位,其它两个设置为相对定位,这个定位的方法区别主要影响的是盒子的宽度,相对定位的块元素在没有设置宽度的情况下,它的宽度就是默认的浏览器的宽度,有父元素的情况下,则它的宽度由父元素决定,如果这个块元素的内容过多,则会把父元素也撑大。

,也就是说相对定位的块元素的宽度依赖于父元素,那么如果把这三个容器都设置为绝对定位会有什么效果呢,先来看一看效果图


图片发自App

从图中可以看出,第三层容器的宽度已经不再依赖于父元素,因为它从文档流中脱离出来了,他自己是独立的,而他的宽度只能由内容来决定。总结起来就是,绝对定位的块元素宽度由自己的内容决定,相对定位的块元素在没有设定宽度时,默认就是浏览器的宽度。但是不管宽度怎样,绝对定位的元素都会找到离自己最近定位(绝对或者相对定位)的父元素来进行定位。

总结:

relative:定位是相对于自身位置定位(设置偏移量的时候,会相对于自身所在的位置偏移)。设置了relative的元素仍然处在文档流中,元素的宽高不变,设置偏移量也不会影响其他元素的位置。最外层容器设置为relative定位,在没有设置宽度的情况下,宽度是整个浏览器的宽度。

absolute:定位是相对于离元素最近的设置了绝对或相对定位的父元素决定的,如果没有父元素设置绝对或相对定位,则元素相对于根元素即html元素定位。设置了absolute的元素脱离了文档流,元素在没有设置宽度的情况下,宽度由元素里面的内容决定。脱离后原来的位置相当于是空的,下面的元素会来占据位置。

说明:本文的实验结果是在父元素及子元素没有设置固定宽度的情况下得来的,如果父元素设置了固定的宽度,他的子元素无论是绝对定位还是相对定位的子元素都不能超过其父元素的宽度,父元素是老大哥,谁都不能超过他。

热心网友 时间:2022-04-20 16:52

这样的布局用绝对定位实现最合适,ABC的外层用相对定位,里边各列用绝对定位就可以。至于CBA且B宽度自适应,还是用绝对定位,但只定位C,A分部到两侧,中间的列margin设成左右列的宽度就可以。

热心网友 时间:2022-04-20 18:10

b有一个单独的父级层1
ac 用另外一个单独的父级层2 ( a在c的上面)

12 层外有父级层 warp 宽度是 比如这里是960 设置定位为相对定位 为abc cba布局中c的定位确定坐标点
bac 这个很简单 1 2 浮动就好
abc 1左浮动 设置好padding 让其左右padding 分别是a c的宽度
2左浮动 margin-left:-960px; a 这时就会在B左边了 c 通过绝对定位,定位到b的右边即可
cba 布局也是一样 2的左边距就变成-180px a依然不变 c也是通过绝对定位定位到b的左边即可

至于b宽度自适应 也是类似的原理 只是warp宽度% 1的padding是ac宽度 b依然是100%
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
若cpu一秒执行n次运算需耗能5w,那执行2n次运算要耗能是大于小于还是等于... 大神们,N5G跟N5W哪里不一样? 刚出生的婴儿会感冒吗 刚出生宝宝感冒的症状 怀庄永佳福代理,什么品牌白酒好呢? 做白酒品牌代理,有怀庄永佳福牌子怎么样? 怀庄永佳福白酒喝得人多吗?代理怎么样? 为什么很多女性都把男闺密当作结婚对象? 关于电影“罗生门”的问题 实际利率法是指什么 有哪些经典的前端开发面试题及答案解析 面试Web前端需要注意什么?会面试哪些问题? web前端jquery面试题有哪些 看花的诗句 拍照赏花的心情说说 带宝宝去看花的简短说说有哪些? 朋友去公园赏花该怎么形容 成都春游赏花的五大好去处,你更喜欢哪一个呢? 上海看花的地方有哪些? 简笔画看花的小朋友 苹果手机 大写字母怎么弄? 赏花踏青 朋友圈怎么发表句子? 苹果-ipad的英文字母.小写变大写如何切换 赏花的心情句子发朋友圈 苹果手机输入法该怎么改字母的大小写? 看花时应该如何发说说朋友圈? 赏花发朋友圈微信句子有哪些? 怎样在苹果的平板电脑中用百度拼音输入大写字母? 春天赏花的朋友圈说说怎么发? 苹果aipai平板的怎么设置大小写字母? 你遇到过哪些比较有水准的前端面试题? 前端开发面试回答,你怎么回答 谁有web前端的面试题?给传一份 前端面试题,求大佬给个结果 Premiere新手干货 如何制作简单文字动画 这种视频里的文字特效在PR里面怎么做? 用pr做纯文字动画视频太复杂了,有没有简单一点的工具,可以分享一下吗? pr视频说话字跟着出来这种效果,是怎么做到的? 如何用PR做出一个纯文字的视频还可以用什么软件有推荐吗? 怎么用pr 制作纯文字视频或者还有哪个简单的软件? 如何用pr做纯文字视频大家都用的什么软件有什么推荐吗? 如何用PR制作一份比较简单的纯文字片头? 用pr可以制作文字动画,有没有比它更简单易用的动画制作工具? Premiere中如何实现动态字幕? 有人用pr制作旋转文字视频吗请问这种视频怎么制作? 请问,PR标题文字动画预设放到那个文件夹?刚我下载了一些预设,不知道往哪里放,也没说明书😂 无须用pr来制作文字视频蹦字效果可以用什么? 富德生命人寿重疾险怎么样? 富德生命人寿满天星重疾险性价比怎么样?优缺点? 富德生命人寿万年青重疾险怎么样?值得买吗?