標準化設計解決方案- 標記語言和樣式手冊 Boston Red Sox World Series Championships p>
Web Standards Solutions The Markup and Style Handbook
Part 1: Get Down With Markup 從標記語法談起
Chapter2 邪惡的表格?
你知道嗎?不知何時開始,使用表格居然變成充滿罪惡的舉動了?的確,以web標準編寫網頁的最大迷思就是"不要再使用表格了,永遠不要!" 聽起來表格就和瘟疫一樣必須躲開,必須密封起來丟進滿是灰塵的櫃子裡,當成是網絡發展時代早期流傳下來的古董保存起來.
如此的厭惡從何而來呢? 或許一開始十分單純,至少擁有一個好的理由.很多人會理直氣壯的宣揚拋棄傳統的表格嵌套與補空gif圖片的佈局方式,改用靈活的結構化的css佈局方式的好處.我們可能就開始抽絲剝繭的去掉所有的表格,甚至開始頑固的堅持把所有的表格驅逐出去— 根本不分場合.
書中稍後我們會看到css佈局的方法和這樣做帶來的所有好處.但是現在我們還是先來看看如何在適當的場合—也就是標記資料清單的時候使用表格.我們會研究幾個簡單的方法是我們的資料清單變得更容易使用,更漂亮.
完全就是表格
在標記列表資料時,我們絕對沒有理由不去用表格標籤.但是等等,什麼才是列表資料?這邊有一些例子:
日曆
電子資料表
圖表
時間行程表
對這些例子以及許多其他情況來說,必須使用非常複雜嚴格的css特效才能讓資料看起來像表格,或許你能想像,用巧妙的css浮動,定位所有項目之後得到的是不相容的矛盾的結果,更別提拿掉css之後,準確讀出每筆資料大概會成為不可能完成的任務.事實上,我們不必畏懼表格—我們應該用他們設計之初的目標來使用它們.
適合所有人的表格
表格找來謾罵的原因之一是如果沒有小心使用的話會存在可用性缺陷.舉例來說:屏幕閱讀程序難以正確讀出內容,而小螢幕設備經常被用來佈局的表格擾亂,但是我們有一些簡單的方法增加列表數據表格的可用性.同時建立靈活的結構,方便未來以css設定樣式.
讓我們看看圖3- 1 中的簡單例子,這是美國棒球聯盟的聯盟記錄:
圖3-1:典型的資料表示例
也許對紅襪隊球迷來說這是非常鬱悶的統計資料,不過圖3-1的卻是列表資料的完美示範.它有三個表頭(year,opponent,season record(w-l)),跟著是四年份的資料.在表格上面的是表格標題,說明了表格的內容.
標記這個資料表格的方式十分直觀,我們或許會以這樣的代碼完成這個工作:
Year
Opponent
Season Record (W-L)
1918
Chicago Cubs
75-51
1916
Brooklyn Robins
91-63
1915
Philadelphia Phillies
101-50
1912
New York Giants
105-47
這樣顯示的結果應該和圖3-1十分相似,但是,我們可以在這個基礎上加上一些改進.
首先,我們能用更加語義化的
1918 |
|
75-51 |
1916 | 布魯克林羅賓斯 | 91-63 td> |
1915 td> |
費城費城人隊 | 101-50 |
;1912 | 紐約巨人 | 105-47 |
重要的是,標題必須快速瀏覽後面資料的主題,根據默認設置,大多數可視化器將
#p#
加上摘要
另外,我們也崩潰了
1918 | 芝加哥小熊 td> |
75-51 | |||||||||
1916 | 布魯克林羅賓斯 | 91-63 | |||||||||
1915 | 費城費城人隊 | 101-50 | |||||||||
1912 | > ;紐約巨人 | 105-47 |
表格的表頭
在建立資料表格時,善用表頭是件很重要的工作。標記重要單元格時,我們可以發揮
Brooklyn Robins
使用
我們不必使用額外的顯示效果標籤讓表頭突出顯示在資料內容之外.
根據預設設定,大部分視覺化瀏覽器都會以粗體居中的效果展示
由於它和
使用表頭標籤的其他好處我們在接下去的章節中繼續討論.
#p#
表頭與資料的關係
我們可以利用headers屬性把表頭和對應的
我們繼續使用紅襪隊戰績表當作例子來示範使用方法.首先,我們需要為加上一個唯一的id,接著再為每個資料單元格加上headers屬性,對應正確的表頭.
為每個表頭加上id很簡單,就是這樣:
Year | Opponent | Season Record (W-L) |
---|---|---|
1918 | Chicago Cubs | 75-51 |
1916 | Brooklyn Robins | 91-63 |
1915 | 101-50 | |
1912 | New York Giants | 105-47 |
我們為每個表頭id選擇簡短的有描述意義的名稱,接著我們再為每個資料單元格加上適當的headers屬性,讓內容匹配正確的表頭id:
Year | Opponent | Season Record (W-L) |
---|---|---|
Chicago Cubs | 75-51 | |
1916 | Brooklyn Robins | 91-63 |
1915 | Philadelphia Phillies | 101-50 |
1912 | New York Giants | 105-47 |
在為表頭和內容之間建立對應關係後,屏幕閱讀器可能會議這樣的方式讀出表格的每一行內容: "Year:1918,Opponent: Chicago Cubs,Season Record(W-L):75-51",比起從左到右讀出每格內容的方法來說,這樣就有意義多了.
讓每個
#p#
使用abbr屬性
在之前的範例中,或許你會覺得表頭中"Season Record (W-L)"用語音合成器來念實在太長了一些,此時,只要加上abbr屬性,我們就能縮短發音時的內容,同時又為可視化瀏覽器保留了
Year | Opponent | Season Record (W-L) |
---|---|---|
1918 | Chicago Cubs | 75-51 |
1916 | Brooklyn Robins | 91-63 |
1915 | Philadelphia Phillies | 101-50 |
1912 | New York Giants | 105-47 |
我們加上了abbr="Record" 後,螢幕閱讀器會讀出表頭使用簡短的版本後的"Record".
, 和
在這裡我還想提一下三個與表格相關的標籤.它們不僅能為表格結構提供更精確的語義,同時也為css提供額外的標籤,讓你在設計表格行的樣式時不用為
引用一段W3C在HTML4.01規格中對這些標籤的說明(http://www.php.cn/) :
引用:
表格行能夠以thead,tfoot和tbody標籤分成表頭,表尾以及數目不限的表格主體.這種分類法讓瀏覽器支持獨立捲動表格主體的功能.列印長表格時,表頭和表尾也能在包含表格資料的每一頁上重複出現.
因此,使用使用這種分類方式也能讓支持獨立表格主體的瀏覽器使用者更容易閱讀表格內容,特別是長表格.
與
你會發現,表頭和表尾資料以和 標籤包圍,放在表格數據行之前.
就像我之前所說的那樣,這些標籤不僅能為表格提供更精確的語意,還能提供css樣式錨點讓你為這些特定內容設定css規則,而不必為每個
舉例來說,如果我們只想給資料區塊(以
tbody {
background-color: gray;
}
如果沒有tbody標籤的話,我們需要為每個想要加上灰色背景的
#p#
表格邪惡嗎?
我想,如果我們根據表格標籤設計之初的目的好好使用的話,那麼答案就肯定是"不!".濫用表格創建複雜嵌套的佈局的行為理所當然會遭到譴責,但是表格的確會給資料區塊提供它需要的良好的結構.
我們不能在整本書裡都敘述創建完美表格所需要的各種技巧,因此就此打住,希望你已經開始知道如何創建簡單的又具有可用性的方便css修飾的簡單表格.
談到樣式,讓我們用幾種不同的css技巧修飾一下之前的示例.
技巧延伸
與之前章節一樣,我們用靈活的語義化的結構化的標記為基礎,然後用css給他加上一些樣式
首先,我們先來看看簡單的邊框技巧,在範例上建立單線邊框,然後我們再為表格標題和表頭加上獨特的樣式
建立邊框
已經對border預設屬性的3維效果感到厭倦了麼?我也是.一般來說,為table標籤加上border="1"就會與圖3-1的效果類似,當然你也能換個方法,這邊有一個用css做出漂亮整潔邊框的訣竅.首先,我們給每個
th, td {
border-right: 1px solid #999;
border-bottom: 1px solid #999;
}
只加上兩側邊框,是建立各處邊框等寬又同時讓大部分流行的瀏覽器能夠正確顯示的關鍵所在.如果我在四周都加上邊框,那麼邊框的頂部和左側會在單元格排列時造成重疊,在稍後的示例中,我會給出一種只用一條border規則就達成小童效果的方法.
你會發現圖3-2中的整個表格只缺少了最頂部和最左側的邊線,為了補齊邊框,我們給
標籤而不是直接在行內將內容設為粗體,因此我們不必加上任何其他的標籤,就能直接為表頭內容設定樣式. 我們在標題下面也加上一點內補丁,同時還用不同的字體,顏色(當然是紅色)以突出標題內容(圖3-7) table { border-top: 1px solid #999; border-left: 1px solid #999; } caption { font-family: Arial, sans-serif; color: #993333; padding-bottom: 6px; > } th, td { padding: 10px; border-right: 1px solid #999; border-bottom: 1px solid #999; } } } } } } } ![]() } } } font-family: Verdana, sans-serif; background: #ccc; } 圖3-7:加上樣式的標題和 |
![]() 為表頭加上背景圖片 剛才我們為表格裡的 元素加上了灰色背景,但是我們其實可以更進一步,用背景圖平鋪在格子裡來作出漂亮的效果,舉例來說,我們能用細緻的灰色條紋模擬出許多Mac OS X中的窗口樣式 |
小圖片 首先我們用photoshop(或者其它你熟悉的繪圖工具)建立一個小圖片,在這個例子中,我們要製作一個2像素灰色和2像素白色交替出現的效果,因此圖片只需要4像素高,寬度多款都無所謂,因為它會在 里平鋪開來,做出我們想要的條紋效果.為了節省頻寬,我們只做1像素寬(圖3-8) |
圖3-8:1X4的像素條紋圖片(放大後) CSS 沿用剛才示例中的代碼,我們需要修改的地方只有把背景顏色換成剛製作好的小圖片路徑,除非另外制定,否則根據預設值,背景圖會自動超每個方向平鋪. table { border-top: 1px solid #999; border-left: 1px solid #999; } } caption { font-family: Arial, sans-serif; color: #993333; padding-bottom: 6px; }padth, 蒂td> : 10px; border-right: 1px solid #999; border-bottom: 1px solid #999; }th { font-family: Verdana, s-ans- 🎜> background: url(th_stripe.gif); }圖3 -9是套用這個樣式後的表格,表頭部分分線了條紋背景,要實驗其他的平鋪背景圖也很方便,你可以試試看怎樣才能為表頭或資料做出最好看的效果,好好享受這個實驗的過程吧. ![]() 圖3-9:在表頭使用平鋪背景的範例 #p# 為ID指定圖示 記得本章開始的時候我們為表格裡的每一個 加上唯一的ID嗎?那時我們把這些id與資料清單中的headers屬性相符起來,幫助非視覺化瀏覽器的使用者了解表格的內容,現在我們能在另一個地方發揮這個id的功能了,那就是為每個 |
指定不同的圖示. |
圖示路徑會完全記錄在css檔案中,讓你能夠在網站重構,更新時輕易的替換,完全不必修改標籤部分. 圖示 我用photoshop做了三個獨特的圖示,分別用在範例中每個表頭上:Year, Opponent與Season Record(W-L).圖3-10就是這三個圖示: ![]() 圖3- 10hotoshop製作的三個表頭圖示 CSS 加上css並不困難,因為我們為每個 都制定了獨特的id,因此我們能直接用background屬性來指定正確的圖示. |
table { border-top: 1px solid #999; border-left: 1px solid #999; } caption { font-family: Arial, sans-serif; color: #993333; padding-bottom: 6px; } th, td { padding: 10px; right: 1px solid #999; border-bottom: 1px solid #999; } th { font-family: Verdana, sans-serif; } padding-left: 26px; background: #ccc url(icon_year.gif) no-repeat 10px 50%; } #opponent { padding-left: 26padx; 🎜> background: #ccc url(icon_opp.gif) no-repeat 10px 50%; } #record { padding-left: 26px; background: #ccc url(icon_rec. ) no-repeat 10px 50%; } 你應該注意到了,我們改用簡寫方式定義了背景樣式,我們從th的定義中取出background:#ccc規則,並把它放到每個表頭的圖示名稱旁邊,這會使得我們的圖示"坐"在我們指定的灰色背景上面,我們也在每個表頭內容的左邊留夠圖示的空間,不讓文字覆蓋上去,圖3-11就是我們想要的效果: 制定獨特圖標的效果 |
使用簡寫語法有明顯的優點,然而,如果我們只以background屬性定義圖片,不定義背景色的話,就應該先取消掉先前在 中以background定義的背景色. |
![]() 能夠達到相同功能的另一種寫法,是把每個表頭裡反覆出現的規則(在這個例子中是背景圖片,內補丁和位置)拿出來寫在 定義一次就好了(因為它們的設定在每個 |
中的確都一樣),然後只在#year,#opponent,#record定義內保留各自不同的設定值(也就是圖片路徑) |
table { border-top: 1px solid #999; border-left: 1px solid #999; }caption { font-family: Arial, sans-serif; color: #99333: #993 ; padding-bottom: 6px; } th, td { padding: 10px; border-right: 1px solid #999; borderorder-botsol:1px d 999; } th { font-family: Verdana, sans-serif; padding-left: 26px; background-color: #ccc; background-eat: no-repeat; background-position: 10px 50%; } #year { background-image: url(icon_year.gif); } #opponent { background-image: url(icon_opp.gif); } #record { background: url(icon_rec.gif); } 這樣稍微簡潔一些了吧?藉著整合相同規則,我們能夠省下每次重複定義修改的時間和精力,以這個例子來說,看起來只差六個,半打而已,但是對大一些的樣式表來說,節省的量就很可觀了. 總結 在本章,我們不僅發現了表格並不邪惡,同時還深入了解表格之後,我們發現,他們很適合用來標記例表數據,而且仍然易於使用 我們更發現,只要加上一些樣式,就能控制列表數據的顯示方式,讓他們變得十分具有吸引力,別再為使用表格而感到恐懼了. |
---|

htmltagsareessentialforsenteringwebpages,增強輔助性,seo,and Performance.1)他們areAnclosedInanglebracketSandInpairStocrateAteAhierArchical.2)samantictagsictagsagtagslikleicereperreveuseerexperienceandseo.3)

self-closingtagsinhtmlandxmlaretagsthatclosethem hexptneedneedingAseparateClosingTag,SightifyingmarkupStrupupStrupureAndenHancingCodingsigy.1)shemesessientInsentialInxmlforelementswithcontentsswithcontent content content content content content content content content contentcontent,確保wellwell-formedDocuments.2)Inhtmlible5,inhtmlibut forfix

要構建一個功能強大且用戶體驗良好的網站,僅靠HTML是不夠的,還需要以下技術:JavaScript賦予網頁動態和交互性,通過操作DOM實現實時變化。 CSS負責網頁的樣式和佈局,提升美觀度和用戶體驗。現代框架和庫如React、Vue.js和Angular,提高開發效率和代碼組織結構。

布爾屬性是HTML中的特殊屬性,不需要值即可激活。 1.布爾屬性通過存在與否控制元素行為,如disabled禁用輸入框。 2.它們的工作原理是瀏覽器解析時根據屬性的存在改變元素行為。 3.基本用法是直接添加屬性,高級用法可通過JavaScript動態控制。 4.常見錯誤是誤以為需要設置值,正確寫法應簡潔。 5.最佳實踐是保持代碼簡潔,合理使用布爾屬性以優化網頁性能和用戶體驗。

HTML代碼可以通過在線驗證器、集成工具和自動化流程來確保其清潔度。 1)使用W3CMarkupValidationService在線驗證HTML代碼。 2)在VisualStudioCode中安裝並配置HTMLHint擴展進行實時驗證。 3)利用HTMLTidy在構建流程中自動驗證和清理HTML文件。

HTML、CSS和JavaScript是構建現代網頁的核心技術:1.HTML定義網頁結構,2.CSS負責網頁外觀,3.JavaScript提供網頁動態和交互性,它們共同作用,打造出用戶體驗良好的網站。

HTML的功能是定義網頁的結構和內容,其目的在於提供一種標準化的方式來展示信息。 1)HTML通過標籤和屬性組織網頁的各個部分,如標題和段落。 2)它支持內容與表現分離,提升維護效率。 3)HTML具有可擴展性,允許自定義標籤增強SEO。

HTML的未來趨勢是語義化和Web組件,CSS的未來趨勢是CSS-in-JS和CSSHoudini,JavaScript的未來趨勢是WebAssembly和Serverless。 1.HTML的語義化提高可訪問性和SEO效果,Web組件提升開發效率但需注意瀏覽器兼容性。 2.CSS-in-JS增強樣式管理靈活性但可能增大文件體積,CSSHoudini允許直接操作CSS渲染。 3.WebAssembly優化瀏覽器應用性能但學習曲線陡,Serverless簡化開發但需優化冷啟動問題。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3漢化版
中文版,非常好用

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中