摘要:相當(dāng)于繞過(guò)了瀏覽器端,自然就不存在跨域問(wèn)題。三者的區(qū)別與服務(wù)器的交互數(shù)據(jù)始終在同源的請(qǐng)求中攜帶即使不需要,即在瀏覽器和服務(wù)器間來(lái)回傳遞。而和不會(huì)自動(dòng)把數(shù)據(jù)發(fā)給服務(wù)器,僅在本地保存。和雖然也有存儲(chǔ)大小的限制,但比大得多,可以達(dá)到或更大。
本文提供最簡(jiǎn)便的解答方式,方便快速記憶,復(fù)盤,詳細(xì)答案可自己再搜一下。js基礎(chǔ)知識(shí) 1. javascript typeof返會(huì)的數(shù)據(jù)類型有哪些
object,string,undefined,number,function,boolean
基本數(shù)據(jù)類型:2. 列舉三種強(qiáng)制類型轉(zhuǎn)換和兩種隱式類型轉(zhuǎn)換
string,number,boolean,undefined,null
parseInt(),parseFloat(),Number()
==,!!
var array = new Array() var array = []
Array.of(1,2) //[1,2]
這是es6新增的一個(gè)Array方法,創(chuàng)建一個(gè)具有可變數(shù)量參數(shù)的新數(shù)組實(shí)例,而不考慮參數(shù)的數(shù)量或類型。
(感謝 haru 的寶貴建議)
console.log(arr instanceof Array)
console.log(arr.construct === Array)
console.log(Array.isArray(arr))
5. pop(),push(),unshift(),shift()pop()尾部刪除
push()尾部插入
unshift()頭部插入
shift()頭部刪除
6. DOM0 DOM2dom0級(jí)
不支持添加多個(gè)事件,后面的會(huì)覆蓋前面的
無(wú)法取消
var btn = document.getElementById("button"); btn.onclick = function(){ alert(1); } btn.onclick = function(){ alert(2); } //只彈出2
dom2
可以添加多個(gè)事件
不兼容低版本IE
支持事件冒泡,事件捕獲
var btn = document.getElementById("button"); btn.addEventListener("click",function(){ alert("1"); }) btn.addEventListener("click",function(){ alert("2"); }) //先彈出1,再?gòu)棾?7. IE和DOM事件流的區(qū)別
執(zhí)行順序不一樣
參數(shù)不一樣 低版本ie沒(méi)有回調(diào)函數(shù),只能進(jìn)行冒泡
第一個(gè)參數(shù)是否加"on",低版本IE不支持addEventListener(),支持attachEvent,第一個(gè)參數(shù)需要加"on"
this指向問(wèn)題,IE指向windows,不指向觸發(fā)的函數(shù)
8. IE標(biāo)準(zhǔn)下有哪些兼容性寫法var ev = ev||window.event document.documentElement.clientWidth||document.body.clientWidth var target = ev.srcElement||ev.target9. call apply bind
改變this的指向,
其中call的寫法
function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.call(sub,3,1);
這個(gè)例子中的意思就是用 add 來(lái)替換 sub,add.call(sub,3,1) == add(3,1) ,所以運(yùn)行結(jié)果為:alert(4); // 注意:js 中的函數(shù)其實(shí)是對(duì)象,函數(shù)名是對(duì) Function 對(duì)象的引用。
apply寫法
function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.apply(sub,[4,2]);
不同就在于第二個(gè)參數(shù),apply寫成數(shù)組
bind寫法
function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.bind(sub,4,2)();
bind是返回了一個(gè)改變上下文的一個(gè)函數(shù),可以稍后調(diào)用,而apply,call是立即執(zhí)行函數(shù)
10. b繼承a的方法(js面向?qū)ο髲?fù)習(xí))原型鏈繼承
構(gòu)造函數(shù)繼承
實(shí)例繼承
組合繼承
拷貝繼承
寄生組合繼承
11. 如何阻止事件冒泡和默認(rèn)事件cancelBubble(IE),
return false,
event.preventDefault,
event.stopPropagation()
12. 添加 刪除 替換 插入到某個(gè)DOM節(jié)點(diǎn)的方法obj.appendChild()
obj.insertBefore()
obj.replace()
obj.remove()
13. window.onload和$(document).ready的區(qū)別window.onload只能出現(xiàn)一次,$(document).ready能出現(xiàn)多次
window.onload需要等所有文件都加載完才開(kāi)始加載,$(document).ready只需等文檔結(jié)構(gòu)加載完了就開(kāi)始加載
14. == 和 === 區(qū)別前者會(huì)自動(dòng)轉(zhuǎn)換類型
后者不會(huì)
跨域是什么:實(shí)際上就是一個(gè)網(wǎng)站不能執(zhí)行其他網(wǎng)站上的網(wǎng)址,是由瀏覽器同源策略造成的,是瀏覽器對(duì)js施加的安全限制
所謂同源,實(shí)際上是指域名,協(xié)議,端口都相同
也就是說(shuō)當(dāng),域名或者協(xié)議,或者端口不同的時(shí)候,就是跨域,
jsonp
json with padding,是一種json的一種使用模式
產(chǎn)生的原因,ajax不支持跨域,由于瀏覽器的同源策略,但是script的src支持跨域
主要的原理是動(dòng)態(tài)創(chuàng)建一個(gè)script標(biāo)簽的,通過(guò)src調(diào)用服務(wù)器提供的js腳本,該腳本的內(nèi)容是一個(gè)函數(shù)調(diào)用,該函數(shù)在本地js文件中進(jìn)行定義,其中的參數(shù)就是,本地函數(shù)請(qǐng)求的數(shù)據(jù),也就是服務(wù)器所將返回的數(shù)據(jù)
與ajax的不同,ajax是通過(guò)xhr獲取非本頁(yè)面的數(shù)據(jù)內(nèi)容,而jsonp獲取的是服務(wù)器提供js腳本
代理
例如www.123.com/index.html需要調(diào)用
www.456.com/server.php,可以寫一個(gè)接口
www.123.com/server.php,由這個(gè)接口在后端去調(diào)用
www.456.com/server.php并拿到返回值,然后再返回給 index.html,這就是一個(gè)代理的模式。相當(dāng)于繞過(guò)了瀏覽器端,自然就不存在跨域問(wèn)題。
PHP端修改header(XHR2方式)16. javascript是一種什么樣的語(yǔ)言
在php接口腳本中加入以下兩句即可:
header("Access-Control-Allow-Origin:*");//允許所有來(lái)源訪問(wèn)
header("Access-Control-Allow-Method:POST,GET");//允許訪問(wèn)的方式
解釋性腳本語(yǔ)言,代碼不進(jìn)行預(yù)編譯
主要用來(lái)向HTML頁(yè)面添加交互行為
可以直接嵌入HTML頁(yè)面,但多帶帶寫成js文件有利于結(jié)構(gòu)和行為的分離
跨平臺(tái)性,在絕大多數(shù)瀏覽器支持下,可以在多種平臺(tái)下運(yùn)行,linux,windows
17. javascript基本數(shù)據(jù)類型和引用數(shù)據(jù)類型基本類型 undefind null number string boolean
基本類型的值是不能改變的
基本類型不能添加屬性和方法
基本類型的比較是值的比較
基本類型變量存放在棧區(qū)(棧內(nèi)存)
也就是說(shuō)基本類型在賦值操作后,兩個(gè)變量是相互不受影響的。
引用類型 object Function Array
引用類型可以添加屬性和方法,屬性方法內(nèi)又可以添加基本類型
引用類型的值是可變的
引用類型的值時(shí)同時(shí)保存在棧內(nèi)存和堆內(nèi)存里的對(duì)象,準(zhǔn)確地說(shuō),引用類型的存儲(chǔ)需要內(nèi)存的棧區(qū)和堆區(qū)(堆區(qū)是指內(nèi)存里的堆內(nèi)存)共同完成,棧區(qū)內(nèi)存保存變量標(biāo)識(shí)符和指向堆內(nèi)存中該對(duì)象的指針,
引用類型的比較是引用的比較 引用類型時(shí)按引用訪問(wèn)的,換句話說(shuō)就是比較兩個(gè)對(duì)象的堆內(nèi)存中的地址是否相同,那很明顯,person1和person2在堆內(nèi)存中地址是不同的
引用類型的賦值其實(shí)是對(duì)象保存在棧區(qū)地址指針的賦值,因此兩個(gè)變量指向同一個(gè)對(duì)象,任何的操作都會(huì)相互影響
18. js原生不要與jq搞混document.getELementById("ID").value
獲取值的時(shí)候原生不是方法,不帶括號(hào)
獲取所有checkbox
var boxs =document.getELementsByTagName("input"); var boxArray = []; var len = boxs.length; while(len--){ if(boxs[len].type == "checkbox"){ boxArray.push(boxs[len]); } }
設(shè)置div html內(nèi)容以及設(shè)置樣式
var dom = document.getElementById("ID"); dom.innerHTML = "xxxx" dom.style.color="#000"19. DOM,BOM
javascript由ECMAScript,DOM,BOM三部分組成,
ECMAScript也是一種語(yǔ)言,也就是對(duì)規(guī)定的語(yǔ)法,操作,關(guān)鍵字,語(yǔ)句等的一個(gè)描述,javascript實(shí)現(xiàn)了ECMAScript
DOM是文檔對(duì)象模型,包括了獲取元素,修改樣式,操作元素三方面內(nèi)容,也是我們進(jìn)行最多的操作,有很多兼容性寫法
BOM是瀏覽器對(duì)象模型,包括瀏覽器的一些操作,window.onload,window.open等還有瀏覽器事件,監(jiān)聽(tīng)窗口的改變onresize,監(jiān)聽(tīng)滾動(dòng)事件onscroll等
20. null和undefind的區(qū)別null是表示一個(gè)空的對(duì)象,轉(zhuǎn)為數(shù)值為0,undefind表示一個(gè)空的原始值,轉(zhuǎn)為數(shù)值為NAN
undefind指本該有一個(gè)值,但卻并有定義,null表示沒(méi)有對(duì)象,不應(yīng)該有值
21. XML和JSON的區(qū)別JSON相對(duì)于XML來(lái)講傳遞速度更快,因?yàn)楣饪创a量就能看出
JSON與js的交互更容易,解析更方便
22. 實(shí)現(xiàn)多個(gè)標(biāo)簽之間的通信調(diào)用localStorage,cookies等本地存儲(chǔ)進(jìn)行存儲(chǔ)相關(guān)信息
三者的共同點(diǎn):都保存在瀏覽器。
三者的區(qū)別:
與服務(wù)器的交互
cookie數(shù)據(jù)始終在同源的http請(qǐng)求中攜帶(即使不需要),即cookie在瀏覽器和服務(wù)器間來(lái)回傳遞。
而sessionStorage和localStorage不會(huì)自動(dòng)把數(shù)據(jù)發(fā)給服務(wù)器,僅在本地保存。cookie數(shù)據(jù)還有路徑(path)的概念,可以限制cookie只屬于某個(gè)路徑下。
存儲(chǔ)大小限制也不同,
cookie數(shù)據(jù)不能超過(guò)4k,同時(shí)因?yàn)槊看蝖ttp請(qǐng)求都會(huì)攜帶cookie,所以cookie只適合保存很小的數(shù)據(jù),如會(huì)話標(biāo)識(shí)。
sessionStorage和localStorage 雖然也有存儲(chǔ)大小的限制,但比cookie大得多,可以達(dá)到5M或更大。
數(shù)據(jù)有效期不同,
sessionStorage:僅在當(dāng)前瀏覽器窗口關(guān)閉前有效,自然也就不可能持久保持;
localStorage:始終有效,窗口或?yàn)g覽器關(guān)閉也一直保存,因此用作持久數(shù)據(jù);
cookie只在設(shè)置的cookie過(guò)期時(shí)間之前一直有效,即使窗口或?yàn)g覽器關(guān)閉。
作用域不同,
sessionStorage不在不同的瀏覽器窗口中共享,即使是同一個(gè)頁(yè)面;
localStorage 在所有同源窗口中都是共享的;
cookie也是在所有同源窗口中都是共享的。
23. 哪些操作會(huì)造成內(nèi)存泄露內(nèi)存泄露指任何對(duì)象在不再擁有或不再需要它之后依然存在
setTimeout第一個(gè)參數(shù)是字符串而不是函數(shù)的時(shí)候就會(huì)造成內(nèi)存泄露
閉包
控制臺(tái)日志
循環(huán)(兩個(gè)對(duì)象彼此引用且彼此保留)
24. js垃圾回收方式標(biāo)記清除:這是js最常用的垃圾回收方法,當(dāng)一個(gè)變量進(jìn)入執(zhí)行環(huán)境時(shí),例如函數(shù)中聲明一個(gè)變量,將其標(biāo)記為進(jìn)入環(huán)境,當(dāng)變量離開(kāi)環(huán)境時(shí),(函數(shù)執(zhí)行結(jié)束),標(biāo)記為離開(kāi)環(huán)境
引用計(jì)數(shù): 跟蹤記錄每個(gè)值被引用的次數(shù),聲明一個(gè)變量,并將引用 類型賦值給這個(gè)變量,則這個(gè)值的引用次數(shù)+1,當(dāng)變量的值變成了另一個(gè),則這個(gè)值的引用次數(shù)-1,當(dāng)值的引用次數(shù)為0的時(shí)候,就回收
25. 閉包函數(shù)嵌套函數(shù)
子級(jí)函數(shù)調(diào)用父級(jí)函數(shù)的參數(shù)或變量
經(jīng)典閉包
function outer(){ var a = 1; function inner(){ alert(a); } return inner } var inn = outer(); inn();
點(diǎn)擊li返回li下標(biāo)
普通函數(shù)調(diào)用,指向windows
window.value=1; function getValue(){ console.log(this.value); } getValue();//輸出1,此時(shí)的this指向window
對(duì)象的方法調(diào)用,指向?qū)ο?/pre>var Obj={ value:2, getValue:function(){ console.log(this.value);//輸出2,this指向Obj } }構(gòu)造器方法調(diào)用,指向構(gòu)造函數(shù)實(shí)例出來(lái)的對(duì)象function main(val){ this.value=val; } main.prototype.getValue=function(){ console.log(this.value); } var fun=new main(3); fun.getValue(); fun.value;//輸出3,this指向main的實(shí)例對(duì)象funcall,apply,bind可以自定義this指向第一個(gè)參數(shù)function showValue(){ console.log(this.value); } var obj={ value:4 } showValue.call(obj)//輸出4,this指向了obj對(duì)象function showValue(){ console.log(this.value); } var obj={ value:4 } var showValue2=showValue.bind(obj); showValue2()//輸出4,this指向了obj對(duì)象27. 高階函數(shù)函數(shù)作為參數(shù)傳遞,
函數(shù)作為返回值輸出
28. new操作符到底干了什么創(chuàng)建一個(gè)新對(duì)象
將構(gòu)造函數(shù)的作用域賦值給新對(duì)象(所以this指向了這個(gè)新對(duì)象)
執(zhí)行構(gòu)造函數(shù)的代碼(為這個(gè)新對(duì)象添加屬性)
返會(huì)新對(duì)象
29. js嚴(yán)格模式"use strict"
消除js一些不合理的用法
消除代碼運(yùn)行的一些不安全之處
增加運(yùn)行速度
為未來(lái)新版本js做鋪墊變量必須聲明
對(duì)象不能出現(xiàn)重復(fù)屬性名
arguments改變,不會(huì)影響函數(shù)參數(shù)
eval,arguments變?yōu)殛P(guān)鍵字,不能作為變量名
不允許使用with
不用call,apply,bind改變this指向,一般函數(shù)調(diào)用指向null
30. 事件代理事件委托原理是使用dom的冒泡,將事件綁定到父元素上,讓父元素進(jìn)行監(jiān)聽(tīng),提高性能
31.什么是版本控制,版本控制是一種記錄一個(gè)或若干文件內(nèi)容變化,以便將來(lái)查閱修改以及更新。
32.ajax請(qǐng)求ajax請(qǐng)求四步
創(chuàng)建一個(gè)xhr對(duì)象 var xhr = new XmlHttpRequest()
判斷就緒狀態(tài)為4時(shí)執(zhí)行代碼
xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ console.log(responseText); } }創(chuàng)建請(qǐng)求 xhr.open("get","url",true)
發(fā)送請(qǐng)求 xhr.send(null)
33.在瀏覽器中輸入U(xiǎn)RL到整個(gè)頁(yè)面顯示在用戶面前時(shí)這個(gè)過(guò)程中到底發(fā)生了什么DNS解析
TCP連接
發(fā)送HTTP請(qǐng)求
服務(wù)器處理請(qǐng)求并返回HTTP報(bào)文
瀏覽器解析渲染頁(yè)面
連接結(jié)束
詳細(xì):首先根據(jù)url中的域名,在遠(yuǎn)程服務(wù)器中查詢對(duì)應(yīng)
34.ajax和jsonajax用于web頁(yè)面中實(shí)現(xiàn)異步數(shù)據(jù)交互,實(shí)現(xiàn)頁(yè)面局部?jī)?nèi)容刷新優(yōu)點(diǎn):能夠進(jìn)行內(nèi)容局部加載刷新,減少帶寬,避免用戶不斷刷新以及頁(yè)面跳轉(zhuǎn),提高用戶體驗(yàn)
缺點(diǎn):對(duì)搜索引擎不友好;瀏覽器不支持ajax的后退;
json是一種請(qǐng)求輕量級(jí)的數(shù)據(jù)交互格式優(yōu)點(diǎn):輕量級(jí),便于人的閱讀理解,便于機(jī)器解析
35.http考點(diǎn) 常用的HTTP方法有哪些GET:
GET與POST方法的區(qū)別
POST:
PUT:
DELETE:get主要是從服務(wù)器獲取資源,post主要是像服務(wù)器發(fā)送數(shù)據(jù)
get傳輸數(shù)據(jù)通過(guò)url請(qǐng)求,利用k=v的形式放在url后面,用?連接,多個(gè)用&連接而post是存放在,ajax中的data中的,get傳輸?shù)倪^(guò)程使用戶可見(jiàn) 的,而post是對(duì)用戶不可見(jiàn)的。
get傳輸?shù)臄?shù)據(jù)量小,因?yàn)槭躸rl的長(zhǎng)度限制,但是效率高,post能上傳的數(shù)據(jù)量大
post較get更安全一些
get方式傳遞的中文字符可能會(huì)亂碼,post支持標(biāo)準(zhǔn)字符集,可以正確傳遞中文字符
http請(qǐng)求報(bào)文與響應(yīng)報(bào)文格式請(qǐng)求報(bào)文包含三部分:
請(qǐng)求行:包含請(qǐng)求方法、URI、http版本信息
請(qǐng)求首部字段
請(qǐng)求內(nèi)容實(shí)體
響應(yīng)報(bào)文包含三部分:
狀態(tài)行:包含HTTP版本、狀態(tài)碼、狀態(tài)碼的原因短語(yǔ)
響應(yīng)首部字段
響應(yīng)內(nèi)容實(shí)體
http狀態(tài)碼100-199:成功接收請(qǐng)求,但需要進(jìn)行下一步請(qǐng)求
200-299:成功接收請(qǐng)求,并完成整個(gè)處理過(guò)程
300-399:為完成全部請(qǐng)求,客戶需近一步細(xì)化需求
400-499:客戶端請(qǐng)求有錯(cuò)誤,包括語(yǔ)法錯(cuò)誤或不能正常執(zhí)行
500-599:服務(wù)器端出現(xiàn)錯(cuò)誤
http缺點(diǎn)與https通信使用明文不加密,內(nèi)容可能被竊聽(tīng)
不驗(yàn)證通信方身份,可能遭到偽裝
無(wú)法驗(yàn)證報(bào)文完整性,可能被篡改
https就是加上加密處理(一般是SSL安全通信線路)+認(rèn)證+完整性保護(hù)
常用:
200 正常,表示一切正常,返會(huì)的是正常請(qǐng)求結(jié)果
302/307 臨時(shí)重定向,表示請(qǐng)求的文檔,已被臨時(shí)移動(dòng)到別處
304 未修改,調(diào)用緩存的數(shù)據(jù)
403 服務(wù)器拒絕客戶請(qǐng)求
404 服務(wù)器不存在客戶想要找的資源
500 服務(wù)器內(nèi)部錯(cuò)誤
36.數(shù)組去重的一種相對(duì)好理解的方法利用indexOf方法的去重
indexOf() 方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置。
var arr = [1,1,2,3,4,2,6,4,5,7]; var nArr = []; function removeItem(arr){ for(var i=0;ies6 let constlet相當(dāng)于給js新增了塊級(jí)作用域,聲明的變量只在let命令所在的代碼塊內(nèi)有效
const也是聲明變量,它聲明的變量,不能改變,可以用來(lái)聲明第三方庫(kù)變量的應(yīng)用
class extends superclass定義一個(gè)類,其中有一個(gè)construct方法,construct方法中的this代表實(shí)例對(duì)象,construct以外還有其他的方法,construct內(nèi)定義的方法屬性是實(shí)例對(duì)象自己的,construct外的方法屬性是所有實(shí)例對(duì)象共享的
class之間可以通過(guò)extends實(shí)現(xiàn)繼承
super指代父類的實(shí)例,子類construct中必須先調(diào)用super()方法,因?yàn)樽宇悰](méi)有自己的this對(duì)象,是繼承父類的this對(duì)象
arrow function(箭頭函數(shù))除了書(shū)寫簡(jiǎn)潔了很多,最大的優(yōu)點(diǎn)是this指向,使用箭頭函數(shù),函數(shù)內(nèi)部的this就是定義時(shí)所在的對(duì)象。箭頭函數(shù)根本沒(méi)有自己的this,this是繼承外面的,它內(nèi)部的this就是外層代碼塊的this
template string(模板字符串)ajax調(diào)用數(shù)據(jù)庫(kù),需要向文檔中插入大段html的時(shí)候,傳統(tǒng)的字符串拼接太麻煩,引入模板工具庫(kù)會(huì)稍微好點(diǎn),不過(guò)還是沒(méi)有es6的template string簡(jiǎn)單,可以直接用反單引號(hào)包括代碼塊``,用${}來(lái)引用變量,所有的空格縮進(jìn)都會(huì)保留到輸出中
destructuring(解構(gòu)賦值)es6按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這就成為解構(gòu),也就是說(shuō),運(yùn)用es5的方法,數(shù)組和對(duì)象中的變量需要,一個(gè)個(gè)進(jìn)行賦值,而es6可以一步到位
default,rest(默認(rèn)值,擴(kuò)展語(yǔ)法)當(dāng)函數(shù)忘記傳參的時(shí)候,給它一個(gè)默認(rèn)值,傳統(tǒng)方法是在函數(shù)中運(yùn)用||,es6可以直接在參數(shù)中寫上
function animal(type){ type = type || "cat" console.log(type) } animal()function animal(type = "cat"){ console.log(type) } animal()function animals(...types){ console.log(types) } animals("cat", "dog", "fish") //["cat", "dog", "fish"]gulpgulp是一種自動(dòng)化構(gòu)建工具,前端工程化開(kāi)發(fā)的一種工具,增強(qiáng)開(kāi)發(fā)流程
使用方便,npm安裝,新建gulpfile.js,導(dǎo)入gulp模塊,let gulp = require("gulp")
通過(guò)default任務(wù)去定義工作流
最后在終端執(zhí)行g(shù)ulp來(lái)進(jìn)行自動(dòng)化操作api很簡(jiǎn)單只有四種gulp.task 創(chuàng)建任務(wù) :參數(shù)任務(wù)名稱,前置任務(wù)數(shù)組,回調(diào)函數(shù)
gulp.src 尋找文件:通過(guò)路徑找到一個(gè)或多個(gè)文件
gulp.dest 輸出到指定目錄:如果沒(méi)有就新建一個(gè)
gulp.watch 監(jiān)聽(tīng)文件變化,執(zhí)行任務(wù)
pipe具體不清楚,總之,除了gulp.src之外,其他執(zhí)行條件都要放在.pipe()中
Bootstrap Bootstrap和Foundation的比較UI元素的不同Bootstrap給出了能想到的一切元素,也就是試圖提供所有定義好的UI,比如一個(gè)導(dǎo)航,給予一個(gè)默認(rèn)導(dǎo)航的樣式
Foundation只給定了限定的幾種元素,可以自己自定義,更適合創(chuàng)造
尺寸單位不一樣,Bootstrap是px
Foundation是rem
網(wǎng)格布局有所不同Foundation 的網(wǎng)格可以自動(dòng)適配當(dāng)前瀏覽器的寬度,F(xiàn)oundation 則會(huì)靈活適配當(dāng)前的瀏覽器寬度, 這是一種新的技術(shù)手段, 自動(dòng)適配的同時(shí), 可以表現(xiàn)的與 Transformer 一樣的效果.
Boostrap 則是預(yù)定義了幾種網(wǎng)格尺寸來(lái)適配主流的設(shè)備和屏幕.Bootstrap 會(huì)在你改變?yōu)g覽器寬度的時(shí)候突然改變它的網(wǎng)格.
移動(dòng)設(shè)備Foundation移動(dòng)設(shè)備優(yōu)先
Bootstrap也支持移動(dòng)設(shè)備
社區(qū)Bootstrap有一個(gè)完備的社區(qū),有什么問(wèn)題幾乎都可以迅速解決
Foundation則沒(méi)有,需要自力更生
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/89550.html
摘要:技術(shù)一面一面主要考察基礎(chǔ),有些會(huì)有技術(shù)筆試,比如騰訊,。騰訊的面試官就很喜歡問(wèn),安全,瀏覽器緩存方面的問(wèn)題,計(jì)算機(jī)基礎(chǔ),但是要懂為什么。 這篇文章簡(jiǎn)單總結(jié)下2018年內(nèi)我的一些前端面試經(jīng)歷, 在這簡(jiǎn)單分享一下,希望對(duì)大家有所啟發(fā)。 樓主在深圳,畢業(yè)兩年。面的主要是深圳的幾家公司。 包括: 騰訊, 螞蟻金服, Lazada, Shopee, 有贊 等 。 樓主在準(zhǔn)備面試前, 想著復(fù)習(xí)一...
摘要:收集的一些前端面試題從面試題發(fā)現(xiàn)不足,進(jìn)而查漏補(bǔ)缺,比通過(guò)面試更難得及各大互聯(lián)網(wǎng)公司前端筆試面試題篇及各大互聯(lián)網(wǎng)公司前端筆試面試題篇面試題個(gè)和個(gè)經(jīng)典面試題前端開(kāi)發(fā)面試題如何面試前端工程師很重要個(gè)變態(tài)題解析如何通過(guò)餓了么面試輕 收集的一些前端面試題 從面試題發(fā)現(xiàn)不足,進(jìn)而查漏補(bǔ)缺,比通過(guò)面試更難得 1 BAT及各大互聯(lián)網(wǎng)公司2014前端筆試面試題--Html,Css篇 2 BAT...
摘要:收集的一些前端面試題從面試題發(fā)現(xiàn)不足,進(jìn)而查漏補(bǔ)缺,比通過(guò)面試更難得及各大互聯(lián)網(wǎng)公司前端筆試面試題篇及各大互聯(lián)網(wǎng)公司前端筆試面試題篇面試題個(gè)和個(gè)經(jīng)典面試題前端開(kāi)發(fā)面試題如何面試前端工程師很重要個(gè)變態(tài)題解析如何通過(guò)餓了么面試輕 收集的一些前端面試題 從面試題發(fā)現(xiàn)不足,進(jìn)而查漏補(bǔ)缺,比通過(guò)面試更難得 1 BAT及各大互聯(lián)網(wǎng)公司2014前端筆試面試題--Html,Css篇 2 BAT...
摘要:春招結(jié)果五月份了,春招已經(jīng)接近尾聲,因?yàn)榈搅酥芪逋砩蟿偤糜锌?,所以?jiǎn)單地記錄一下自己的春招過(guò)程。我的春招從二月初一直持續(xù)到四月底,截止今天,已經(jīng)斬獲唯品會(huì)電商前端研發(fā)部大數(shù)據(jù)與威脅分析事業(yè)部京東精銳暑假實(shí)習(xí)生的騰訊的是早上打過(guò)來(lái)的。 春招結(jié)果 五月份了,春招已經(jīng)接近尾聲,因?yàn)榈搅酥芪逋砩蟿偤糜锌?,所以?jiǎn)單地記錄一下自己的春招過(guò)程。我的春招從二月初一直持續(xù)到四月底,截止今天,已經(jīng)斬獲唯品...
摘要:文末評(píng)論送書(shū),學(xué)委會(huì)用這個(gè)抽獎(jiǎng)程序來(lái)進(jìn)行嚴(yán)格抽獎(jiǎng),周六晚上點(diǎn)整定時(shí)抽獎(jiǎng)并視頻公布出來(lái),敬請(qǐng)期待。本文講的函數(shù)值傳遞問(wèn)題,是寫程序經(jīng)常遇到,特別的是動(dòng)態(tài)參數(shù)在高級(jí)框架中使用很廣泛。 ...
閱讀 2710·2021-11-18 10:07
閱讀 1157·2021-08-03 14:04
閱讀 777·2019-08-30 13:08
閱讀 2632·2019-08-29 15:33
閱讀 1169·2019-08-29 14:07
閱讀 3082·2019-08-29 14:04
閱讀 1516·2019-08-29 11:19
閱讀 1201·2019-08-29 10:59