無限期更新前端的一些坑,一些記錄,一些冷知識
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'
。