前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试官想知道你多了解position:absolute | 掘金技术征文

面试官想知道你多了解position:absolute | 掘金技术征文

作者头像
AlloyTeam 阿联
发布2022-09-19 15:21:30
2440
发布2022-09-19 15:21:30
举报
文章被收录于专栏:技术掘金

CSS的position属性常常被面试官拿出来考校同学的前端基本功,分别回答几个属性值是static、absolute、relative、fixed、sticky并解答一些基本特性(直接百度得到的)可以算及格,想要进一步catch their eyes,需要更深入的理解,这里视角汇聚到absolute上,看看这个最具代表性的值能做多少文章。

一重天

绝对定位,top,right,bottom 和 left 属性决定了该元素的最终位置,position:absolute常常和他们配套使用,完成对固定宽度元素的居中效果。

其实达到一重天,也足以满足一些面试官的胃口了,毕竟CSS虽然常考但不会作为重中之重。不过如果你更进一步,让面试官眼前一亮,你的竞争力就更加立体了。

二重天

我们常常将绝对定位和top,right,bottom 和 left配套使用,大家都知道这种情况下绝对定位元素是相对于第一个position不为static的父元素定位的。于是惯性思维,无论何时,只要使用absolute,一定要将父元素设为relative。这反而浪费了很多有趣好用的特性,不假思索的使用relative甚至会导致元素层叠顺序受到潜移默化的影响(层叠问题这里不深入)。其实绝对定位元素在上下或左右方向没有设置位置属性时(未设置top、bottom或left、right)它的位置就是不设置absolute时在文档中的位置,这点和relative挺像的,只不过仍然不占据空间。于是乎这个相对特性可以和margin配合,完成很多自适应的边角位布局,比如经典的右上角消息通知小图标。这个特性甚至可以和父元素的text-align:center配合完成水平居中,只要肯捣鼓,就会有惊喜。

和面试官聊到这些,其实已经彰显了一定功底,不过还可以接着扩展。

三重天

绝对定位能使元素块状化,使得display的应用值变为block,大家或许有所耳闻。一个元素被设为绝对定位后,其display计算值就变为了block,尽管其表现形式和inline-block类似——包裹内部元素且不超出包含块的特性(网上有些说变为inline-block的其实误人子弟了)。按照如下方式在控制台尝试可验证:

代码语言:javascript
复制
var span = document.createElement('span');
document.body.appendChild(span);
console.log('1.' + window.getComputedStyle(span).display);
span.style.position = 'absolute';
console.log('2.' + window.getComputedStyle(span).display);
输出:
1.inline
2.block

到这还不完美,突然提出应用值的概念,得防一手被追问应用值是什么。其实CSS属性有三个阶段:指定值(specified value)->计算值(computed value)->应用值(used value)

指定值其实就是我们熟知的CSS赋值规则:

1.在CSS文件中给属性赋的值,优先使用。还涉及优先级比较,百度可知。

2.如果CSS文件中没有给该属性赋值,那么它会尝试从父元素那继承一个值。

3.如果上面的两种途径没得到有效值,则把CSS规范中针对这个元素的这个属性的初始值(initial)作为指定值。

计算值是对指定值进行计算后得到的结果,计算值进行的计算通常为将相对值转换成绝对值(如 em 单位或百分比)。

应用值是由渲染引擎根据计算值得出实际的布局尺寸,应用到渲染的页面上的结果。可以通过window.getComputedStyle方法获得应用值。

计算值和应用值的区别:对于不依赖于布局的 CSS 属性 (例如 display, font-size, line-height)计算值与应用值一样,否则就会不一样(例如height:auto,计算值为auto,应用值为实际高度,是实打实的像素,如100px)。

这样,一整个小套路差不多成型了,其实absolute的东西不止这么多,不过以上这些在面试官面前小小装一波也足够了。也欢迎小伙伴和我讨论更多有特色的CSS用法和黑科技。

参考资料

MDN

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一重天
  • 二重天
  • 三重天
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档