服務器處理http請求,並返回響應報文。響應報文包括三個部分:css
瀏覽器接受到http服務器發送過來的響應報文,並開始解析html文檔,渲染頁面。具體的渲染過程包括:構建DOM樹、構建渲染樹、定位頁面元素、繪製頁面元素等html
以 var p=new ClassA( ) 爲列web
var p= {};瀏覽器
p.__proto__ = ClassA.prototype;緩存
ClassA.call(p); 服務器
這裏有一點須要說明: 正常來說構造函數中是不用寫return語句的,由於它會默認返回新建立的對象。可是,若是在構造函數中寫了return語句並且return的是一個對象,那麼函數就會覆蓋掉新建立的對象,而返回此對象;若是return的是基本類型如字符串、數字、布爾值等,那麼函數會忽略掉return語句,仍是返回新建立的對象。dom
先簡單的解釋一下函數
事件委託:事件委託是利用事件冒泡,只指定一個事件處理程序來管理某一類型的全部事件。佈局
爲何要用事件委託?性能
1.在JavaScript中添加到頁面上的事件處理程序的個數直接關係到頁面的總體運行性能。爲何呢?由於,每一個事件處理函數都是對象,對象會佔用內存,內存中的對象越多,性能就越差。此外,必須事先指定全部的事件處理程序而致使的DOM訪問次數,會延遲整個頁面的交互就緒時間。
2.對有不少個數據的表格以及很長的列表逐個添加事件,簡直就是噩夢。因此事件委託,能極大地提升頁面的運行性能,減小開發人員的工做量。
先看一下dom節點構成
實現效果是左右分別空出200px和300px區域,效果如圖:
出現了以下狀況,怎麼辦,彆着急慢慢來:
咱們的目標是讓left、main、right依次並排,可是上圖中left和right都是位於下一行,這裏的技巧就是使用負的margin-left:
負的margin-left會讓元素沿文檔流向左移動,若是負的數值比較大就會一直移動到上一行。關於負的margin的應用也是博大精深,這裏確定是不能詳細介紹了。
設置left部分的margin-left爲-100%,就會使left向左移動一整個行的寬度,因爲left左邊是父元素的邊框,因此left繼續跳到上一行左移,一直移動到上一行的開頭,並覆蓋了main部分(仔細觀察下圖,你會發現main裏面的字「main」不見了,由於被left遮住了),left上移事後,right就會處於上一行的開頭位置,這時再設置right部分margin-left爲負的寬度,right就會左移到上一行的末尾。
至此,咱們完成了三列中間自適應的佈局,也就是傳說中的聖盃佈局。完整的代碼以下:
聖盃佈局和雙飛翼佈局解決問題的方案在前一半是相同的,也就是三欄所有float浮動,但左右兩欄加上負margin讓其跟中間欄div並排,以造成三欄佈局。不一樣在於解決 「中間欄div內容不被遮擋」問題的思路不同。
他的HTML結構發生了變化:
直接貼出代碼,讀者能夠自行參透他們的異同:
雙飛翼佈局比聖盃佈局多使用了1個div,少用大體4個css屬性(聖盃佈局container的 padding-left和padding-right這2個屬性,加上左右兩個div用相對佈局position: relative及對應的right和left共4個屬性,;而雙飛翼佈局子div裏用margin-left和margin-right共2個屬性,比聖盃佈局思路更直接和簡潔一點。簡單提及來就是:雙飛翼佈局比聖盃佈局多建立了一個div,但不用相對佈局了
那麼container下屬的main、left和right這三個子元素自動成爲容器成員,稱爲 Flex 項目(flex item),簡稱」項目」。
項目根據內容進行彈性佈局:
能夠看出三個項目的排序方式不同了,main排在了第一個,要讓main在中間,left在左邊,能夠經過Flex容器下的項目的屬性「order」屬性來設置
對於order屬性:定義項目的排列順序,越小越靠前,默認爲0。
這樣就實現了咱們的目標,是否是很簡單?這就是flex佈局的魅力。。。
實現結果固然是同樣的啦!