成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

重構HTML改善Web應用設計

開發 前端
重構是在不改變程序行為的基礎上進行小的改動,是代碼逐漸改善的過程。移除長期累積下來的爛碼,以得到更清晰和更容易維護,除錯以及添加新功能的代碼,這做法不能單純只出現在編碼的后期,甚至是你意識到你的代碼已經無從再下手非重寫不可的時候,而是從開始開發起,逐漸積累,逐漸修改。

本文從良構,有效性,布局三個角度,結合往日項目開發經歷, 整理總結重構HTML改善Web應用設計的幾點規則和做法。部分參考自《重構HTML改善Web應用設計》。

重構。什么是重構?為什么要重構。

重構是在不改變程序行為的基礎上進行小的改動,是代碼逐漸改善的過程。移除長期累積下來的爛碼,以得到更清晰和更容易維護,除錯以及添加新功能的代碼,這做法不能單純只出現在編碼的后期,甚至是你意識到你的代碼已經無從再下手非重寫不可的時候,而是從開始開發起,逐漸積累,逐漸修改。以前因為日常編碼的隨意性,導致問題日益積累,逐步擴散,***只能推倒重來。如果時間經受不起推倒重來,你別無選擇,唯一實現的選擇就是重構。

無論做什么,都不要因為追求***而忽略曉得改進,如果眼下時間足夠做一點重構,那就做一點兒。日后有時間還可以做更多。整體的重構設計雖然惹人注目令人難忘,但沒有平日的積累,何以收獲龐大的成就?你的目標應該是讓代碼每天都有新變化。堅持幾個月,我相信我們都能擁有驕傲地,清晰代碼。

 

良構

把標記轉換為符合現代標準的首要任務是實現良構。良構保證了DOM可操作的文檔樹結構的唯一性,因而成為可靠的跨瀏覽器的javascript代碼的基礎。對于一個亂構的頁面來說,任何可靠的自動化處理或測試都是非常難以保證的,其次,瀏覽器頁面的展示效果更是不可預估。對于亂構的頁面,不同的瀏覽器使用不同的方式補充確實的片段,并糾正其中的錯誤。因此,對于重構HTML,最要緊的無疑是實現頁面良構化。

要達到良構,大部分的網站要至少或全部做到以下幾點:

•所有的其實標簽都應有一個匹配的結束標簽

•空元素應該使用空元素的標簽語法

•所有的屬性都必須有一個值

•所有的屬性都需要用引號括起來

•所有的&好必須轉義為&

•所有的小于號都要轉義為<

•只有唯一的根元素

•所有未預定義的實體應用必須在DTD中聲明

針對往日因為個人編程習慣和隨意性容易犯的錯誤,從良構角度思考,整理一下日后構建HTML時,有幾點需要特別注意。

更好實現良構的幾個要點:

1.將名稱改成小寫。<P></P> 改寫為 <p></p>等,因為XHTML只使用小寫名稱,所有元素和屬性都要小寫,<TABLE>和<Table>都不被接收

2.給屬性值加引號。<span class = speack></span>改寫成<span class =“ speack”></span>等。一些空格的屬性有時候出現有做括號而沒有右括號,瀏覽器不宜定按照你的意愿解析,不同的瀏覽器有不同的解析效果,這就有可能造成跨瀏覽器問題。

3.補足遺漏的屬性。<input type = "radio" checked>改成<input type = "radio" checked = 'checked'>等。XHTML不支持只有屬性名稱而沒有值的語法。

4.將空標簽替換為空元素標簽。XML解析器要求所有的起始標簽都有匹配的結束標簽<p>要有對應的</p>,<br>改寫為</br>等

5.消除重疊。<strong><em>xxxx</strong></em>改寫成<strong><em>xxxx</em></strong>等。不同的瀏覽器對包含重疊元素的文檔所構建的DOM樹不一樣。在重疊元素面前,javascript,css以及其他需要讀取DOM的程序都變得難以創建,排錯和維護。

有效性

有效性比良構稍微嚴格,即不僅要確保文檔的語法正確,還要保證語義正確。保證元素和屬性只能按自身語義出現在恰當的地方。

有效性是面向未來開發的基石。有效的網站與設備無關,有效的頁面為不同的讀者傳達相同的信息,就算讀者使用的是界面不相同的瀏覽器。

良構和有效性檢查是基本的語法約束保證,接下來要保證語義是恰當的。

具體實現方法:

1,加入過渡型DOCTYPE聲明

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"  

過渡式DTD讓你不必要完全語義標記就能讓文檔通過驗證,并且他允許包含i,b和center等這些不推薦使用的表現性元書,因此,在進一步改善文檔的語義之前,你可以找出比修復更嚴重的結構問題。

2,刪除所有不存在的標簽

3,用CSS替代center,i,font等不被推薦或棄用的標簽。

4,把行內(inline)元素,放在塊(block)元素中

要做到有效,文檔中所有元素是有效的嚴格性XHTML元素還不夠,還必須保證它們之間的正確關系,瀏覽器和其他程序處理XHTML需要依賴元素間的正確位置。

  1. Do you like this pictrue?<br /> 
  2. <img src = "file.gif" /> 
  3. I think it's really <em>neat</em> 
  4.  
  5.  
  6. <!--改寫為--> 
  7. <p>Do you like this pictrue?<br /></p> 
  8. <div><img src = "file.gif" /></div> 
  9. <p>I think it's really <em>neat</em></p> 

布局

1,熟悉元素語義

每一個元素都應各司其職:ul是無序列表,ol是有序列表,table是表格式數據,blockquote是應用,h1~h6是標題等。恰當的語義元素有助于屏幕閱讀器呈現更容易理解的結構,也能保證不同平臺間正確顯示。對于初學者,很多本來語義良好的元書,如ul,blockquote,table等,被濫用與實現某種特定布局效果。這些濫用的目的是給網頁生成特定的外觀,然而這些外觀難以跨瀏覽器,幾乎除了設計者自己的電腦,通常很多地方都不通用的。

失敗經歷:

為了實現導航效果,一開始沒有考慮內容語義,無意中將導航主項和相關聯的菜單分開,在利用css中的相對定位,設定top和left屬性,將相關菜單移動到相關的主項下。這樣會導致一個嚴重的問題。一旦將不同頁面放置在不同的分辨率的屏幕上,菜單就會錯位。就是說,針對不同分辨率的屏幕,還要設計不同的top和left屬性。

  1. <div class = "nav"> 
  2.      <div class="nav01">菜單一</div><div class="nav02">菜單二</div><div class="nav03">菜單三</div> 
  3. </div> 
  4. <div class = "menu"> 
  5.     <div class="menu01">子菜單一</div><div class="menu02">子菜單二</div><div class="menu03">子菜單三</div> 
  6. </div> 

優化設計過的導航HTML結構,組合主菜單和子菜單:

  1. <nav> 
  2.     <ul class="clear"> 
  3.         <li class="first"><a href="#">菜單一</a></li> 
  4.         <li> 
  5.             <span class="Darrow"></span> <a href="#">菜單二</a> 
  6.             <dl> 
  7.                 <dt><span class="arrow"></span></dt> 
  8.                 <dd><a href="#">子菜單一</a></dd><dd><a href="#">子菜單二</a></dd><dd><a href="#">子菜單三子菜單三</a></dd> 
  9.             </dl> 
  10.         </li> 
  11.         <li> 
  12.             <span class="Darrow"></span> <a href="#">菜單三</a> 
  13.             <dl> 
  14.                 <dt><span class="arrow"></span></dt> 
  15.                 <dd><a href="#">子菜單一</a></dd><dd><a href="#">子菜單二</a></dd><dd><a href="#">子菜單三子菜單三</a></dd> 
  16.             </dl> 
  17.         </li> 
  18.     </ul> 
  19. </nav> 

編寫HTML的目的不是為某種結構或者頁面外觀,而是為了如何更好地呈現內容,因此在編寫HTML之前,務必思考這種內容應該使用哪種語義的元素。

恰當的HTML非常適合處理跨瀏覽器問題。拿到web設計圖后,在著手構建web應用之前,你必須要停止考慮頁面的外觀,而應該開始思考頁面表達的是什么含義。

#p#

 

2,替換表格布局

基于CSS的頁面比基于表格的頁面更小更簡單。

a)編寫和編輯更容易,下載更快,

b)通過轉向CSS,可以節省帶寬。同時外聯的css文件可以緩存和重用,不必隨每次頁面的下載又重下一次。

取代濫用本用于呈現表格數據的table元素而使用表格布局,可以考慮頻繁使用的分欄式布局:

1)兩欄,左側固定寬度的側欄,右邊是彈性寬度的內容欄

2)三欄,左右各固定寬度的側欄,中間是內容。

根據以往項目開發經驗:

欄目的高度是由它們所包含的內容量決定。對于內容比重大的網站來說,因為不能保證單個內容欄跟其他欄等高,欄會固定高度,保證各欄高度相同;而對于內容簡單短小頁面,不固定高度問題不大。另外,主體內容的div應該在側欄,頁頭或頁腳之前,這樣屏幕閱讀器可以從頁面最重要的內容開始線性讀取頁面。搜索引擎機器人也可以對排在頁面前面的內容予以更高的優先級。

就兩欄布局而言,有三種可能的寬度:

(1)兩欄寬度固定。最普遍,固定寬度對于一部分用戶來所可能過大,過大的寬度用戶必須滾動水平內容來查看內容,降低文本的可讀性

(2)左欄固定,內容欄是百分比寬度

(3)兩欄都是百分比

從更好的用戶體驗考慮,主體內容應該能調整大小,以便適應不同窗口寬度。

3,內容與樣式分離

當然我們的頁面也需要漂亮的外觀,以幫助我們在競爭中脫穎而出。這可以通過在獨立的CSS樣式中放置有關表現的信息來實現。CSS用來描述網頁的外觀,而瀏覽器可以自由選擇不同的樣式表或是修改過的樣式表。實際上,你可以為不同的瀏覽器隨意發送不同的樣式表,也可以為它們獨特的能力量身定制。這是響應式設計的基本實現方法。

“響應式網頁不僅僅是響應不同類型的設備,而且需要響應不同的用戶需求。響應式的初衷是為了讓信息更好的傳遞交流,讓所有人無障礙的獲取信息,同時這也是 Web 的初衷。”

出于方便或者是自身的編碼習慣,在修改某種被更改的需求的樣式代碼時候,我們很容易在html代碼中直接鑲嵌樣式代碼。這樣的做法除了更快的完成你暫時的任務之外沒有任何好處。

 

4,使用CSS定位替代框架

 

網站使用框架的理由實際上就兩種:

(1)為所有頁面引入相同的靜態內容,而不用單獨編輯每個頁面。例如導航,網頁頭部尾部。也就是說,單獨的非框架頁面可能比相應的框架頁面更耗帶寬,因為框架內容每次都要給客戶端重新發送內容。

(2)顯示多欄外觀。例如Java API,包含包和類的列表,主體內容

然而,過多使用框架將降低可用性:

(1)難以標記數千或返回指定頁面

(2)難以保存和打印頁面

(3)過多的滾動條占據屏幕的寶貴空間

在每一個頁面上都有導航和其他相同或幾乎相同的內容,對網站來說是非常普遍的,使用CSS取代框架,關鍵在于設立對應每個框架的div,每個div內容是對應框架里的文檔內容。然而,這樣做的問題在于,它違反了DRY原則(Don't Repeat Youself,別重復你自己),對于相同的內同,雖然有時候只是很小的變化,但還是需要不斷在這一頁那一頁重復出現。重復內容通常也是代碼的壞味道。框架在靜態頁面上避免惡劣不必要的重復,我提倡清晰,可維護的代碼,在不損害用戶界面的前提下,我更遠一選擇難看的代碼而不是難看的用戶界面。日常中原始的HTML是重復的,但不是我們必須編輯的,很多時候我們可以通過后臺自動生成重復內容。

Apache服務器端包含:

通常,擁有服務器端包含的以.shtml結尾的文件會在發送到客戶端之前,告訴服務器需要解析自身以及包含的內容

幾乎所有的Web服務器都支持某些形式的服務器端包含功能,使用服務器端包含各種非靜態文件,性能有所降低,但影響不大。

  1. <!DOCTYPE html> 
  2. <html> 
  3.     <meta charset = "utf-8"> 
  4. <body> 
  5.       
  6.     <!--#include virtual = "/header.html" --> 
  7.     <!---這里嵌套主內容--> 
  8.  
  9.     <!--#include virtual = "/footer.html"--> 
  10.     <!--#include virtual = "/siderbar.html"--> 
  11. </body> 
  12. </html> 

盡管Apache默認的編譯會包含mod_include,但可能不會在所有目錄上啟用,你需要子啊Apache主配置文件或是.htacess文件中添加一下三行配置,以指向每一個使用服務器包含的目錄:

  1. AddType text/html .shtml  
  2. AddOutputFilter INCLUDES .shtml  
  3. Options +Includes 

PHP包含:

PHP的include函數有類似的功能

  1. <!DOCTYPE html> 
  2. <html> 
  3.     <meta charset = "utf-8"> 
  4. <body> 
  5.     <!--主內容--> 
  6.    <?php 
  7.        include("footer.html");  
  8.        include("sidebar.html");      
  9.     ?> 
  10. </body> 
  11. </html> 

#p#

5,正確標記列表

正確標記列表能夠提升可訪問性,通常我們子啊列表中實現跳轉和導航。

大部分瀏覽器給列表以及列表中的項目都制定特定的外觀,通常表現為縮進和項目符號,可能不是你所需要的外觀,因此很容易在搭建html的時候忽略它們的存在,放棄使用正確列表標記,而使用語義較差的標簽,實現同樣的效果。根據需求,你能夠通過CSS可以容易地修復這些特定的外觀。下面整理了開發中常用的CSS樣式修改規則:

  1. /*刪除項目符號*/ 
  2. ul{  
  3.    list-style-type:none;         
  4. }  
  5.  
  6. /*載入外部圖片自定義項目符號*/ 
  7. ul li {  
  8.      list-style-image : url(images/str.gif);  
  9. }  
  10.  
  11. /*去掉縮進的規則*/ 
  12. ul{  
  13.    margin-left : 0px;  
  14.     padding-left :0px;  
  15. }  
  16.  
  17. /*把項目排成一行*/ 
  18. ul,li{  
  19.    displayinline;  
  20.     margin:0px;  
  21.   padding0px;  
  22. }  
  23.  
  24. /*在列表項之間插入逗號*/ 
  25. ul li:after{  
  26.   content : ",";  
  27. }  
  28.  
  29. /*制定項目的寬度,超出時顯示省略號*/ 
  30. div.titleholder {  
  31.     font-size8pt;  
  32.     width100px;  
  33.    text-overflow: ellipsis;  
  34.    overflowhidden;  
  35.    white-spacenowrap;  

然而,lu應用與列表上,blockquote應用在應用上。blockquote與ul相比,整理文本縮進更強大,更準確。

6,為圖片添加width和height屬性

width和height屬性能讓瀏覽器更快地樣式化頁面并展現給用戶。但注意,這樣做,對頁面的顯示速度有提升,但對下載速度并沒有幫助。

出于一般項目開發觸覺,改變圖片的尺寸意味著要修改HTML,否則圖片會奇怪地變大變小。如果需要經常改變圖片,比如設計頁面是,***是在***的階段插入確定的寬度和高度。

本文出自:http://www.cnblogs.com/0603ljx/p/4049241.html

責任編輯:林師授 來源: floraLam的博客
相關推薦

2018-04-25 10:03:28

前端重構Javascript

2010-12-31 15:29:54

Web應用程序

2010-08-10 09:08:29

WebSocketsHTML 5

2009-07-19 10:32:44

2011-03-11 17:07:16

2011-03-11 17:10:11

2013-03-28 13:08:15

Web緩存

2011-08-03 11:08:27

HTML 5

2009-02-09 18:02:00

2013-09-04 11:02:52

手機web網頁設計

2022-05-31 13:23:36

Web3數字時代穩定幣

2013-10-29 15:17:41

2011-05-25 09:34:30

HTML5cssjavascript

2023-10-16 09:30:06

Java代碼

2023-11-29 13:55:00

系統設計Web

2011-06-20 16:07:18

HTML

2012-05-02 09:55:58

Windows Pho

2012-03-09 09:51:35

2011-04-21 15:33:23

2011-03-25 11:06:46

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲视频一区二区三区四区 | 羞羞视频免费在线观看 | 欧美在线国产精品 | 狠狠操电影 | 亚洲欧美精品 | 亚洲美女网站 | 亚洲在线免费 | 欧美黑人又粗大 | 欧美性video 精品亚洲一区二区 | www.一区二区三区 | 国产一区二区激情视频 | 久久国产精品一区二区三区 | 国产精品免费看 | 欧美一区免费在线观看 | 日韩在线免费 | 国产精品有限公司 | 欧美激情精品久久久久久变态 | 久久久精选 | 国产第1页| 欧美人妖网站 | 成人国产精品免费观看 | 99欧美精品 | 懂色中文一区二区三区在线视频 | 2020国产在线 | 欧美日韩中文在线 | 懂色中文一区二区三区在线视频 | 欧美日韩1区 | 日韩国产中文字幕 | 一区二区三区视频在线 | 在线91 | 伊人精品久久久久77777 | 久久久免费精品 | 亚洲一卡二卡 | 在线免费观看黄色 | 国产h视频 | 91色视频在线观看 | 成人久久18免费网站麻豆 | 国产一区二区三区在线视频 | 精品欧美一区二区三区久久久小说 | 久久久久国产精品一区二区 | 日本高清视频在线播放 |