翻出我4年前看的《精通CSS》一書,惋惜當初沒有整理讀書筆記的習慣,最近又不多寫前端,遂不少東西、知識點遺忘了,恰且如今 css 也有些變化和進步,遂一塊兒打包整理,輸出成幾篇 blog 系列,以犒本身。css
超文本標記語言
(英語:HyperText Markup Language,簡稱:HTML
)是一種用於建立網頁的標準標記語言。html
超文本(Hypertext)
是用超連接的方法,將各類不一樣空間的文字信息組織在一塊兒的網狀文本。前端
1980年,物理學家蒂姆·伯納斯-李
在歐洲核子研究中心(CERN)在承包工程期間,爲使CERN的研究人員使用並共享文檔,他提出並建立原型系統ENQUIRE。html5
ENQUIRE 即最先的雛形。css3
1993年中期,互聯網工程任務組(IETF)發佈首個HTML
規範的提案:超文本標記語言(HTML)互聯網草案,由伯納斯-李與丹·康納利撰寫。瀏覽器
1995年11月24日,HTML 2.0
做爲IETF RFC 1866發佈。ide
2000年,HTML成爲國際標準(ISO/ IEC15445:2000)。測試
1997年12月18日,HTML 4.0
做爲W3C推薦標準發佈。字體
1999年12月24日,HTML 4.01
做爲W3C推薦標準發佈。動畫
HTML 4.01 又稱
XHTML1.0
,
2014年10月28日,HTML 5
做爲W3C推薦標準發佈。
因爲 HTML 中缺乏相應的元素,很難突出顯示人、地點或日期等類型的信息。爲了解決這個問題,有一組開發人員決定開發一套標準的命名約定和標記模式來表示這些數據。這些命名約定基於 vcard 和 icalendar 等現有的數據格式,如今稱爲微格式(microformat)
。
當前有 9 個正式的微格式,還有 14 個格式草案。例如一些:
ロ用於日期、日曆和事件的 hCalendar
ロ用於人和組織的 hcard
ロ用於人之間的關係的 XFN
口用於產品說明的 hproduct(草案)
口用於原料和烹調步驟的 hrecipe(草案)
ロ用於產品和事件審查的 hreview(草案)
口用於博客帖子等片斷式內容的 hatom(草案)
可擴展標記語言
(英語:Extensible Markup Language ,XML
)。
一、跟 HTML 的共同點:
都是標記語言,爲了標記數據的含義。
二、跟 HTML 的不一樣點:
HTML 只是用來描述網頁數據,而是 XML 能夠用來描述幾乎全部數據。
HTML 的標籤是 W3C 制定好的,但 XML 徹底能夠自定義標籤,創造本身的規範。
題外話,筆者以前用到 Web service 技術,用到的數據傳輸格式就是 XML。
可擴展超文本標記語言
(英語:eXtensible HyperText Markup Language,XHTML
)
爲了約束 HTML 鬆散的語法,把嚴格的 XML 套在了 HTML 身上,即誕生了 XHTML。
XHTML 就是以 XML 的語法形式來寫 HTML。
語法的嚴格體如今——例如:
一、元素名稱和屬性必須小寫
二、全部元素必須是封閉的,即要有結束標籤。而空元素的話可用/>
來結束。
正確:
<br />
錯誤:
<br>
三、全部 XHTML 屬性必須包含引號
正確:
<td rowspan="3">
錯誤:
<td rowspan=3>
四、禁止屬性簡化
正確:
<dl compact="compact">
錯誤:
<dl compact>
五、必須包含一個文件頭聲明 <!DOCTYPE>
文檔標記類型
<!DOCTYPE html>
用於HTML5
一、利於 SEO (搜索引擎)
二、利於爬蟲
三、方便無障礙瀏覽
strong 標籤表示很強的強調,表現爲字體變粗。
em 標籤表示稍強的強調,表現爲斜體。
i 標籤表示由於某種緣由和正常文本不一樣的文本,例如專業術語、外語短語等。
b 標籤 沒有語義,建議用 css 的 font-weight:bold。
這裏模仿一個文章詳情頁的網頁:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>文章詳情</title> </head> <body> <nav> <ul> <li>網站導航欄 - 1</li> <li>網站導航欄 - 2</li> </ul> </nav> <article> <header> <h1>文章標題</h1> <h2>文章副標題</h2> </header> <aside> <h1>文章做者</h1> <p>文章做者簡述</p> <time datetime="2019-07-26" pubdate>文章發佈日期</time> </aside> <figure> <img src="#" alt="文章配圖" /> <figcaption>文章配圖說明</figcaption> </figure> <p>文章內容..</p> <p>文章內容..</p> <p>文章內容..</p> <section> 文章互動區(點贊等) </section> <section> 文章分享區 </section> <article> <h2>評論區</h2> <article> <header> <h3>評論者: 專業水軍</h3> <p> <time pubdate datetime="2018-03-23T15:10-08:00">~1 min ago</time> </p> </header> <p>還行</p> </article> <article> <header> <h3>評論者: 大水怪</h3> <p> <time pubdate datetime="2018-03-23T15:10-08:00">~1 hour ago</time> </p> </header> <p>樓上說的對</p> </article> </article> <footer> 文章版權說明 </footer> </article> </body> </html>
注意點:
一、header 和 footer 適用於 article 或者 整個 body
二、acticle、nav、aside 能夠理解爲特殊的section,若是能夠用 article、nav、aside 就不要用section,實在沒有實際意義的就用 div。
我這裏隨便挑了幾家,
國外的 medium,支持的還不錯。
但國內的知乎、簡書,都是 div + span 黨,仍是不行。
更多的HTML5標籤參考:HTML5 標籤列表
ARIA(Accessible Rich Internet Application 無障礙富互聯網應用)
,是可以讓殘障人士更加便利的訪問 Web 的一套機制。
主要經過role
和aria-*
來標識,例以下面用無語義的 div 實現的進度條:
<div id="percent-loaded" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" />
這裏平時的開發幾乎不會涉獵,故不作深究。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>文檔標題</title> </head> <body> 文檔內容...... </body> </html>
層疊樣式表
(英語:Cascading Style Sheets,縮寫:CSS
)
樣式和表很好理解,層疊是什麼意思呢?後面的文章我會有詳細的介紹。
一、CSS 屬於領域專用語言(DSL
)
二、CSS區分大小寫
CSS3
是最新的CSS 標準,由萬維網聯盟(W3C)
定義和維護。
<link rel="stylesheet" type="text/css" href="my.css"/>
<style type="text/css"> @import "mystyle.css"; </style>
導入樣式表比連接樣式錶慢。
<style type="text/css"> div{margin: 0;padding: 0;border:1px red solid;} </style>
<div style="border:1px red solid;">測試信息</div>
若是說HTML語義化標籤是給機器看的,那麼CSS命名的語義化就是給人看的。
(1) 能夠去掉小數點前的 0
font-size : .8em
(2) 0後面無需跟單位
.class{padding:0;}
(3) url()裏面的value不用加引號
url(images/logo.png)
(4) 有意義的註釋
爲了使註釋更有意義,可使用關鍵字來區分重要的註釋。我使用 @todo 來表示某些東西須要在之後進行修改、修復或複查,用 @bugfix 表示代碼或特定瀏覽器遇到的問題,用 @workaround 表示並不完普的權宜之計。
貌似不多有人專門去用,暫略。
2D、3D 轉化、過渡、動畫等略