CSS選擇器有哪些?
http://www.runoob.com/cssref/css-selectors.html
CSS中px、em、rem的區別?
px像素(Pixel)。相對長度單位。像素px是相對於顯示器屏幕分辨率而言的。(引自CSS2.0手冊)
PX特點
1. IE無法調整那些使用px作為單位的字體大小;
2. 國外的大部分網站能夠調整的原因在於其使用了em或rem作為字體單位;
3. Firefox能夠調整px和em,rem,但是96%以上的中國網民使用IE瀏覽器(或內核)。
em是相對長度單位,相對於當前對象內文本的字體尺寸,如當前對行內文本的字體尺寸未被人為設置,則相對於瀏覽器的默認字體尺寸。(引自CSS2.0手冊)
(任意瀏覽器的默認字體高都是16px。所有未經調整的瀏覽器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。為了簡化font-size的換算,需要在css中的body選擇器中聲明Font-size=62.5%,這就使em值變為 16px*62.5%=10px, 這樣12px=1.2em, 10px=1em, 也就是說只需要將你的原來的px數值除以10,然后換上em作為單位就行了。)
EM特點
1. em的值並不是固定的;
2. em會繼承父級元素的字體大小
所以我們在寫CSS的時候,需要注意兩點:
1. body選擇器中聲明Font-size=62.5%;
2. 將你的原來的px數值除以10,然后換上em作為單位;
3. 重新計算那些被放大的字體的em數值。避免字體大小的重復聲明。
rem是CSS3新增的一個相對單位(root em,根em),這個單位引起了廣泛關注。這個單位與em有什么區別呢?區別在於使用rem為元素設定字體大小時,仍然是相對大小,但相對的只是HTML根元素。這個單位可謂集相對大小和絕對大小的優點於一身,通過它既可以做到只修改根元素就成比例地調整所有字體大小,又可以避免字體大小逐層復合的連鎖反應。目前,除了IE8及更早版本外,所有瀏覽器均已支持rem。對於不支持它的瀏覽器,應對方法也很簡單,就是多寫一個絕對單位的聲明。這些瀏覽器會忽略用rem設定的字體大小。
addClass、removeClass、toggleClass三者的區別?
.addClass(“className”)方法是用來給指定元素增加類名,也就是說給指定的元素追加樣式;
.removeClass(“className”)方法是用來給指定的元素移除類名,也就是說給指定元素移除樣式;
.toggleClass(“className”)方法是用來給脂定的元素增加或移除類名(如果元素的類名存在就移除,如果不存在就增加),也就是說用來給指定的元素進行樣式切換(如果元素存在樣式則去掉,如果不存在則加上樣式)。
JS有哪些數據類型?
1,基本類型:字符串類型(string),數字類型(number),布爾類型(boolean)
2,復雜類型:數組類型(array),對象類型(object),函數類型(function),正則類型(regexp)
3,空類型:undefine 和 null
字符串轉數字類型方法:1,加減乘除取余 接字符串 隱士轉換
2,parseInt(字符串) 轉為整數
3,parseFloat(字符串) 轉為浮點數類型
4,number (字符串)
數字轉字符串類型方法:1,.toString()
2.string() 一般用於轉換NAN和 undefine
3.連接符+號
字符串或數字轉boolean類型: boolean(字符串) 除false NaN 空字符串 數字0 和undefine 其余轉換后都是true
談談document.ready和window.onload的區別?
最基本的區別:
1.執行時間
window.onload必須等到頁面內包括圖片的所有元素加載完畢后才能執行。
$(document).ready()是DOM結構繪制完畢后就執行,不必等到加載完畢。
2.編寫個數不同
window.onload不能同時編寫多個,如果有多個window.onload方法,只會執行一個
$(document).ready()可以同時編寫多個,並且都可以得到執行
3.簡化寫法
window.onload沒有簡化寫法
$(document).ready(function(){})可以簡寫成$(function(){});
jQuery中.bind() .live() .delegate() .on()區別?
https://www.cnblogs.com/chenlogin/p/5105710.html
setTimeout與setInterval的主要區別?
setTimeout()方法只運行一次,也就是說當達到設定的時間后就出發運行指定的代碼,運行完后就結束了,如果還想再次執行同樣的函數,可以在函數體內再次調用setTimeout(),可以達到循環調用的效果。
setInterval()是循環執行的,即每達到指定的時間間隔就執行相應的函數或者表達式,是真正的定時器。
get和post的區別?
get把請求的數據放在url上,即HTTP協議頭上,其格式為: 以?分割URL和傳輸數據,參數之間以&相連。 數據如果是英文字母/數字,原樣發送, 如果是空格,轉換為+, 如果是中文/其他字符,則直接把字符串用BASE64加密,及“%”加上“字符串的16進制ASCII碼”。
post把數據放在HTTP的包體內(requrest body)。
get提交的數據最大是2k(原則上url長度無限制,那么get提交的數據也沒有限制咯?限制實際上取決於瀏覽器,(大多數)瀏覽器通常都會限制url長度在2K個字節,即使(大多數)服務器最多處理64K大小的url。也沒有卵用。)。
post理論上沒有限制。實際上IIS4中最大量為80KB,IIS5中為100KB。
GET產生一個TCP數據包,瀏覽器會把http header和data一並發送出去,服務器響應200(返回數據);
POST產生兩個TCP數據包,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。
GET在瀏覽器回退時是無害的,POST會再次提交請求。
GET產生的URL地址可以被Bookmark,而POST不可以。
GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。
GET請求只能進行url編碼,而POST支持多種編碼方式。
GET請求參數會被完整保留在瀏覽器歷史記錄里,而POST中的參數不會被保留。
GET只接受ASCII字符的參數的數據類型,而POST沒有限制
那么,post那么好為什么還用get?get效率高!。
如何實現瀏覽器內多個標簽頁之間的通信?
方法一:localstorge在一個標簽頁里被添加、修改或刪除時,都會觸發一個storage事件,通過在另一個標簽頁里監聽storage事件,即可得到localstorge存儲的值,實現不同標簽頁之間的通信。
方法二:使用cookie+setInterval,將要傳遞的信息存儲在cookie中,每隔一定時間讀取cookie信息,即可隨時獲取要傳遞的信息。
token、session的區別?
session:session 從字面上講,就是會話。這個就類似於你和一個人交談,你怎么知道當前和你交談的是張三而不是李四呢?對方肯定有某種特征(長相等)表明他就是張三。
session 也是類似的道理,服務器要知道當前發請求給自己的是誰。為了做這種區分,服務器就要給每個客戶端分配不同的“身份標識”,然后客戶端每次向服務器發請求的時候,都帶上這個“身份標識”,服務器就知道這個請求來自於誰了。至於客戶端怎么保存這個“身份標識”,可以有很多種方式,對於瀏覽器客戶端,大家都默認采用 cookie 的方式。
服務器使用session把用戶的信息臨時保存在了服務器上,用戶離開網站后session會被銷毀。這種用戶信息存儲方式相對cookie來說更安全,可是session有一個缺陷:如果web服務器做了負載均衡,那么下一個操作請求到了另一台服務器的時候session會丟失。
token:
Token的引入:Token是在客戶端頻繁向服務端請求數據,服務端頻繁的去數據庫查詢用戶名和密碼並進行對比,判斷用戶名和密碼正確與否,並作出相應提示,在這樣的背景下,Token便應運而生。
Token的定義:Token是服務端生成的一串字符串,以作客戶端進行請求的一個令牌,當第一次登錄后,服務器生成一個Token便將此Token返回給客戶端,以后客戶端只需帶上這個Token前來請求數據即可,無需再次帶上用戶名和密碼。最簡單的token組成:uid(用戶唯一的身份標識)、time(當前時間的時間戳)、sign(簽名,由token的前幾位+鹽以哈希算法壓縮成一定長的十六進制字符串,可以防止惡意第三方拼接token請求服務器)。
使用Token的目的:Token的目的是為了減輕服務器的壓力,減少頻繁的查詢數據庫,使服務器更加健壯。
cookie,localStorage和sessionStorage的區別?
共同點:都是保存在瀏覽器端、且同源的
區別:
1、cookie數據始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和服務器間來回傳遞,而sessionStorage和localStorage不會自動把數據發送給服務器,僅在本地保存。cookie數據還有路徑(path)的概念,可以限制cookie只屬於某個路徑下
2、存儲大小限制也不同,cookie數據不能超過4K,同時因為每次http請求都會攜帶cookie、所以cookie只適合保存很小的數據,如會話標識。sessionStorage和localStorage雖然也有存儲大小的限制,但比cookie大得多,可以達到5M或更大
3、數據有效期不同,sessionStorage:僅在當前瀏覽器窗口關閉之前有效;localStorage:始終有效,窗口或瀏覽器關閉也一直保存,因此用作持久數據;cookie:只在設置的cookie過期時間之前有效,即使窗口關閉或瀏覽器關閉
4、作用域不同,sessionStorage不在不同的瀏覽器窗口中共享,即使是同一個頁面;localstorage在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的
5、web Storage支持事件通知機制,可以將數據更新的通知發送給監聽者
6、web Storage的api接口使用更方便
HTTP1.0、HTTP1.1 和 HTTP2.0 的區別?
1、HTTP的歷史
早在 HTTP 建立之初,主要就是為了將超文本標記語言(HTML)文檔從Web服務器傳送到客戶端的瀏覽器。也是說對於前端來說,我們所寫的HTML頁面將要放在我們的 web 服務器上,用戶端通過瀏覽器訪問url地址來獲取網頁的顯示內容,但是到了 WEB2.0 以來,我們的頁面變得復雜,不僅僅單純的是一些簡單的文字和圖片,同時我們的 HTML 頁面有了 CSS,Javascript,來豐富我們的頁面展示,當 ajax 的出現,我們又多了一種向服務器端獲取數據的方法,這些其實都是基於 HTTP 協議的。同樣到了移動互聯網時代,我們頁面可以跑在手機端瀏覽器里面,但是和 PC 相比,手機端的網絡情況更加復雜,這使得我們開始了不得不對 HTTP 進行深入理解並不斷優化過程中
詳細介紹:https://mp.weixin.qq.com/s/GICbiyJpINrHZ41u_4zT-A
http和https的區別?https的原理?
https://www.cnblogs.com/wqhwe/p/5407468.html
https://www.cnblogs.com/niuniu1985/p/8425709.html
ES7在ES6的基礎上主要添加了兩項內容:
- Array.prototype.includes()方法
- 求冪運算符(**)
ES8特性:
主要新功能:
- 異步函數 Async Functions(Brian Terlson)
- 共享內存和Atomics(Lars T. Hansen)
次要新功能:
- Object.values / Object.entries(Jordan Harband)
- String padding(Jordan Harband,Rick Waldron)
- Object.getOwnPropertyDescriptors() (Jordan Harband,Andrea Giammarchi)
- 函數參數列表和調用中的尾逗號(Jeff Morrison)
對HTML5 websocket的了解?
WebSocket 是 HTML5 開始提供的一種在單個 TCP 連接上進行全雙工通訊的協議。
WebSocket 使得客戶端和服務器之間的數據交換變得更加簡單,允許服務端主動向客戶端推送數據。在 WebSocket API 中,瀏覽器和服務器只需要完成一次握手,兩者之間就直接可以創建持久性的連接,並進行雙向數據傳輸。
在 WebSocket API 中,瀏覽器和服務器只需要做一個握手的動作,然后,瀏覽器和服務器之間就形成了一條快速通道。兩者之間就直接可以數據互相傳送。
現在,很多網站為了實現推送技術,所用的技術都是 Ajax 輪詢。輪詢是在特定的的時間間隔(如每1秒),由瀏覽器對服務器發出HTTP請求,然后由服務器返回最新的數據給客戶端的瀏覽器。這種傳統的模式帶來很明顯的缺點,即瀏覽器需要不斷的向服務器發出請求,然而HTTP請求可能包含較長的頭部,其中真正有效的數據可能只是很小的一部分,顯然這樣會浪費很多的帶寬等資源。
HTML5 定義的 WebSocket 協議,能更好的節省服務器資源和帶寬,並且能夠更實時地進行通訊。
瀏覽器通過 JavaScript 向服務器發出建立 WebSocket 連接的請求,連接建立以后,客戶端和服務器端就可以通過 TCP 連接直接交換數據。
當你獲取 Web Socket 連接后,你可以通過 send() 方法來向服務器發送數據,並通過 onmessage 事件來接收服務器返回的數據。
http://www.runoob.com/html/html5-websocket.html
React_Flux入門