整合營銷服務商

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

          免費咨詢熱線:

          驚艷到了,每個開發人員都必須要知道的6個HTML屬性!

          端訓練營:1v1私教,終身輔導計劃,幫你拿到滿意的 offer 已幫助數百位同學拿到了中大廠 offer。歡迎來撩~~~~~~~~

          Hello,大家好,我是 Sunday。

          說起 HTML 很多同學都會認為,這不就是小菜一碟嗎?這玩意有啥難度?你也太瞧不起我了吧!

          不過看似越簡單的東西,我們越會忽略,同時它們還可以提供出令人驚艷的效果!


          01:使用 Popover 屬性構建可訪問的原生彈出框元素

          過去,我們經常使用本機瀏覽器窗口作為彈出框元素來顯示頂層內容(例如:常見的 dialog)。

          可是這些默認的彈窗并不友好。所以后來,我們使用外部庫(Element、AntD 等)構建了頁面內的、經過CSS樣式化的彈出框,以好看的UI方式方式顯示此類內容。

          不過現在,你可以使用純HTML創建彈出框,而無需編寫任何JavaScript代碼。現代Web標準通過Popover API提供了內置的彈出框支持

          看下面的源代碼:

          <style>
            div[popover]::backdrop {
              background-color: rgba(0, 0, 0, 0.4);
            }
            
            div[popover] {
              padding: 12px;
              border: none;
            }
          </style>
          
          <div id="pop" popover>
            我是彈出的內容
          </div>
          
          <button popovertarget="pop">展示 popover</button>
          

          上述HTML使用了 popover 屬性來實現一個簡單的彈出框元素。

          它使用 popovertarget 屬性來在不使用JavaScript的情況下顯示彈出框元素。此外,我們使用了 ::backdrop 偽元素來樣式化彈出框的背景:

          你可以使用 @starting-style 為原生彈出框添加動畫,正如 MDN 文檔(https://developer.mozilla.org/en-US/docs/Web/CSS/@starting-style)中所解釋的那樣。

          02:在對話框和頁面中使用 autofocus 屬性

          HTML標準提供了 autofocus 屬性,用于在頁面加載和對話框/彈出框顯示狀態下自動聚焦表單元素。

          看下面的示例模態框,它在第一個輸入已經預填充的情況下自動將焦點設置到第二個文本輸入框上:

          <dialog id="dlg">
            <form method="dialog">
              <input type="text" placeholder="Firstname" value="張" />
              <div style="height: 8px"></div>
              <input type="text" placeholder="Lastname" autofocus />
              <div style="height: 8px"></div>
              <button>保存</button>
            </form>
          </dialog>
          <button onclick="document.getElementById('dlg').showModal()" autofocus>點我</button>
          

          上面的HTML在兩個地方使用了 autofocus 屬性:

          1. 在顯示模態框的按鈕元素中,在頁面加載事件后聚焦它。
          2. 在第二個文本輸入框中,自動將焦點設置到它,因為第一個文本輸入框已經預填充。

          此外,我們還使用了 method="dialog" 屬性來設置關閉對話框而無需使用JavaScript代碼。

          03:使用 pattern 屬性在文本輸入框中進行原生驗證

          表單校驗是日常開發的常見需求。不過當我們脫離了 Element、AntD 這些組件庫之后,你還知道如何實現表單校驗嗎?

          其實對于 HTML的 input 元素來說,它是有 pattern 屬性的

          假設我們需要驗證一個產品標識符,它包含兩個英文字母和六個數字,用連字符連接,即 GR-100200。

          以下HTML片段實現了上述要求的驗證功能的文本輸入框:

          <form>
            <label for="productID"> ID:</label>
            <input type="text" id="productID" name="productID" pattern="[A-Za-z]{2}-\d{6}" title="Please enter a valid product identifier (e.g., GR-100200)" required>
            <button type="submit">Submit</button>
          </form>
          

          在上面的示例中,我們使用 pattern 屬性設置了一個正則表達式,用于驗證產品標識符。此正則表達式要求兩個英文字母(不區分大小寫)后跟一個連字符,然后是六個數字。另外,我們還添加了 title 屬性,以提供關于輸入格式的說明。最后,我們將 required 屬性添加到輸入元素上,以確保用戶輸入有效的產品標識符。

          這里,pattern 屬性通過顯示瀏覽器特定的驗證消息來阻止表單提交無效輸入。但是他必須要在點擊了 提交 按鈕之后才可以進行校驗。

          如果我們想要進行實時校驗(根據輸入內容實時校驗)怎么辦呢?

          04:使用 :valid 和 :invalid CSS 偽類來實現 pattern 的實時驗證

          我們可以使用 :valid:invalid CSS 偽類來實現 pattern 的實時驗證,如下所示的 HTML 代碼片段所示:

          <style>
            input[type=text] {
              border: #000 1px solid;
              border-radius: 4px;
              outline: none;
              padding: 6px;
            }
          
            input[type=text]:invalid {
              border: red 1px solid;
          
              +span::before {
                content: '?';
                display: inline;
                color: red;
              }
            }
          
            input[type=text]:valid {
              border: green 1px solid;
          
              +span::before {
                content: '?';
                display: inline;
                color: green;
              }
            }
          </style>
          
          <input type="text" placeholder="i.e., GR-100200" pattern="[A-Z]{2}-[0-9]{6}" required />
          <span></span>
          

          上面的HTML片段使用CSS代碼根據驗證狀態設置樣式。無效輸入會將輸入框邊框設置為紅色,并顯示紅色的叉號。與此同時,有效輸入會呈現綠色邊框和綠色的勾號符號:

          05:處理移動虛擬鍵盤模式的 inputmode 屬性

          手機通過虛擬鍵盤進行輸入,這個鍵盤有幾種模式。

          例如,它可能僅顯示數字鍵用于數字輸入元素,對于一般的字符串輸入則顯示完整的鍵盤界面。移動瀏覽器會根據輸入類型自動更改虛擬鍵盤模式,但開發人員也可以使用 input 元素的 inputmode 屬性進行自定義。

          <input type="text" pattern="[0-9]{6}" inputmode="numeric" maxlength="6">
          

          在上面的示例中,我們使用了 inputmode 屬性來指定虛擬鍵盤的模式為 numeric,以便在移動設備上只顯示數字鍵盤。同時,我們還使用了 pattern 屬性來限制輸入只能是六位數字。maxlength 屬性限制輸入的最大長度為六位。

          06:使用 loading 屬性實現瀏覽器級別的圖片懶加載

          圖片懶加載是日常開發中的常見需求。我們在實現懶加載時大多數會使用一些現成的庫或者基于 Intersection Observer API 進行處理

          不過很多同學不知道的是:img 標簽的 loading 屬性可以讓你在不編寫JavaScript代碼或使用第三方庫的情況下啟用瀏覽器級別的圖片懶加載。

          看下面的源代碼:

          <div style="height: 2000px"></div>
          
          <img src="https://gips3.baidu.com/it/u=45328832,131546734&fm=3039&app=3039&f=JPEG?w=1024&h=1024
          " loading="lazy" />
          

          以這種方式實現圖片懶加載的功能,當頁面往下滾動的時候,圖片動態加載:

          標記一個內聯框架:

          <iframe src="http://www.runoob.com"></iframe>


          瀏覽器支持

          所有主流瀏覽器都支持 <iframe> 標簽。


          標簽定義及使用說明

          <iframe> 標簽規定一個內聯框架。

          一個內聯框架被用來在當前 HTML 文檔中嵌入另一個文檔。


          提示和注釋

          提示:您可以把需要的文本放置在 <iframe> 和 </iframe> 之間,這樣就可以應對不支持 <iframe> 的瀏覽器。

          提示:使用 CSS 為 <iframe> (包括滾動條)定義樣式。


          HTML 4.01 與 HTML5之間的差異

          HTML5 新增了一些新的屬性,同時去掉了 HTML 4.01 中的一些屬性。


          HTML 與 XHTML 之間的差異

          在 XHTML 中,name 屬性已被廢棄,并將被去掉。請使用 id 屬性代替。


          屬性

          New :HTML5 中的新屬性。

          屬性描述
          alignleftrighttopmiddlebottomHTML5 不支持。HTML 4.01 已廢棄。 規定如何根據周圍的元素來對齊 <iframe>。
          frameborder10HTML5 不支持。規定是否顯示 <iframe> 周圍的邊框。
          heightpixels規定 <iframe> 的高度。
          longdescURLHTML5 不支持。規定一個頁面,該頁面包含了有關 <iframe> 的較長描述。
          marginheightpixelsHTML5 不支持。規定 <iframe> 的頂部和底部的邊距。
          marginwidthpixelsHTML5 不支持。規定 <iframe> 的左側和右側的邊距。
          namename規定 <iframe> 的名稱。
          sandboxNew""allow-formsallow-same-originallow-scriptsallow-top-navigation對 <iframe> 的內容定義一系列額外的限制。
          scrollingyesnoautoHTML5 不支持。規定是否在 <iframe> 中顯示滾動條。
          seamlessNewseamless規定 <iframe> 看起來像是父文檔中的一部分。
          srcURL規定在 <iframe> 中顯示的文檔的 URL。
          srcdocNewHTML_code規定頁面中的 HTML 內容顯示在 <iframe> 中。
          widthpixels規定 <iframe> 的寬度。

          全局屬性

          <iframe> 標簽支持 HTML 的全局屬性。


          事件屬性

          <iframe> 標簽支持 HTML 的事件屬性。

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

          簡單的 HTML5 文檔:

          <!DOCTYPE html>

          <html>

          <head>

          <meta charset="utf-8">

          <title>文檔標題</title>

          </head>

          <body>

          文檔內容......

          </body>

          </html>


          瀏覽器支持

          所有主流瀏覽器都支持 <html> 標簽。


          標簽定義及使用說明

          <html> 標簽告知瀏覽器這是一個 HTML 文檔。

          <html> 標簽是 HTML 文檔中最外層的元素。

          <html> 標簽是所有其他 HTML 元素(除了 <!DOCTYPE> 標簽)的容器。


          HTML 4.01 與 HTML5之間的差異

          HTML5 中,增加了一個新屬性:manifest。


          HTML 與 XHTML 之間的差異

          xmlns 屬性在 XHTML 中是必需的,但在 HTML中不是。

          然而,即使 XHTML 文檔中的 <html> 沒有使用 xmlns 屬性,W3C 上的 HTML 驗證器也不會報錯。這是因為 "xmlns=http://www.w3.org/1999/xhtml" 是一個固定值,即使您沒有包含它,此值也會被添加到 <html> 標簽中。


          屬性

          New :HTML5 中的新屬性。

          屬性描述
          manifestNewURL定義一個 URL,在這個 URL 上描述了文檔的緩存信息。
          xmlnshttp://www.w3.org/1999/xhtmlHTML 不支持。只有 XHTML 支持。 規定 XML 的 namespace 屬性(如果您需要您的內容符合 XHTML,則使用這個屬性。)。

          全局屬性

          <html> 標簽支持 HTML 的全局屬性。

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


          主站蜘蛛池模板: 性色av无码免费一区二区三区| 秋霞午夜一区二区| 久久毛片免费看一区二区三区| 亚洲一区AV无码少妇电影☆| 学生妹亚洲一区二区| 激情啪啪精品一区二区| 国产精品美女一区二区三区| 日韩精品人妻一区二区中文八零| 国产av一区二区精品久久凹凸| 中文字幕无线码一区2020青青| 3d动漫精品啪啪一区二区中文| 嫩B人妻精品一区二区三区| 国产精品污WWW一区二区三区| 国产人妖在线观看一区二区| 女同一区二区在线观看| 免费一本色道久久一区| 日韩av片无码一区二区不卡电影| 国产一区二区三区乱码网站| 亚洲高清日韩精品第一区| 精品亚洲AV无码一区二区| 精品无码人妻一区二区三区品| 久久青草国产精品一区| 无码日韩精品一区二区三区免费 | 国产波霸爆乳一区二区| 国产精品99无码一区二区| 亚洲国产成人久久一区WWW | 亚洲国产精品自在线一区二区 | 欧美日韩精品一区二区在线视频| 麻豆一区二区99久久久久| 国产精品合集一区二区三区| 亚洲av无码一区二区三区在线播放 | 久久国产精品视频一区| 一区二区在线观看视频| 亚洲一区二区三区在线观看蜜桃| 亚洲一区欧洲一区| 爱爱帝国亚洲一区二区三区 | 无码人妻精品一区二区| 亚洲制服丝袜一区二区三区| 中文字幕乱码一区久久麻豆樱花| 日韩高清一区二区三区不卡| 一区二区三区在线播放|