免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
重構(gòu)HTML改善Web應(yīng)用設(shè)計(jì)
 本文從良構(gòu),有效性,布局三個(gè)角度,結(jié)合往日項(xiàng)目開(kāi)發(fā)經(jīng)歷, 整理總結(jié)重構(gòu)HTML改善Web應(yīng)用設(shè)計(jì)的幾點(diǎn)規(guī)則和做法。部分參考自《重構(gòu)HTML改善Web應(yīng)用設(shè)計(jì)》。

 重構(gòu)。什么是重構(gòu)?為什么要重構(gòu)。

  重構(gòu)是在不改變程序行為的基礎(chǔ)上進(jìn)行小的改動(dòng),是代碼逐漸改善的過(guò)程。移除長(zhǎng)期累積下來(lái)的爛碼,以得到更清晰和更容易維護(hù),除錯(cuò)以及添加新功能的代碼,這做法不能單純只出現(xiàn)在編碼的后期,甚至是你意識(shí)到你的代碼已經(jīng)無(wú)從再下手非重寫不可的時(shí)候,而是從開(kāi)始開(kāi)發(fā)起,逐漸積累,逐漸修改。以前因?yàn)槿粘>幋a的隨意性,導(dǎo)致問(wèn)題日益積累,逐步擴(kuò)散,最后只能推倒重來(lái)。如果時(shí)間經(jīng)受不起推倒重來(lái),你別無(wú)選擇,唯一實(shí)現(xiàn)的選擇就是重構(gòu)。

  無(wú)論做什么,都不要因?yàn)樽非笸昝蓝雎詴缘酶倪M(jìn),如果眼下時(shí)間足夠做一點(diǎn)重構(gòu),那就做一點(diǎn)兒。日后有時(shí)間還可以做更多。整體的重構(gòu)設(shè)計(jì)雖然惹人注目令人難忘,但沒(méi)有平日的積累,何以收獲龐大的成就?你的目標(biāo)應(yīng)該是讓代碼每天都有新變化。堅(jiān)持幾個(gè)月,我相信我們都能擁有驕傲地,清晰代碼。

 

 良構(gòu)

  把標(biāo)記轉(zhuǎn)換為符合現(xiàn)代標(biāo)準(zhǔn)的首要任務(wù)是實(shí)現(xiàn)良構(gòu)。良構(gòu)保證了DOM可操作的文檔樹(shù)結(jié)構(gòu)的唯一性,因而成為可靠的跨瀏覽器的javascript代碼的基礎(chǔ)。對(duì)于一個(gè)亂構(gòu)的頁(yè)面來(lái)說(shuō),任何可靠的自動(dòng)化處理或測(cè)試都是非常難以保證的,其次,瀏覽器頁(yè)面的展示效果更是不可預(yù)估。對(duì)于亂構(gòu)的頁(yè)面,不同的瀏覽器使用不同的方式補(bǔ)充確實(shí)的片段,并糾正其中的錯(cuò)誤。因此,對(duì)于重構(gòu)HTML,最要緊的無(wú)疑是實(shí)現(xiàn)頁(yè)面良構(gòu)化。

  要達(dá)到良構(gòu),大部分的網(wǎng)站要至少或全部做到以下幾點(diǎn):

  • 所有的其實(shí)標(biāo)簽都應(yīng)有一個(gè)匹配的結(jié)束標(biāo)簽
  • 空元素應(yīng)該使用空元素的標(biāo)簽語(yǔ)法
  • 所有的屬性都必須有一個(gè)值
  • 所有的屬性都需要用引號(hào)括起來(lái)
  • 所有的&好必須轉(zhuǎn)義為&
  • 所有的小于號(hào)都要轉(zhuǎn)義為<
  • 只有唯一的根元素
  • 所有未預(yù)定義的實(shí)體應(yīng)用必須在DTD中聲明

  針對(duì)往日因?yàn)閭€(gè)人編程習(xí)慣和隨意性容易犯的錯(cuò)誤,從良構(gòu)角度思考,整理一下日后構(gòu)建HTML時(shí),有幾點(diǎn)需要特別注意。

  更好實(shí)現(xiàn)良構(gòu)的幾個(gè)要點(diǎn):

  1. 將名稱改成小寫。<P></P> 改寫為 <p></p>等,因?yàn)閄HTML只使用小寫名稱,所有元素和屬性都要小寫,<TABLE>和<Table>都不被接收
  2. 給屬性值加引號(hào)。<span class = speack></span>改寫成<span class =“ speack”></span>等。一些空格的屬性有時(shí)候出現(xiàn)有做括號(hào)而沒(méi)有右括號(hào),瀏覽器不宜定按照你的意愿解析,不同的瀏覽器有不同的解析效果,這就有可能造成跨瀏覽器問(wèn)題。
  3. 補(bǔ)足遺漏的屬性。<input type = "radio" checked>改成<input type = "radio" checked = 'checked'>等。XHTML不支持只有屬性名稱而沒(méi)有值的語(yǔ)法。
  4. 將空標(biāo)簽替換為空元素標(biāo)簽。XML解析器要求所有的起始標(biāo)簽都有匹配的結(jié)束標(biāo)簽<p>要有對(duì)應(yīng)的</p>,<br>改寫為</br>等
  5. 消除重疊。<strong><em>xxxx</strong>< /em>改寫成<strong><em>xxxx</em></strong>等。不同的瀏覽器對(duì)包含重疊元素的文檔所構(gòu)建的DOM樹(shù)不一樣。在重疊元素面前,javascript,css以及其他需要讀取DOM的程序都變得難以創(chuàng)建,排錯(cuò)和維護(hù)。

 有效性

  有效性比良構(gòu)稍微嚴(yán)格,即不僅要確保文檔的語(yǔ)法正確,還要保證語(yǔ)義正確。保證元素和屬性只能按自身語(yǔ)義出現(xiàn)在恰當(dāng)?shù)牡胤健?/span>

  有效性是面向未來(lái)開(kāi)發(fā)的基石。有效的網(wǎng)站與設(shè)備無(wú)關(guān),有效的頁(yè)面為不同的讀者傳達(dá)相同的信息,就算讀者使用的是界面不相同的瀏覽器。

良構(gòu)和有效性檢查是基本的語(yǔ)法約束保證,接下來(lái)要保證語(yǔ)義是恰當(dāng)?shù)摹?/span>

  具體實(shí)現(xiàn)方法:

  1,加入過(guò)渡型DOCTYPE聲明

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

 

 

  過(guò)渡式DTD讓你不必要完全語(yǔ)義標(biāo)記就能讓文檔通過(guò)驗(yàn)證,并且他允許包含i,b和center等這些不推薦使用的表現(xiàn)性元書,因此,在進(jìn)一步改善文檔的語(yǔ)義之前,你可以找出比修復(fù)更嚴(yán)重的結(jié)構(gòu)問(wèn)題。

  2,刪除所有不存在的標(biāo)簽

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

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

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

Do you like this pictrue?<br /><img src = "file.gif" />I think it's really <em>neat</em><!--改寫為--><p>Do you like this pictrue?<br /></p><div><img src = "file.gif" /></div><p>I think it's really <em>neat</em></p>

 

 

  

 布局

  1,熟悉元素語(yǔ)義

  每一個(gè)元素都應(yīng)各司其職:ul是無(wú)序列表,ol是有序列表,table是表格式數(shù)據(jù),blockquote是應(yīng)用,h1~h6是標(biāo)題等。恰當(dāng)?shù)恼Z(yǔ)義元素有助于屏幕閱讀器呈現(xiàn)更容易理解的結(jié)構(gòu),也能保證不同平臺(tái)間正確顯示。對(duì)于初學(xué)者,很多本來(lái)語(yǔ)義良好的元書,如ul,blockquote,table等,被濫用與實(shí)現(xiàn)某種特定布局效果。這些濫用的目的是給網(wǎng)頁(yè)生成特定的外觀,然而這些外觀難以跨瀏覽器,幾乎除了設(shè)計(jì)者自己的電腦,通常很多地方都不通用的。

 

                     失敗經(jīng)歷:

   為了實(shí)現(xiàn)導(dǎo)航效果,一開(kāi)始沒(méi)有考慮內(nèi)容語(yǔ)義,無(wú)意中將導(dǎo)航主項(xiàng)和相關(guān)聯(lián)的菜單分開(kāi),在利用css中的相對(duì)定位,設(shè)定top和left屬性,將相關(guān)菜單移動(dòng)到相關(guān)的主項(xiàng)下。這樣會(huì)導(dǎo)致一個(gè)嚴(yán)重的問(wèn)題。一旦將不同頁(yè)面放置在不同的分辨率的屏幕上,菜單就會(huì)錯(cuò)位。就是說(shuō),針對(duì)不同分辨率的屏幕,還要設(shè)計(jì)不同的 top和left屬性。

<div class = "nav">            <div class="nav01">菜單一</div><div class="nav02">菜單二</div><div class="nav03">菜單三</div>            </div>            <div class = "menu">            <div class="menu01">子菜單一</div><div class="menu02">子菜單二</div><div class="menu03">子菜單三</div>            </div>

  優(yōu)化設(shè)計(jì)過(guò)的導(dǎo)航HTML結(jié)構(gòu),組合主菜單和子菜單:

<nav>            <ul class="clear">            <li class="first"><a href="#">菜單一</a></li>            <li>            <span class="Darrow"></span> <a href="#">菜單二</a>            <dl>            <dt><span class="arrow"></span></dt>            <dd><a href="#">子菜單一</a></dd><dd><a href="#">子菜單二</a></dd><dd><a href="#">子菜單三子菜單三</a></dd>            </dl>            </li>            <li>            <span class="Darrow"></span> <a href="#">菜單三</a>            <dl>            <dt><span class="arrow"></span></dt>            <dd><a href="#">子菜單一</a></dd><dd><a href="#">子菜單二</a></dd><dd><a href="#">子菜單三子菜單三</a></dd>            </dl>            </li>            </ul>            </nav>

 

 

                  

 

  編寫HTML的目的不是為某種結(jié)構(gòu)或者頁(yè)面外觀,而是為了如何更好地呈現(xiàn)內(nèi)容,因此在編寫HTML之前,務(wù)必思考這種內(nèi)容應(yīng)該使用哪種語(yǔ)義的元素。

  恰當(dāng)?shù)腍TML非常適合處理跨瀏覽器問(wèn)題。拿到web設(shè)計(jì)圖后,在著手構(gòu)建web應(yīng)用之前,你必須要停止考慮頁(yè)面的外觀,而應(yīng)該開(kāi)始思考頁(yè)面表達(dá)的是什么含義。

 

  2,替換表格布局

    基于CSS的頁(yè)面比基于表格的頁(yè)面更小更簡(jiǎn)單。

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

    b)通過(guò)轉(zhuǎn)向CSS,可以節(jié)省帶寬。同時(shí)外聯(lián)的css文件可以緩存和重用,不必隨每次頁(yè)面的下載又重下一次。

 

    取代濫用本用于呈現(xiàn)表格數(shù)據(jù)的table元素而使用表格布局,可以考慮頻繁使用的分欄式布局:

    1)兩欄,左側(cè)固定寬度的側(cè)欄,右邊是彈性寬度的內(nèi)容欄

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

 

                     根據(jù)以往項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn):

  欄目的高度是由它們所包含的內(nèi)容量決定。對(duì)于內(nèi)容比重大的網(wǎng)站來(lái)說(shuō),因?yàn)椴荒鼙WC單個(gè)內(nèi)容欄跟其他欄等高,欄會(huì)固定高度,保證各欄高度相同;而對(duì)于內(nèi)容簡(jiǎn)單短小頁(yè)面,不固定高度問(wèn)題不大。另外,主體內(nèi)容的div應(yīng)該在側(cè)欄,頁(yè)頭或頁(yè)腳之前,這樣屏幕閱讀器可以從頁(yè)面最重要的內(nèi)容開(kāi)始線性讀取頁(yè)面。搜索引擎機(jī)器人也可以對(duì)排在頁(yè)面前面的內(nèi)容予以更高的優(yōu)先級(jí)。

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

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

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

    (3)兩欄都是百分比

  從更好的用戶體驗(yàn)考慮,主體內(nèi)容應(yīng)該能調(diào)整大小,以便適應(yīng)不同窗口寬度。

                  

 

  3,內(nèi)容與樣式分離

    

  當(dāng)然我們的頁(yè)面也需要漂亮的外觀,以幫助我們?cè)诟?jìng)爭(zhēng)中脫穎而出。這可以通過(guò)在獨(dú)立的CSS樣式中放置有關(guān)表現(xiàn)的信息來(lái)實(shí)現(xiàn)。CSS用來(lái)描述網(wǎng)頁(yè)的外觀,而瀏覽器可以自由選擇不同的樣式表或是修改過(guò)的樣式表。實(shí)際上,你可以為不同的瀏覽器隨意發(fā)送不同的樣式表,也可以為它們獨(dú)特的能力量身定制。這是響應(yīng)式設(shè)計(jì)的基本實(shí)現(xiàn)方法。

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

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

 

  4,使用CSS定位替代框架

 

  網(wǎng)站使用框架的理由實(shí)際上就兩種:

     (1)為所有頁(yè)面引入相同的靜態(tài)內(nèi)容,而不用單獨(dú)編輯每個(gè)頁(yè)面。例如導(dǎo)航,網(wǎng)頁(yè)頭部尾部。也就是說(shuō),單獨(dú)的非框架頁(yè)面可能比相應(yīng)的框架頁(yè)面更耗帶寬,因?yàn)榭蚣軆?nèi)容每次都要給客戶端重新發(fā)送內(nèi)容。

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

  然而,過(guò)多使用框架將降低可用性:

  ?。?)難以標(biāo)記數(shù)千或返回指定頁(yè)面

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

     (3)過(guò)多的滾動(dòng)條占據(jù)屏幕的寶貴空間

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

    

                     Apache服務(wù)器端包含:

   通常,擁有服務(wù)器端包含的以.shtml結(jié)尾的文件會(huì)在發(fā)送到客戶端之前,告訴服務(wù)器需要解析自身以及包含的內(nèi)容

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

<!DOCTYPE html>            <html>            <meta charset = "utf-8">            <body>            <!--#include virtual = "/header.html" -->            <!---這里嵌套主內(nèi)容-->            <!--#include virtual = "/footer.html"-->            <!--#include virtual = "/siderbar.html"-->            </body>            </html>

 

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

AddType text/html .shtml            AddOutputFilter INCLUDES .shtml            Options +Includes

 


PHP包含:

PHP的include函數(shù)有類似的功能

<!DOCTYPE html>            <html>            <meta charset = "utf-8">            <body>            <!--主內(nèi)容-->            <?php            include("footer.html");            include("sidebar.html");            ?>            </body>            </html>

 

                  

 

  5,正確標(biāo)記列表

  正確標(biāo)記列表能夠提升可訪問(wèn)性,通常我們子啊列表中實(shí)現(xiàn)跳轉(zhuǎn)和導(dǎo)航。

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

/*刪除項(xiàng)目符號(hào)*/ul{list-style-type:none;}/*載入外部圖片自定義項(xiàng)目符號(hào)*/ul li {list-style-image : url(images/str.gif);}/*去掉縮進(jìn)的規(guī)則*/ul{margin-left : 0px;padding-left :0px;}/*把項(xiàng)目排成一行*/ul,li{display: inline;margin:0px;padding: 0px;}/*在列表項(xiàng)之間插入逗號(hào)*/ul li:after{content : ",";}/*制定項(xiàng)目的寬度,超出時(shí)顯示省略號(hào)*/div.titleholder {font-size: 8pt;width: 100px;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;} 

  然而,lu應(yīng)用與列表上,blockquote應(yīng)用在應(yīng)用上。blockquote與ul相比,整理文本縮進(jìn)更強(qiáng)大,更準(zhǔn)確。

 

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

    width和height屬性能讓瀏覽器更快地樣式化頁(yè)面并展現(xiàn)給用戶。但注意,這樣做,對(duì)頁(yè)面的顯示速度有提升,但對(duì)下載速度并沒(méi)有幫助。

    出于一般項(xiàng)目開(kāi)發(fā)觸覺(jué),改變圖片的尺寸意味著要修改HTML,否則圖片會(huì)奇怪地變大變小。如果需要經(jīng)常改變圖片,比如設(shè)計(jì)頁(yè)面是,最好是在最后的階段插入確定的寬度和高度。

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
前端入門—HTML篇(禿頭之路正式開(kāi)啟)
HTML語(yǔ)言編寫指南 - 阮一峰的網(wǎng)絡(luò)日志
給設(shè)計(jì)師們的代碼指南!代碼里的圖層(二)
實(shí)踐DIV+CSS網(wǎng)頁(yè)布局入門-DIV,CSS,網(wǎng)頁(yè)布局,網(wǎng)頁(yè)設(shè)計(jì),HTML-eNet網(wǎng)絡(luò)學(xué)院-中國(guó)最權(quán)威的電腦教程軟件資訊網(wǎng)站
一些html5和css3的一些常見(jiàn)面試題
HTML結(jié)構(gòu)化:DIV+CSS網(wǎng)頁(yè)布局入門指南->中國(guó)數(shù)字藝術(shù)在線
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服