1 移動端適配1px的問題
構(gòu)建1個偽元素, 將它的長寬放大到2倍, 邊框?qū)挾仍O(shè)置為1px, 再以transform縮放到50%.
.radius-border {
position: relative;
}
@media screen and (-webkit-min-device-pixel-ratio: 2) {
.radius-border:before {
content: "";
pointer-events: none;
/* 防止點擊觸發(fā) */
box-sizing: border-box;
position: absolute;
width: 200%;
height: 200%;
left: 0;
top: 0;
border-radius: 8px;
border: 1px solid #999;
-webkit-transform(scale(0.5));
-webkit-transform-origin: 0 0;
transform(scale(0.5));
transform-origin: 0 0;
}
}
2 居中為什么要使用transform(為什么不使用marginLeft/Top)
top/left花了大量的時間去繪制每一幀扶歪。所有的css包括好性的box-shdow老客,都是在CPU上計算的痊班。在translate版本中殖演,卻讓這個macbook在自己新的圖層在GPU中得到提升。此時此元素macboox是在自己單獨的一層上殿漠,任何2D transform,3D transform或者opacity的變化都可以完全的使用GPU,GPU可以保持非趁本荆快并且可以給我們提供非常快的幀速率辅斟。
3 怎么實現(xiàn)this對象的深拷貝
function deepCopy(p, c) {
var c = c || {};
for (var i in p) {
if(! p.hasOwnProperty(i)){
continue;
}
if (typeof p[i] === 'object') {
c[i] = (p[i].constructor === Array) ? [] : {};
deepCopy(p[i], c[i]);
} else {
c[i] = p[i];
}
}
return c;
}
4 表單可以跨域嗎
ajax跨域是因為瀏覽器需要保護用戶的安全和隱私而給js設(shè)定的限制转晰。如果你自己寫個瀏覽器去掉這個限制那js就可以任意跨域訪問了
form表單可以跨域一個是歷史原因要保持兼容性,一個是form表單會刷新頁面不會把結(jié)果返回給js士飒,所以相對安全
用jsonp跨域其實也是利用了瀏覽器的歷史兼容性查邢,而最新的font資源就不允許直接跨域引用
5 promise、async有什么區(qū)別
Promise代碼完全都是Promise的API(then酵幕、catch等等)扰藕,操作本身的語義反而不容易看出來,
async / await函數(shù)的實現(xiàn)最簡潔,最符合語義芳撒,幾乎沒有語義不相關(guān)的代碼
async / await 函數(shù)就是 Generator 函數(shù)的語法糖