天天看點

css貝塞爾曲線 多個點_重新了解前端CSS篇為什麼動畫要用貝塞爾曲線這麼奇怪的東西?...

css貝塞爾曲線 多個點_重新了解前端CSS篇為什麼動畫要用貝塞爾曲線這麼奇怪的東西?...

    大家好我是落塵,一名新進晉級的菜鳥小編,也是一名前端開發攻城獅,從今天起帶大家重新了解前端,重新學習前端,讓大家有新的了解,每天都會更新些前端知識,如果小主們覺得還可以那就關注一下吧!

我們平時寫 HTML 語言,都習慣把關注點放到各種标簽上,很少去深究它的文法。我想你應該會有模糊的感覺,HTML 這樣的語言,跟 JavaScript 這樣的語言會有一些本質的不同。

實際上,JavaScript 語言我們把它稱為“程式設計語言”,它最大的特點是圖靈完備的,我們大緻可以了解為“包含了表達一切邏輯的能力”。像 HTML 這樣的語言,我們稱為“标記語言(mark up language)”,它是純文字的一種更新,“标記”一詞的概念來自:編輯審稿時使用不同顔色筆所做的“标記”。

在上世紀 80 年代,“富文本”的概念在計算機領域的熱門,猶如如今的“AI”和“區塊鍊”,而 Tim Berners-Lee 當時去設計 HTML,也并非是憑空造出來,他使用了當時已有的一種語言:SGML。

SGML 是一種古老的标記語言,可以追溯到 1969 年 IBM 公司所使用的技術,SGML 十分複雜,嚴格來說,HTML 是 SGML 中規定的一種格式,但是實際的浏覽器沒有任何一個是通過 SGML 引擎來解析 HTML 的。

今天的 HTML 仍然有 SGML 的不少影子,那麼接下來我們就從 SGML 的一些特性來學習一下 HTML。這裡我最想講的是 SGML 留給 HTML 的重要的遺産:基本文法和 DTD。

基本文法

首先,HTML 作為 SGML 的子集,它遵循 SGML 的基本文法:包括标簽、轉義等。

SGML 還規定了一些特殊的節點類型,在我們之前的 DOM 課程中已經講過幾種節點類型,它們都有與之對應的 HTML 文法,我們這裡複習一下:

css貝塞爾曲線 多個點_重新了解前端CSS篇為什麼動畫要用貝塞爾曲線這麼奇怪的東西?...

這裡我們從文法的角度,再逐個具體了解一下。

标簽文法

标簽文法産生元素,我們從文法的角度講,就用“标簽”這個術語,我們從運作時的角度講,就用“元素”這個術語。

HTML 中,用于描述一個元素的标簽分為開始标簽、結束标簽和自閉合标簽。開始标簽和自閉合标簽中,又可以有屬性。

  • 開始标簽:
    • 帶屬性的開始标簽: 
  • 結束标簽:
  • 自閉合标簽:

HTML 中開始标簽的标簽名稱隻能使用英文字母。

這裡需要重點講一講屬性文法,屬性可以使用單引号、雙引号或者完全不用引号,這三種情況下,需要轉義的部分都不太一樣。

屬性中可以使用文本實體(後文會介紹)來做轉義,屬性中,一定需要轉義的有:

  • 無引号屬性:

    &

    五種字元
  • 單引号屬性:

    '

    &

    兩種字元
  • 雙引号屬性:

    "

    &

    兩種字元

一般來說,靈活運用屬性的形式,是不太用到文本實體轉義的。

文本文法

在 HTML 中,規定了兩種文本文法,一種是普通的文本節點,另一種是 CDATA 文本節點。

文本節點看似是普通的文本,但是,其中有兩種字元是必須做轉義的:

<

 和 

&

如果我們從某處拷貝了一段文本,裡面包含了大量的 

<

 和 

&

,那麼我們就有麻煩了,這時候,就輪到我們的 CDATA 節點出場了。

CDATA 也是一種文本,它存在的意義是文法上的意義:在 CDATA 節點内,不需要考慮多數的轉義情況。

CDATA 内,隻有字元組合

]]>

需要處理,這裡不能使用轉義,隻能拆成兩個 CDATA 節點。

注釋文法

HTML 注釋文法以

結尾,注釋的内容非常自由,除了

-->

都沒有問題。

如果注釋的内容一定要出現 

-->

,我們可以拆成多個注釋節點。

DTD 文法(文檔類型定義)

SGML 的 DTD 文法十分複雜,但是對 HTML 來說,其實 DTD 的選項是有限的,浏覽器在解析 DTD 時,把它當做幾種字元串之一,關于 DTD,我在本篇文章的後面會詳細講解。

ProcessingInstruction 文法(處理資訊)

ProcessingInstruction 多數情況下,是給機器看的。HTML 中規定了可以有 ProcessingInstruction,但是并沒有規定它的具體内容,是以可以把它視為一種保留的擴充機制。對浏覽器而言,ProcessingInstruction 的作用類似于注釋。

ProcessingInstruction 包含兩個部分,緊挨着第一個問号後,空格前的部分被稱為“目标”,這個目标一般表示處理 ProcessingInstruction 的程式名。

剩餘部分是它的文本資訊,沒有任何格式上的約定,完全由文檔編寫者和處理程式的編寫者約定。

DTD

現在我們來講一下 DTD,DTD 的全稱是 Document Type Defination,也就是文檔類型定義。SGML 用 DTD 來定義每一種文檔類型,HTML 屬于 SGML,在 HTML5 出現之前,HTML 都是使用符合 SGML 規定的 DTD。

如果你是一個上個時代走過來的前端,一定還記得 HTML4.01 有三種 DTD。分别是嚴格模式、過渡模式和 frameset 模式。

複制代碼