Debug前端HTML/CSS
我強烈感覺到至少有一半人會這麼想:「HTML/CSS甚至算不上一門編程語言」。不過,前端開發中,HTML/CSS方面Debug技巧不足導致的問題非常多。
並不是每一個開發者都知道他眼前早就有一個非常強大的Debugger,可以幫助他追蹤和消除bug。這個Debugger就是他自己的谷歌瀏覽器。在之前一篇博客中,我主要介紹了Console。在這篇,我將專註於Elements標籤。
這篇文章將會包含:
- 將你的瀏覽器變為IDE-可動態編輯的HTML/CSS
- HTML斷點
- 改變元素狀態
- 搜索特定的元素
- 通過實例來練習新的技巧
- 理解元素樣式?understanding styles in the Elements tab
好啦,基本介紹的差不多了。接下來給你展示新的技巧。
快速進入Element標籤的兩個方法
- 對著頁面任何元素(Elements)點擊右鍵,選擇「檢查」
- 使用Ctrl+Shift+I(Mac:Cmd+Opt+I)打開開發者面板,選擇元素(Elements)標籤。
元素(Elements)標籤的左側
DOM樹
首先,DOM樹元素可以被進一步檢查(inspected)。點擊左側的三角來展開查看更多的元素。
點擊滑鼠右鍵,會有更多的選擇:
- Add attribute - 對選中的元素添加新的屬性
- Edit attribute - 編輯某個屬性,當你滑鼠在某個屬性上方點擊右鍵時方才顯示。
- Edit as HTML?—?你可以編輯整個HTML;如果你想把元素的一部分拷貝使用,這樣操作也很方便。
Copy:
Copy outerHTML
?—?將整個標籤及其內容拷貝。Copy selector
?—?拷貝CSS選擇器(div > span > #id)Copy XPath
?—?拷貝XPath //*[@id=」answer11208745–20」]/div/div[3]/time, 更多請查看文末拓展閱讀Cut element
?—?剪切元素Copy element
?—?拷貝元素Hide element
?—?通過添加display:none
來臨時性地隱藏元素;(cmd+H/Ctrl+H)Delete element
?—?刪除元素,可以使用cmd+z來取消刪除Expand all
?— 將所有節點展開Collapse all
?—?將所有節點摺疊:active
?—?將元素設置為active狀態*:hover
?—?將元素設置為hover狀態*:focus
?—?將元素設置為focus狀態*:visited
?—?將元素設置為已訪問狀態*- Scroll into view?—?將網頁快速滑動到元素所在位置
Break on:
subtree modification
?—?在子節點被修改的時候中斷執行 **attribute modification
?—?在屬性被修改的時候中斷執行 **node removal
**- 在右側的樣式(styles)中檢查效果** 在右側(DOM breakpoints)可以查看設置的斷點
斷點實戰
不實戰一下,理解起來可能有點困難,特別是如果你還從未使用過它們。接下來我創建一個簡單的例子交給你來玩。
所有的步驟都在HTML文件中。如果debugger在jQuery中中斷暫停,你可以將jQuery屏蔽(如下圖所示)。
點擊查看示例
元素快速定位
點擊該圖標,然後在頁面上選中元素,DOM tree就會快速定位到該元素的源代碼位置。
源代碼
If you click on the source file like styles, fonts, js files, there will be some additional options.
如果你點擊樣式(style),fonts,js文件,會有一些額外的選項。
捕獲節點截圖
一個很酷的技巧就是你可以將選中的節點生成一張png圖片。
- 點擊滑鼠左鍵選中元素
- 使用 Cmd+Shift+P/Ctrl+Shift+P打開命令輸入窗口
- 輸入
node screenshot
- 選中
Capture node screenshot
將會生成一張PNG圖片。
通過字元串、CSS選擇器、XPath快速查找
當元素標籤打開,輸入Cmd/Ctrl+f,將會打開一個輸入窗口。
直接編輯源文件
在Chrome開發者面板可以直接編輯源文件並保存,不用刷新頁面。
- 打開source標籤,選中並打開你想要編輯的文件並編輯
- 然後右鍵,如上圖所示
- 在Windows下,你可以點擊整個文件夾(左側藍色的圖標),然後選擇
Add folder to workspace
- 在MacOS下,你可以將整個文件夾拖動到你本地的目錄。你也可以右鍵選擇
Add folder to workspace
- 接下來你所有的更改都會自動反應到對應的本地代碼。
Fundebug是可以復現用戶行為的JavaScript錯誤監控平台,支持各種框架,可以幫助您第一時間發現BUG!
元素(elements)標籤的右側區域
樣式(styles)
當你選中某個元素,對應的樣式以及其他一些屬性會在右側顯示出來。
:hov
- 當你展開:hov
,其提供的選項可以讓你激活元素的不同狀態,比如hover, focus。在DOM tree上也可以直接對元素進行這樣的操作。.cls
- 對選中的元素添加class+
- 添加新的style到該元素
在Styles標籤,你可以找到對應元素適配的所有的style。
一些標記的含義
黃色的警告標識表面樣式的名字或則值格式不正確。比如上圖widd
是一個錯誤的屬性名。
被劃掉意味著被其它樣式覆蓋,比如另一個樣式使用了important
關鍵字。
灰色背景的樣式文件是有效但不可編輯。這些樣式文件來自於瀏覽器。
右側有該樣式所在的文件,點擊即可查看該文件。
樣式的計算結果(Computed Styles)
最上方的矩形框可視化地展示了padding, border和margin的效果以及其值。
對於非靜態定位的元素,top、right、bottom、left屬性會顯示出來。所有的值都可以左鍵雙擊,然後修改。
下面是所有適用的樣式規則。每一條都可以展開查看,並且右側有對應的原文件的位置。
所有計算好的樣式不可編輯,不過你可以點擊灰色的箭頭進入對應的樣式來進行編輯。
Event Listeners
在該標籤頁可以看到所有的事件監聽函數。
位於左側的刷新按鈕
?—? 刷新所有監聽事件父元素(Ancestors)選擇框
?—?顯示/隱藏所有元素的父元素的監聽函數
All/Blocking/Passive下拉菜單,你可以選擇一個:
Passive events listeners
?—?一個新的web標準,在Chrome51發布的新特性,可以提升滑動的性能。Chrome Release NotesBlocking
?—?典型的那些過時的事件監聽.Framework listeners
?—?檢車來自框架的事件監聽。當選中後,我們看到的jQuery不再是一個連接,而是具體函數調用的位置。
每天使用
當你在閱讀不熟悉的代碼的時候,事件監聽標籤非常有用。它幫助你快速定位該函數綁定到哪個元素。」Show function definition」可以跳轉到函數的定義。
如果你使用for
循環來添加元素,可能你不小心把多個事件綁定到同一個元素。那麼通過查看事件監聽可以幫你發現這個bug。
記得選中Framework listeners
來查看具體的綁定,而不是抽象的jQuery。Fiddle示例
屬性
每一個被選中的HTL元素都是一個DOM對象。它具有相應的屬性。屬性標籤顯示選中的DOM對象的繼承結構。
老實說,我並不怎麼使用這個功能。我主要的使用場景是查看元素的屬性,而不是使用console.log
以及重新載入和刷新。如果你有什麼更好地說那個場景,不妨分享一下。
Shapes and $scope
Shapes和$scope是額外的標籤來自Chrome的插件。在接下來的文章我會詳細介紹。
結束語
如果你想知道更多,可以查看命令菜單(Command Menu),或則拓展閱讀。
推薦閱讀:
※初識markdown
※字元編碼:計算機的巴別塔
※meta標籤
※從零開始如何系統學好前端開發基礎?
※記錄weasyprint在window10+python3的安裝
TAG:HTML |