内容简介:最近没怎么写新的东西,一是因为一直在准备换新的工作,所以一直在准备面试,二是因为过年,心静不下来,所以也无法输出或者翻译一些文章,三是由于手头还有一些遗留工作需要完成和交接,比较忙。但是忙里偷闲还是整理了一些零碎的笔记,大体都是关于工作中遇到的实际问题或者衍生问题,比较乱,但还是具有一定的参考意义,所以整理出来分享给大家,有的知识点包含一个或多个参考链接以及一段描述,有的只包含一段描述,但我觉的都足以描述解决问题的思路了。其实我感觉这种记录性的学习方式还挺好的,以后会继续坚持,然后每攒够 10 个就整理成一
写在前面
最近没怎么写新的东西,一是因为一直在准备换新的工作,所以一直在准备面试,二是因为过年,心静不下来,所以也无法输出或者翻译一些文章,三是由于手头还有一些遗留工作需要完成和交接,比较忙。
但是忙里偷闲还是整理了一些零碎的笔记,大体都是关于工作中遇到的实际问题或者衍生问题,比较乱,但还是具有一定的参考意义,所以整理出来分享给大家,有的知识点包含一个或多个参考链接以及一段描述,有的只包含一段描述,但我觉的都足以描述解决问题的思路了。
其实我感觉这种记录性的学习方式还挺好的,以后会继续坚持,然后每攒够 10 个就整理成一篇文章,一来可以帮助自己温故知新,二来可以帮助更多的人。
如何获取一个元素盒的 baseline 的位置?
https://stackoverflow.com/que...
原理为在元素盒末尾添加两个内容为 X 的且 vertical-align 位置默认值的子元素,之后将第二个子元素的 font-size 设置为 0,这样由于默认情况下元素的垂直对齐方式是与父元素盒的 baseline 对齐的,由于 font-size: 0 的缘故,该元素的 top 也与 baseline 对齐,因此就可以通过 getBoundingClientRect 分别获取两个子元素的 top 值并求差取得。
但要注意的是,这样求得的 baseline 的位置并不一定是最原始的位置,因为 baseline 的位置会根据行内子元素的样式动态地发生改变,关于改变的规则,可参考这篇 文章 。
Object.keys(new Set([1, 2, 3]) 的值是什么?
https://github.com/30-seconds...
应该是 [] ,有兴趣的可以阅读 es 标准中有关这部分的章节。
那么如何判定一个 set 是否为空呢?可以直接通过其实例属性 `size 来判定,比如
new Set([1, 2, 3]).size // 3
当 table 的 border-collapse 样式属性为 collapse 时,悬浮 td 边框显示不完整
https://stackoverflow.com/que...
可以将 td 的 border-style 样式属性设置为 double,如下:
td: hover {
border-style: double;
}
获取 es6 中 class 的 name ?
可以通过 this.constructor.name 来获取。原理是 constructor 本身其实是一个函数,而 js 中的每个函数均有 name 属性指向其函数名,而 class 的 name 恰恰就是 constructor 的函数名,因此可以通过这种方式获得。
Angular 中的 animation 模块如何在运行时动态传入 styles ?
之所以遇到这个问题,是因为在使用 @angular/animation 的过程中,当动画的目标状态无法提前定义时,如何声明 AnimationMetadata ,比如窗口缩放动画,你无法预知运行时的窗口缩放大小。
这部分内容在官方文档中没有示例,仅在 api 文档 中提了一下,其本质上就是利用 animation params 来动态地在运行时传入某个动画状态下的某个 style 属性,比如缩放动画中涉及的 width 或者 height 属性。
另外还有一个问题就是,当在使用 animate() 时,其第一个参数暂时不支持 animation-fill-mode ,这就会造成当完成一个动画时,无法指定其动画的终止状态,比如在声明缩放动画时,缩放动画会按预期进行,但当动画交互完毕后,其元素样式又恢复到了动画发生之前的样式了。
暂时的解决方法是通过 ngStyle 来暂存动画的终止状态并绑定到相应的 dom 元素上,这样当动画完成时,其元素样式就会是动画终止时的状态了。
Angular 中的 NgZone.run() 和 ChangeDetectorRef.detectChanges() 的区别?
https://stackoverflow.com/que...
NgZone.run() 会在应用整体,自上而下全部进行脏检查校验,而 cdr.detectChanges() 仅仅会对某个具体的组件进行脏检查。
从适用角度来讲,大部分情况适用 cdr.detectChanges() 和 cdr.markForCheck() 已经足够满足日程工作需求了,但有些时候,当页面有多个组件的 UI 层状态与数据层状态不一致时,使用 NgZone.run() 则更好。
另外,一些 工具 库的源码实现中,为了尽可能的提高性能,都会使用 NgZone.runOutsideAngular() 将与 UI 层无关的逻辑移出脏检查校验流程,比如 cdk 中的 ScrollDispatcher ,在使用时如果最终需要与一些组件的 UI 层状态发生关系,应当手动管理脏检查机制来触发这些变动。
Angular 中如何在 service 和 component 中使用 pipe ?
https://stackoverflow.com/que...
pipe 本身即是 provider ,因此可以通过依赖注入的方式获取相应实例并使用,但是别忘了在 NgModule 的 providers 属性中声明。
同时,由于 pipe 本身的实现大部分是纯函数,因此在 v6 版本中,一些不含副作用的 pipe 均在 @angular/common 中暴露了以 format 为前缀的函数方法,也可以直接导入使用。
Canvas 在 retina 屏中绘制图片或字体发虚怎么办?
我们绘制图片或者字体时,一般指的是逻辑像素,而 canvas 会将逻辑像素自动按照渲染设备的 devicePixelRatio 的值来渲染,因此,在 retina 这种高清显示屏幕中,由于其 devicePixelRatio 为 2,因此 1px 的逻辑像素相当于 2px 的物理像素,渲染结果会发虚,其实是被放大了。
解决方法就是,利用 canvas 的 setTransform 或者 scale 方法来对 canvas 的进行放大,之后再利用 css 属性 width 和 height 进行缩小(这个过程是透明的,浏览器会帮我们完成),这样,在 canvas 绘制时,我们就无需关系逻辑像素与物理像素之间的区别了。
值得一提的是,对于物理像素,可以通过 devicePixelRatio 来获取。
Authorization Header 在 Safari 浏览器中神秘丢失?
尝试检查被请求的 api url 是否存在尾部斜线(trailing slash),具体原因暂时没有找到相关资料。
如何移除 git 提交历史中关于某个文件的修改历史?
场景是这样的,在一次提交 PR 的 review 过程中,我提交的一个文件,在若干 commits 的修改下,最终和最初状态完全相同,但是 PR 中却保留了对该文件的提交历史,因此 reviewer 希望我可以将这个文件移除提交历史。
这个主要需要用到 git rebase ,步骤如下:
git log filename git reset commit-id filename git checkout filename git commit --amend git rebase --continue/git push
关注公众号 全栈101,只谈技术,不谈人生
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 肖仰华谈知识图谱:知识将比数据更重要,得知识者得天下
- 基础知识:css3核心知识整理
- 从知识工程到知识图谱全面回顾 | AI&Society
- 知识图谱发展的难点&构建行业知识图谱的重要性
- 《面试知识,工作可待:集合篇》:Java 集合面试知识大全
- 第四期知识与认知图谱:神经机器翻译也应该嵌入「知识」
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
人人都在晒,凭什么你出彩
【美】奥斯丁•克莱恩 / 张舜芬、徐立妍 / 北京联合出版公司 / 2015-4 / 38.00
1. 《纽约时报》、亚马逊畅销书排名第1位、好评如潮的创意营销书。《出版人周刊》称其在社交网络时代“在安全范围内提供了实用的自我营销策略”。 2. TED演讲者创意分享:晒对了,全世界都为你点赞:别人在朋友圈、微博晒自拍、晒孩子、晒吃喝,你来晒创意、晒灵感、晒工作、晒收获,发出自己的声音,找到伙伴,机会也会主动找上门! 3. 10堂创意课+手绘涂鸦,所有人都能轻松读完、迅速学会的创意小......一起来看看 《人人都在晒,凭什么你出彩》 这本书的介绍吧!