无限期更新前端的一些坑,一些记录,一些冷知识
https://github.com/ssshooter/...javascript
大概从 17 年的六月份开始记录吧,也已经一年了,其中也包含了一些很简单的知识,之前还以为挺难的,如今看起来有点谜之感慨...
__proto__
属性,都指向创造对象的函数对象的 prototype
。formdata
包装。Promise.prototype.catch
方法是 .then(null, rejection)
的别名。addEventListener()
为一个元素注册事件的时候,句柄里的 this
值是该元素的引用。其与传递给句柄的 event
参数的 currentTarget
属性的值同样,而 target
是直接接受事件的子元素。scrollIntoView()
使 div 底部滚动到视窗。document.title
能够直接修改当前 html 的标题。compositionstart
事件触发于一段文字的输入以前(相似于 keydown 事件,可是该事件仅在若干可见字符的输入以前,而这些可见字符的输入可能须要一连串的键盘操做、语音识别或者点击输入法的备选词)。void 0
(void后面加任何东西)用于生成一个绝对的 undefined
(不会被重定义),但跟函数会有反作用localStorage
保存的只能是字符串,因此是没有 null
的。坑一个css
typeof [] === 'object' // true typeof null === 'object' // true
new()
作了些什么?html
var obj = new Base(); var obj = {}; obj.__proto__ = Base.prototype; Base.call(obj);
stage 0 到 4 的含义:前端
stage 0 is "i've got a crazy idea",
stage 1 is "this idea might not be stupid",
stage 2 is "let's use polyfills and transpilers to play with it",
stage 3 is "let's let browsers implement it and see how it goes",
stage 4 is "now it's javascript".
Object.getOwnPropertyNames(obj).length === 0
判断 obj
是否是空对象。getBoundingClientRect()
用于获取元素宽高以及距离页面边框距离,十分方便。&&
的使用场景:左边为真继续执行右边,如 isDog && bark()
。||
的使用场景:左边为假继续执行右边,如 let i = value || defalutValue
。多个特性的元素应该分多行撰写,每一个特性一行。如下为 vscode 里 vetur 的设置:vue
"vetur.format.defaultFormatterOptions": { "js-beautify-html": { "wrap_attributes": "force" } }
/deep/
覆盖子组件 cssFixes #33
,其余关键字还有 close closes closed fix fixes fixed resolve resolves resolved
git reset --soft HEAD^
回退一次 commit逐帧动画 animation: animate-name 3s steps(每次循环的帧数) infinite;
java
@keyframes animate-name{ from{ <!--原位--> background-position: 0 0; } to{ <!--最后一帧--> background-position: -1540px 0 ; } }
"Break out" of a parent's containing width to take the full screen of a page w/this nice utility class:node
.full-width { width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; }
white-space: pre-wrap;
overflow: hidden
能够根据元素高度裁剪视区,设置 height: 0; overflow: hidden
虽然文档流中占用了位置,因为高度为 0,最终表现特征达到了咱们指望的 display: none
。此时该元素 clientHeight
、offsetHeight
为 0,可是 scrollHeight
是有值的。scrollHeight
是一个元素没有滚动条时的全部内容高度,当一个元素没有滚动条时 scrollHeight === offsetHeight
。移动端优化经常使用 CSS 属性:webpack
user-select: none; // 禁止文字被选中 outline:none; // 去除点击外边框,点击无轮廓 -webkit-touch-callout: none; // 长按连接不弹出菜单 -webkit-tap-highlight-color: rgba(0,0,0,0); // 去除点击高亮
img 元素图像自适应居中,与 background-size
效果同样git
object-fit: cover;
<img />
标签千万记得写宽高,否则会花式塌陷flex-grow
所在元素若是未定宽度的话,宽度会被子元素撑开word break
多行文字居中github
.mulit_line{ border:1px dashed #cccccc; padding-left:5px; } .mulit_line span{ display:inline-block; line-height:14px; vertical-align:middle; }
flex-shrink: 0;
实现 div 不压缩无限并排,能够用于 swiper 等场景。float
自带 display: inline-block
.disabled { pointer-events: none; }
height: calc(~"100% - 50px");
"prettier.singleQuote":true,"prettier.semi": false
host:'0.0.0.0'
。