傾旎 2022-05-04 13:56:46
div.parent { font-size: 0; text-align: center; &::before { content: ""; display: inline-block; width: 0; height: 100%; vertical-align: middle; } } div.child{ display: inline-block; vertical-align: middle; }能说一下这种实现方式的原理吗
这个我前几天刚在张鑫旭的《CSS世界》里面第一次看到,原理就是(基于我个人的理解):设置inline-block和vertical-align:middle后,里面的元素会基于中间的文字准线居中对齐(学生时代的英语本子里面写字母,都是4条线形成三个空白区域,文字的对齐就是根据这几条线的)vertical-align更多信息可以看看张鑫旭博文;
然后,由于伪类是position:static(默认)的,那么伪类撑开了父元素的基准线(高度是100%),使得此时文字的基准线就是整个div.parent的中心了,另外vertical-align只影响inline或者inline-block的,所以div.child设置vertical-align就能居中了。
以上是我个人的理解,有很多表达不清楚的地方,更详细的内容还是推荐张鑫旭的博文。
傾旎 2022-05-04 13:56:03
- 首先,题意是要在
原地
修改数组,那么sort,concat之类的纯函数方法就是行不通的了,因为是返回新的数组,而不是在原地修改 - 其次,splice的时间复杂度是O(n),那么使用splice的算法的时间复杂度是O(n2),既然在写算法,那么就要寻求时间复杂度与空间复杂度最低的办法。
思路:双指针
- 设定一个慢指针一个快指针,快指针每次+1, 当慢指针的值不等于0的时候也往后移动,当慢指针等于0并且快指针不等于0的时候,交换快慢指针的值,慢指针再+1
function moveZero(arr) { let i = 0 let j = 0 while (j < arr.length) { if (arr[i] !== 0) { i++ } else if (arr[j] !== 0) { ;[arr[i], arr[j]] = [arr[j], arr[i]] i++ } j++ } }
时间复杂度O(n),n是数组长度,空间复杂度O(1)
- 共 1 页
- 1
如果按照你的解释的话,现在的关键就是,setTimeout(fn, 0)是什么时候加入到macro task,如果async2函数里执行的时间过长,会不会导致setTimeout比script 更快加入到macro task里。导致结果不一样
第 10 题:常见异步笔试题,请写出代码的运行结果