中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

深度剖析HTML的語意和與其相關的前端框架
來源:易賢網 閱讀:1150 次 日期:2016-06-15 14:44:27
溫馨提示:易賢網小編為您整理了“深度剖析HTML的語意和與其相關的前端框架”,方便廣大網友查閱!

關于語義

語義研究的是標志與符號之間的關系,以及它們所代表的意義。在語言學中,它主要是研究這些標志(如單詞,短語,或者聲音)在語言中的意義。而在前端開發領域,語義主要涉及的是HTML元素、屬性和屬性值(包括像Microdata這樣的擴展)所約定的意義。這些在規范中常用的正式約定語義,可以幫助程序(以及后來參與開發的人)更好地理解一個網站各方面的信息。然而,即使這些元素、屬性和屬性值的語義是正式化的,它們依然得服從于開發者的適應程度以及共同選擇的結果。這使得正式的約定語義也可能會在今后被修改(而這正是HTML設計原則之一)。

區分不同類型的HTML語義

遵守編寫“語義化的HTML”這個原則,是現代專業前端開發的基礎之一。絕大多數的語義都與當前或預期的內容性質有關(如:h1元素,lang屬性,type屬性的email值,Microdata)。

然而,并非所有的語義都需要以內容為導向。類名不能“無語義”。不管是用什么名字命名,它們都必須要有意義與目的。類名的語義可以和那些HTML元素不同。我們可以借助HTML元素、某些HTML屬性、Microdata等所具有的“全局性”語義,然后利用網站或應用的“局部性”特定語義加以區分,這些特定語義通常包含在屬性值中,比如class屬性。

盡管在HTML5規范的class屬性這一章節中重申了這個假定的“最佳實踐”…

…鼓勵開發者使用class屬性值描述實際內容,而不是描述期望展現的內容。

…并沒有什么內在的原因非這樣做不可。事實上,當這種方法在大型網站或者應用中運用時,它往往會成為一種障礙。

HTML元素和其它屬性已經提供了內容層的語義

對于機器或訪問者來說,類名所能透露的有用的語義信息非常少,甚至沒有。除非它是已經約定的那一小部分名稱(機器同樣可讀) —— Mircoformats

類名的主要用途是成為CSS和JavaScript的鉤子。如果你不需要為你的頁面添加表現和行為,那么你或許不必在你的HTML里添加類名

類名應該為開發者傳達有用的信息。當你閱讀一個DOM片段時,它將有助于理解某個類名的具體作用。尤其是在多人協作的開發團隊里,與HTML組件打交道的可不光只有前端開發者。

舉一個非常簡單的例子:

XML/HTML Code

1.<div class="news">  

2.    <h2>News</h2>  

3.    [news content]   

4.</div>  

當內容還不明顯的時候,這個類名news不能告訴你任何事情。它沒有向你提供關于這個組件整體結構的信息,而且一旦內容不再是“新聞”時,使用這個類名就顯得非常不妥。類名的語義過分貼近內容,架構既不容易擴展,也不容易為其他開發人員所用。

與內容無關的類名

從某個設計模式的結構與功能中提取類名的語義是一種更好的方法。那些類名與內容無關的組件可重用性更高。

我們不應該害怕讓各層之間的關系變得清晰而明確(這里應該是指結構層、內容層等,譯者注),而不是用類名嚴格地反應明確的內容。這樣做不會使類名“無語義”,這只是表明它們的語義并不取決于內容。我們也不應該害怕使用額外的HTML元素,只要它們能幫助你創建更強壯、更靈活且更具重用性的組件。這樣做不會使HTML變得“無語義”,這僅僅意味著你標記內容所使用的元素數量超過了最小值而已。

前端架構

組件、模板、面向對象的體系結構的目的是能夠開發出一種數量有限的可重復使用的組件,它可以在一定范圍內包含不同的內容類型。在大型的應用程序中,對類名語義來說最重要的事情是,能夠用實用主義服務于它們的主要目的 —— 提供有意義的、靈活的、可重復使用的表現或行為的鉤子供開發者使用。

可重用且可組合的組件

總的來說,可擴展的HTML/CSS必須依賴HTML中的class,以便創建可重用的組件。一個靈活的、可重用的組件,既不依賴DOM樹中的某一部分,也不需要使用特定類型的元素。它應該能適應不同的容器,并且可以很容易地更換主題。如果有必要,額外的HTML元素(超出標記內容所必須的元素之外的元素)可以讓組件更加強壯。Nicole Sullivan所說的media object就是一個很好的例子。

避免用類型選擇器支持class,可以讓組件更容易合并。下面這個例子中,btn組件與uilist組件不易于合并。問題在于.btn的權重比.uilist a要?。ㄟ@將覆蓋任何共享屬性)。而且ulist組件需要錨點作為子節點。

XML/HTML Code

1..btn { /* styles */ }   

2..uilist { /* styles */ }   

3..uilist a { /* styles */ }   

4.  

5.<nav class="uilist">  

6.    <a href="#">Home</a>  

7.    <a href="#">About</a>  

8.    <a class="btn" href="#">Login</a>  

9.</nav>  

一種讓uilist組件與其它組件輕松組合的方法是,uilist的子級DOM元素用class來添加樣式。盡管這會降低權重,但是它的主要好處在于,它為你提供了處理子節點的任何結構樣式的選擇權。

XML/HTML Code

1..btn { /* styles */ }   

2..uilist { /* styles */ }   

3..uilist-item { /* styles */ }   

4.  

5.<nav class="uilist">  

6.    <a class="uilist-item" href="#">Home</a>  

7.    <a class="uilist-item" href="#">About</a>  

8.    <span class="uilist-item">  

9.    <a class="btn" href="#">Login</a>  

10.    </span>  

11.</nav>  

JavaScript專用類

使用某種形式的JavaScript專用類,可以降低因組件樣式或結構的改變導致JavaScript失效的風險。我已經找到了一種非常有效的方法,那就是專為JavaScript的鉤子使用一種特定的類——js-*——不要在這個類名上添加任何描述。

XML/HTML Code1.<a href="/login" class="btn btn-primary js-login"></a>  

在你修改組件的結構或樣式的時候,可能會不經意間對那些必要的JavaScript行為和復雜的功能造成影響,用這種方法的話,可以降低這種可能性。

組件修改器

組件常常會有一些變體,它們與基本組件只有細微的差別。比如,不同的背景色或者邊框。主要有兩種創建這些組件變體的模式。我將它們稱為“單類名”模式和“多類名”模式。

單類名模式

XML/HTML Code

1..btn, .btn-primary { /* 按鈕模板樣式 */ }   

2..btn-primary { /* 主按鈕的特殊樣式 */ }   

3.  

4.<button class="btn">Default</button>  

5.<button class="btn-primary">Login</button>  

多類名模式

XML/HTML Code

1..btn { /* 按鈕模板樣式 */ }   

2..btn-primary { /* 主按鈕的特殊樣式 */ }   

3.  

4.<button class="btn">Default</button>  

5.<button class="btn btn-primary">Login</button>  

如果你使用預處理程序,你可以用Sass的@extend功能,以減少一些在使用“單類名”模式時所涉及的維護工作。然而,即使有預處理程序的幫忙,我依然傾向于使用“多類名”模式,并在HTML中修改類名。

我發現這是一種更具擴展性的模式。比如,要實現一個基本的btn組件,并增加5種類型的按鈕與3種額外的尺寸。用“多類名”模式的話只要9個class就可以搞定,用“單類名”模式則需要24個class。

如果需要的話,它也更容易讓上下文環境適應組件。你可能想對出現在其它組件中的任一btn做一些細節調整。

XML/HTML Code1./* “多類名”樣式調整 */   

2..thing .btn { /* 相應的樣式調整 */ }   

3.  

4./* “單類名”樣式調整 */   

5..thing .btn,   

6..thing .btn-primary,   

7..thing .btn-danger,   

8..thing .btn-etc { /* 相應的樣式調整 */ }  

“多類名”模式意味著,你只需要用一個單獨的組件內部選擇器,便可以改變所有類型的btn元素的樣式?!皢晤惷蹦J揭馕吨?,你必須顧及所有可能的按鈕類型,并在創造一個新的按鈕變體時調整這個選擇器。

結構化的類名

當創建一個組件時——并為之添加了“主題”——其中一些class被用來區分各個組件,一些class被當做組件的修改器,其它的class則被用來關聯DOM節點,它們一起被包含在一個較大的抽象組件中。

很難去判斷btn(組件)、btn-primary(修改器)、brn-group(組件)和btn-group-item(組件子對象)之間的關系,這是因為這些名字不能清晰地表現class的目的。沒有一致的模式。

在過去的一年中,我一直在嘗試命名模式,目的是能幫助我快速理解在一個DOM片段中節點的表象之間的關系,而不用為此來回切換HTML、CSS與JS文件拼湊網站的架構。這種模式主要受到BEM系統的命名方法的影響,但被改編成一種我認為更容易瀏覽的形式。

代碼如下:

t-template-name

t-template-name--modifier-name

t-template-name__sub-object

t-template-name__sub-object--modifier-name</p> <p>component-name

component-name--modifier-name

component-name__sub-object

component-name__sub-object--modifier-name</p> <p>is-state-type</p> <p>js-action-name

js-component-type

我將一些結構當做抽象的“模板”來處理,其它的則視為更清晰的組件(通常建立在“模板”上)。但是這種區分并非總是必要的。

這僅僅是我目前發現的一種有用的命名模式。命名模式可以采用任何形式。但這種命名模式的好處在于消除了模糊的類名,只依賴(單)連接符,或者下劃線,或者是駝峰格式。

原始文件大小和HTTP壓縮的注意事項

任何關于模塊化與可擴展的CSS的討論都會談及對文件大小與“膨脹”的擔心。Nicole Sullivan的言論中經常會提到文件大小的存儲(以及維護改進),并提到了像Facebook這樣的公司采用這種方法的經歷。進一步的,我想我會分享我在預處理輸出時的HTTP壓縮效果,以及大量使用HTML類的一些事情。

當Twitter Bootstrap剛剛問世的時候,我重寫了已編譯的CSS,以便更好地與手動操作的文件比較大小。在最小化所有的文件之后,手動操作的CSS文件比預處理程序輸出的小10%。但是當所有的文件都通過gzip壓縮后,預處理程序輸出的CSS文件比手動操作的小了5%。

這強調了比較HTTP壓縮后文件大小的重要性,因為減少的文件大小并不能說明全部問題。它暗示了有經驗的CSS開發者在用預處理程序時不必太過關注編譯后的CSS中一定程度的重復,因為它將在HTTP壓縮后變得更小。通過預處理程序處理更易于維護的CSS代碼所帶來的好處,要勝過關注原始CSS和壓縮后輸出的CSS的美觀或文件大小。

在另一個實驗中,我從線上扒了一個60KB的HTML文件(由很多可重用的組件組成),并刪除了它的每一個class屬性。這樣處理之后,文件大小減小到25KB。當原始文件與扒下來的文件都通過gzip壓縮后,它們的大小分別變為7.6KB和6KB——只相差1.6KB。自由使用class所導致的實際文件大小的結果已經不值得再去強調了。

更多信息請查看網頁制作
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點

版權所有:易賢網

中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
欧美精品 日韩| 91精品国产综合久久久蜜臀粉嫩| 午夜一区二区三区视频| 亚洲日本欧美天堂| 亚洲黄色性网站| 亚洲国产一区在线观看| 亚洲成人精品影院| 免费成人av在线| 久久99精品久久久久| 免费成人你懂的| 国产高清不卡二三区| 国产不卡在线播放| 色伊人久久综合中文字幕| 日本高清不卡在线观看| 欧美性三三影院| 91精品麻豆日日躁夜夜躁| 欧美电影免费观看高清完整版在线 | 成人免费视频视频| 99re热视频这里只精品| 色婷婷亚洲婷婷| 91精品国产综合久久精品图片 | 麻豆国产精品官网| 国产成人综合在线观看| 成人精品国产福利| 精品视频资源站| 久久久99精品免费观看不卡| 国产精品久久久久久久第一福利| 亚洲专区一二三| 精品无码三级在线观看视频| 波多野结衣中文字幕一区 | 成人综合婷婷国产精品久久| 色噜噜夜夜夜综合网| 日韩免费视频线观看| 中文字幕亚洲电影| 青青草伊人久久| 一本大道av伊人久久综合| 日韩欧美aaaaaa| 一区二区理论电影在线观看| 美国av一区二区| 欧美在线观看视频在线| 久久这里只精品最新地址| 国产精品久久久久婷婷| 秋霞国产午夜精品免费视频| thepron国产精品| 日韩欧美成人一区二区| 亚洲狠狠爱一区二区三区| 国产91在线看| 欧美成人一区二区| 亚洲高清中文字幕| 99国产精品久久久久久久久久 | 欧美激情一区二区三区蜜桃视频 | 国产成人免费xxxxxxxx| 日韩三级.com| 亚洲一区二区av在线| 国产精品99久久久久久久女警 | 亚洲欧洲美洲综合色网| 久久激情综合网| 欧美日韩免费高清一区色橹橹| 国产精品嫩草影院com| 激情综合色播五月| 欧美精品xxxxbbbb| 午夜久久久久久电影| 91高清视频免费看| 亚洲精品福利视频网站| caoporn国产精品| 欧美国产欧美亚州国产日韩mv天天看完整| 日本午夜一本久久久综合| 欧美色视频在线| 亚洲午夜精品网| 欧美中文字幕一区| 亚洲二区在线视频| 欧美美女激情18p| 舔着乳尖日韩一区| 91精品国产色综合久久久蜜香臀| 午夜久久久久久久久久一区二区| 欧美色视频在线| 日韩高清在线一区| 欧美mv和日韩mv的网站| 国内精品在线播放| 欧美国产精品一区二区| 成人a免费在线看| 最新不卡av在线| 欧美视频一区二区三区四区 | 蜜桃视频在线观看一区| 欧美一级高清片| 国产一区二区在线观看视频| 久久综合999| 91亚洲精华国产精华精华液| 成人免费在线视频观看| 91久久精品国产91性色tv| 亚洲高清免费观看高清完整版在线观看| 91亚洲大成网污www| 亚洲电影你懂得| 日韩精品中文字幕一区| 福利91精品一区二区三区| 中文字幕一区二区在线观看| 91国偷自产一区二区开放时间| 亚洲高清在线精品| 精品国产电影一区二区| 成人h精品动漫一区二区三区| 亚洲黄网站在线观看| 91精品国产综合久久久久| 国产mv日韩mv欧美| 亚洲一区二区在线观看视频 | 国产成+人+日韩+欧美+亚洲| 一区二区三国产精华液| 26uuu国产电影一区二区| 成人av免费在线观看| 五月天婷婷综合| 中文字幕欧美三区| 欧美一区日本一区韩国一区| 国产成人欧美日韩在线电影| 亚洲一区自拍偷拍| 国产欧美日本一区二区三区| 欧美午夜免费电影| 国产成人综合亚洲网站| 午夜视黄欧洲亚洲| 一区在线中文字幕| 日韩精品中文字幕一区二区三区| 99国产精品久久久久久久久久久 | 一区二区三区美女| wwwwww.欧美系列| 欧美日本在线播放| 91香蕉视频污| 国产精品 欧美精品| 视频一区二区国产| 夜夜操天天操亚洲| 一区在线播放视频| 久久久久亚洲蜜桃| 日韩一区二区麻豆国产| 色婷婷久久久综合中文字幕| 国产伦理精品不卡| 麻豆国产欧美日韩综合精品二区| 一区二区三区在线视频免费| 国产精品美女久久久久久久久久久 | 久久亚洲综合色| 5566中文字幕一区二区电影| 91国产精品成人| 91网站在线观看视频| 成人午夜激情视频| 成人综合婷婷国产精品久久免费| 久久97超碰色| 精品一区二区久久久| 视频一区二区中文字幕| 午夜精品福利一区二区三区av | 欧美r级电影在线观看| 欧美精品在线一区二区| 欧美亚洲国产一区二区三区va | 丝瓜av网站精品一区二区| 亚洲最快最全在线视频| 亚洲欧美偷拍卡通变态| 亚洲欧美偷拍卡通变态| 亚洲乱码国产乱码精品精的特点 | 国产91对白在线观看九色| 国产剧情一区在线| 国产精品1024| 国产凹凸在线观看一区二区| 国产黄色成人av| 成人av免费在线观看| 91视频免费观看| 欧美视频一区在线| 91精品国产欧美一区二区成人| 欧美一级在线免费| 日韩免费电影网站| 久久精品无码一区二区三区| 国产精品女主播在线观看| 亚洲人123区| 天天综合色天天| 美女任你摸久久| 国产成人午夜高潮毛片| 色综合中文字幕国产| 一本大道综合伊人精品热热 | 色婷婷综合中文久久一本| 91福利小视频| 欧美电影免费观看高清完整版在线| 精品国产免费人成在线观看| 欧美国产精品中文字幕| 亚洲精品高清视频在线观看| 手机精品视频在线观看| 国产999精品久久| 欧美日免费三级在线| 欧美xxxxx裸体时装秀| 自拍偷拍亚洲激情| 青青草成人在线观看| 国产99久久久精品| 欧美精品自拍偷拍| 国产三级一区二区| 亚洲成人激情自拍| 国产不卡一区视频| 337p亚洲精品色噜噜| 国产精品久久久久久久久免费丝袜| 亚洲成人av福利| 波多野结衣中文字幕一区| 欧美久久久影院| 国产精品传媒入口麻豆| 蜜臀久久久99精品久久久久久| 97se亚洲国产综合自在线观| 日韩欧美成人激情| 亚洲成人一区二区在线观看| 国产激情精品久久久第一区二区 |