整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          3_28用 p 元素代表段落(基礎HTML和HTML5)

          文章來源:freecodecamp網址:

          https://chinese.freecodecamp.org/

          HTML 是一種標記語言,使用特殊的語法或標記來向瀏覽器描述網頁的結構。HTML 元素由開始和結束標簽構成,標簽之間是文本內容。 不同的標簽可以讓文本內容以標題、段落、列表等形式展現。

          在這個課程中,你將通過編寫一個展示貓咪圖片的應用,學習最常見的 HTML 元素——它們可以用來構成任何網頁。

          注:本示例為第三個示例,以下內容來自freecodecamp。文章中圖示為調試當時界面,供學習參考。

          用 p 元素代表段落通過

          p 元素是網站上段落文本使用的元素。 p 是“paragraph(段落)”的縮寫。

          你可以像這樣創建一個段落:

          <p>I'm a p tag!</p>

          要求:在 h2 元素下方添加一個 p 元素,其內容是 Hello Paragraph。

          注意: 按照慣例,所有 HTML 標簽都應該是小寫字母,例如應使用 <p></p>,而不會使用 <P></P>。

          原始代碼界面:

          <h1>Hello World</h1>
          <h2>CatPhotoApp</h2>

          更改后代碼如下:

          nicode:修飾符 “u” 和 class \p{...}

          JavaScript 使用 Unicode 編碼 (Unicode encoding)對字符串進行編碼。大多數字符使用 2 個字節編碼,但這種方式只能編碼最多 65536 個字符。

          這個范圍不足以對所有可能的字符進行編碼,這就是為什么一些罕見的字符使用 4 個字節進行編碼,比如 (數學符號 X)或者 (笑臉),一些象形文字等等。

          以下是一些字符對應的 unicode 編碼:

          字符

          UNICODE

          UNICODE 中的字節數

          a

          0x0061

          2

          0x2248

          2

          0x1d4b3

          4

          0x1d4b4

          4

          0x1f604

          4

          所以像 a 這樣的字符占用 2 個字節,而 的對應編碼則更長,它們具有 4 個字節的長度。

          很久以前,當 JavaScript 被發明出來的時候,Unicode 的編碼要更加簡單:當時并沒有 4 個字節長的字符。所以,一部分語言特性在現在仍舊無法對 unicode 進行正確的處理。

          比如 length 認為這里的輸入有 2 個字符:

          alert(''.length); // 2
          alert(''.length); // 2

          …但我們可以清楚地認識到輸入的字符只有一個,對吧?關鍵在于 length 把 4 個字節當成了 2 個 2 字節長的字符。這是不對的,因為它們必須被當作一個整體來考慮。(即所謂的“代理偽字符”(surrogate pair),你可以在這里進一步閱讀有關的的信息 字符串)。

          默認情況下,正則表達式同樣把一個 4 個字節的“長字符”當成一對 2 個字節長的字符。正如在字符串中遇到的情況,這將導致一些奇怪的結果。我們將很快在后面的文章中遇到 [集合和范圍 ...]。

          與字符串有所不同的是,正則表達式有一個修飾符 u 被用以解決此類問題。當一個正則表達式使用這個修飾符后,4 個字節長的字符將被正確地處理。同時也能夠用上 Unicode 屬性(Unicode property)來進行查找了。我們接下來就來了解這方面的內容。

          Unicode 屬性(Unicode properties)\p{…}

          在 Firefox 和 Edge 中缺乏支持

          盡管 unicode property 從 2018 年以來便作為標準的一部分, 但 unicode 屬性在 Firefox (bug) 和 Edge (bug) 中并沒有相應的支持。

          目前 XRegExp 這個庫提供“擴展”的正則表達式,其中包括對 unicode property 的跨平臺支持。

          Unicode 中的每一個字符都具有很多的屬性。它們描述了一個字符屬于哪個“類別”,包含了各種關于字符的信息。

          例如,如果一個字符具有 Letter 屬性,這意味著這個字符歸屬于(任意語言的)一個字母表。而 Number 屬性則表示這是一個數字:也許是阿拉伯語,亦或者是中文,等等。

          我們可以查找具有某種屬性的字符,寫作 \p{…}。為了順利使用 \p{…},一個正則表達式必須使用修飾符 u

          舉個例子,\p{Letter} 表示任何語言中的一個字母。我們也可以使用 \p{L},因為 LLetter 的一個別名(alias)。對于每種屬性而言,幾乎都存在對應的縮寫別名。

          在下面的例子中 3 種字母將會被查找出:英語、格魯吉亞語和韓語。

          
          let str = "A ? ?";
          
          alert( str.match(/\p{L}/gu) ); // A,?,?
          alert( str.match(/\p{L}/g) ); // null(沒有匹配的文本,因為沒有修飾符“u”)

          以下是主要的字符類別和它們對應的子類別:

          - 字母(Letter)  L
            - 小寫(lowercase) `Ll`
            - 修飾(modifier) `Lm`,
            - 首字母大寫(titlecase) `Lt`,
            - 大寫(uppercase) `Lu`,
            - 其它(other) `Lo`。
          
          - 數字(Number) N
            - 十進制數字(decimal digit) `Nd`,
            - 字母數字(letter number) `Nl`,
            - 其它(other) `No`。
          
          - 標點符號(Punctuation)  P
            - 鏈接符(connector) `Pc`,
            - 橫杠(dash) `Pd`,
            - 起始引用號(initial quote) `Pi`,
            - 結束引用號(final quote) `Pf`,
            - 開(open) `Ps`,
            - 閉(close) `Pe`,
            - 其它(other) `Po`。
          
          - 標記(Mark) M (accents etc):
          
            - 間隔合并(spacing combining) `Mc`,
            - 封閉(enclosing) `Me`,
            - 非間隔(non-spacing) `Mn`。
          
          - 符號(Symbol)   S:
            - 貨幣(currency) `Sc`,
            - 修飾(modifier) `Sk`,
            - 數學(math) `Sm`,
            - 其它(other) `So`。
          
          - 分隔符(Separator)   Z
          
            - 行(line) `Zl`,
            - 段落(paragraph) `Zp`,
            - 空格(space) `Zs`。
          
          - 其它(Other)   C :
            - 控制符(control) `Cc`,
            - 格式(format) `Cf`,
            - 未分配(not assigned) `Cn`,
            - 私有(private use) `Co`,
            - 代理偽字符(surrogate) `Cs`。

          因此,比如說我們需要小寫的字母,就可以寫成 \p{Ll},標點符號寫作 \p{P} 等等。

          也有其它派生的類別,例如:

          • Alphabetic (Alpha), 包含了字母 L, 加上字母數字 Nl (例如 Ⅻ – 羅馬數字 12),加上一些其它符號 Other_Alphabetic (OAlpha)。
          • Hex_Digit 包括 16 進制數字 0-9a-f
          • …等等

          Unicode 支持相當數量的屬性,列出整個清單需要占用大量的空間,因此在這里列出相關的鏈接:

          • 列出一個字符的所有屬性 https://unicode.org/cldr/utility/character.jsp.
          • 按照屬性列出所有的字符 https://unicode.org/cldr/utility/list-unicodeset.jsp.
          • 屬性的對應縮寫形式:https://www.unicode.org/Public/UCD/latest/ucd/PropertyValueAliases.txt.
          • 以文本格式整理的所有 Unicode 字符,包含了所有的屬性:https://www.unicode.org/Public/UCD/latest/ucd/.

          實例:16 進制數字

          舉個例子,讓我們來查找 16 進制數字,寫作 xFF 其中 F 是一個 16 進制的數字(0…1 或者 A…F)。

          一個 16 進制數字可以表示為 \p{Hex_Digit}

          
          let regexp = /x\p{Hex_Digit}\p{Hex_Digit}/u;
          
          alert("number: xAF".match(regexp)); // xAF

          實例:中文字符

          讓我們再來考慮中文字符。

          有一個 unicode 屬性 Script (一個書寫系統),這個屬性可以有一個值:CyrillicGreekArabicHan (中文)等等,這里是一個完整的列表。

          為了實現查找一個給定的書寫系統中的字符,我們需要使用 Script=<value>,例如對于西里爾字符:\p{sc=Cyrillic}, 中文字符:\p{sc=Han},等等。

          
          let regexp = /\p{sc=Han}/gu; // returns Chinese hieroglyphs
          
          let str = `Hello Привет 你好 123_456`;
          
          alert( str.match(regexp) ); // 你,好

          實例:貨幣

          表示貨幣的字符,例如 $,具有 unicode 屬性 \p{Currency_Symbol},縮寫為 \p{Sc}

          讓我們使用這一屬性來查找符合“貨幣,接著是一個數字”的價格文本:

          
          let regexp = /\p{Sc}\d/gu;
          
          let  str = `Prices: $2, €1, ¥9`;
          
          alert( str.match(regexp) ); // $2,€1,¥9

          之后,在文章 量詞 +,*,?{n} 中我們將會了解如何查找包含很多位的數字。

          總結

          修飾符 u 在正則表達式中提供對 Unicode 的支持。

          這意味著兩件事:

          1. 4 個字節長的字符被以正確的方式處理:被看成單個的字符,而不是 2 個 2 字節長的字符。
          2. Unicode 屬性可以被用于查找中 \p{…}

          有了 unicode 屬性我們可以查找給定語言中的詞,特殊字符(引用,貨幣)等等。

          HTML DOM 允許 JavaScript 改變 HTML 元素的內容。

          改變 HTML 輸出流

          JavaScript 能夠創建動態的 HTML 內容:

          今天的日期是: Thu Aug 25 2016 09:23:24 GMT+0800 (中國標準時間)

          在 JavaScript 中,document.write() 可用于直接向 HTML 輸出流寫內容。

          實例

          <!DOCTYPE html>

          <html>

          <body>

          <script>

          document.write(Date());

          </script>

          </body>

          </html>

          絕對不要在文檔加載完成之后使用 document.write()。這會覆蓋該文檔。

          改變 HTML 內容

          修改 HTML 內容的最簡單的方法時使用 innerHTML 屬性。

          如需改變 HTML 元素的內容,請使用這個語法:

          document.getElementById(id).innerHTML=新的 HTML

          本例改變了 <p>元素的內容:

          實例

          <html>

          <body>

          <p id="p1">Hello World!</p>

          <script>

          document.getElementById("p1").innerHTML="新文本!";

          </script>

          </body>

          </html>

          本例改變了 <h1> 元素的內容:

          實例

          <!DOCTYPE html>

          <html>

          <body>

          <h1 id="header">Old Header</h1>

          <script>

          var element=document.getElementById("header");

          element.innerHTML="新標題";

          </script>

          </body>

          </html>

          實例講解:

          • 上面的 HTML 文檔含有 id="header" 的 <h1> 元素

          • 我們使用 HTML DOM 來獲得 id="header" 的元素

          • JavaScript 更改此元素的內容 (innerHTML)

          改變 HTML 屬性

          如需改變 HTML 元素的屬性,請使用這個語法:

          document.getElementById(id).attribute=新屬性值

          本例改變了 <img> 元素的 src 屬性:

          實例

          <!DOCTYPE html>

          <html>

          <body>

          <img id="image" src="smiley.gif">

          <script>

          document.getElementById("image").src="landscape.jpg";

          </script>

          </body>

          </html>

          實例講解:

          • 上面的 HTML 文檔含有 id="image" 的 <img> 元素

          • 我們使用 HTML DOM 來獲得 id="image" 的元素

          • JavaScript 更改此元素的屬性(把 "smiley.gif" 改為 "landscape.jpg")

          如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!


          主站蜘蛛池模板: 成人免费观看一区二区| 国产在线不卡一区| 久久亚洲中文字幕精品一区四 | 成人国产精品一区二区网站| 国产精品一区二区不卡| 国产高清视频一区二区| 中文字幕一区二区三区四区| 精品一区二区三区在线视频观看 | 性色AV一区二区三区无码| 国产在线精品一区二区中文| 一区二区不卡在线| 国产激情一区二区三区 | 亚洲天堂一区二区三区| 一区二区不卡久久精品| 一区二区三区四区视频| 欧洲精品一区二区三区在线观看 | 亚洲欧洲无码一区二区三区| 久久一区二区三区免费播放| 韩国理伦片一区二区三区在线播放| 日韩一区二区在线免费观看| 国产福利在线观看一区二区 | 精品人伦一区二区三区潘金莲| 亚洲欧洲一区二区| 亚洲AV色香蕉一区二区| 国产一区二区在线视频播放| 亚洲伦理一区二区| 中文字幕aⅴ人妻一区二区 | 国产一区风间由美在线观看| 日本精品3d动漫一区二区| 久久久久人妻精品一区三寸| 国产福利电影一区二区三区,亚洲国模精品一区 | 伊人无码精品久久一区二区| 合区精品久久久中文字幕一区| 日韩人妻无码一区二区三区久久| V一区无码内射国产| 国产乱人伦精品一区二区在线观看 | 日韩久久精品一区二区三区| 亚洲变态另类一区二区三区| 精品无码国产AV一区二区三区| 久久精品国内一区二区三区| 亚洲熟妇无码一区二区三区导航|