整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          掌握 HTML Header 標(biāo)簽:打造網(wǎng)頁結(jié)構(gòu)的堅實(shí)基礎(chǔ)

          HTML 中,Header 標(biāo)簽起著至關(guān)重要的作用,它定義了網(wǎng)頁的頭部結(jié)構(gòu),為整個網(wǎng)頁的內(nèi)容分級和組織奠定了基礎(chǔ)。Header 標(biāo)簽的使用直接影響著網(wǎng)頁的布局、搜索引擎優(yōu)化(SEO)和訪問者體驗(yàn)。現(xiàn)在,讓我們深入探討 HTML Header 標(biāo)簽的奧秘,幫助你打造出結(jié)構(gòu)清晰、易于閱讀和搜索引擎優(yōu)化的網(wǎng)頁!

          HTML Header 標(biāo)簽介紹

          在 HTML 中,它通常位于網(wǎng)頁的頂部,包含著網(wǎng)頁標(biāo)題、logo、導(dǎo)航菜單等重要元素。Header 標(biāo)簽可以出現(xiàn)不止一次,這意味著一個網(wǎng)頁可以有多個 header 部分,但通常主 header 部分只會出現(xiàn)一次,用于包含與整個網(wǎng)頁相關(guān)的全球性信息。

          Header 標(biāo)簽的正確使用方法

          正確使用 Header 標(biāo)簽對于構(gòu)建一個良好網(wǎng)頁結(jié)構(gòu)至關(guān)重要。以下是你需要注意的關(guān)鍵點(diǎn):

          1. 網(wǎng)頁標(biāo)題 (h1) : Header 標(biāo)簽內(nèi)通常包含一個網(wǎng)頁標(biāo)題,使用
          2. 標(biāo)簽來定義。這個標(biāo)題應(yīng)該準(zhǔn)確地描述網(wǎng)頁內(nèi)容,因?yàn)樗粌H是網(wǎng)頁的視覺焦點(diǎn),也是搜索引擎抓取網(wǎng)頁內(nèi)容的關(guān)鍵。
          3. 層級與嵌套: Header 標(biāo)簽內(nèi)可以包含不同層級的標(biāo)題,
          4. 確保標(biāo)題層級是清晰的,不要跳級使用,這有助于搜索引擎正確理解網(wǎng)頁結(jié)構(gòu)。此外,你也可以在 Header 標(biāo)簽內(nèi)嵌套其他標(biāo)簽,比如 標(biāo)簽用于定義導(dǎo)航鏈接。
          5. logo 與品牌形象: 在 Header 部分包含你的 logo 和品牌名稱,這有助于提升品牌辨識度和用戶體驗(yàn)。你可以使用標(biāo)簽來添加 logo 圖片,并確保它具有合適的替代文本 (alt text) 以利于 SEO 和輔助技術(shù)。
          6. 元數(shù)據(jù)與 SEO: Header 標(biāo)簽也是添加元數(shù)據(jù) (meta data) 的理想位置,這可以幫助搜索引擎更好地理解和索引你的網(wǎng)頁。使用 標(biāo)簽來定義關(guān)鍵詞、描述、作者等信息,確保你的網(wǎng)頁在搜索結(jié)果中脫穎而出。

          最佳實(shí)踐與建議

          要充分發(fā)揮 Header 標(biāo)簽的潛力,以下是一些最佳實(shí)踐建議:

          1. 保持簡潔與聚焦: Header 部分應(yīng)該簡潔明了,只包含必要的信息。避免在 Header 中添加過多內(nèi)容,這可能會分散讀者注意力并影響網(wǎng)頁性能。
          2. 響應(yīng)式設(shè)計: 確保你的 Header 在不同設(shè)備和屏幕尺寸上都能良好呈現(xiàn)。使用響應(yīng)式設(shè)計技術(shù),比如媒體查詢,使你的網(wǎng)頁在手機(jī)、平板和桌面電腦上都能提供一致且便于使用的體驗(yàn)。
          3. 易于導(dǎo)航: Header 部分應(yīng)該包含清晰易懂的導(dǎo)航鏈接,幫助讀者快速定位他們感興趣的內(nèi)容。確保導(dǎo)航鏈接的標(biāo)簽具有描述性,且與網(wǎng)頁內(nèi)容相關(guān)。
          4. 測試與驗(yàn)證: 使用 HTML 驗(yàn)證工具確保你的 Header 代碼符合標(biāo)準(zhǔn)。此外,在不同瀏覽器和設(shè)備上測試你的網(wǎng)頁,確保 Header 部分在所有環(huán)境中都能正常呈現(xiàn)。

          結(jié)論

          HTML Header 標(biāo)簽是構(gòu)建網(wǎng)頁結(jié)構(gòu)的基石,它影響著網(wǎng)頁的視覺呈現(xiàn)、用戶體驗(yàn)和搜索引擎優(yōu)化。通過正確使用 Header 標(biāo)簽,你可以打造出層級分明、易于導(dǎo)航和搜索引擎友好的網(wǎng)頁。記住本文的最佳實(shí)踐建議,你將能夠創(chuàng)建出高質(zhì)量、高性能且吸引人的網(wǎng)頁!

          今,Web 用戶期望得到單頁應(yīng)用(SPA)提供的流暢、動態(tài)的體驗(yàn)。然而,創(chuàng)建 SPA 往往需要使用復(fù)雜的框架,如 React 和 Vue,學(xué)習(xí)和使用起來可能比較困難。這就是htmx的用武之地:一種通過直接在HTML中利用Ajax和CSS過渡效果等功能,為構(gòu)建動態(tài) Web 體驗(yàn)帶來新思路的工具。下面就來看看 htmx 是什么,它有什么強(qiáng)大之處!

          htmx 概述

          HTMX 允許在不使用 JavaScript 的情況下添加現(xiàn)代瀏覽器功能。可以直接在 HTML 中使用屬性來訪問 AJAX、CSS 過渡效果、WebSockets 和服務(wù)器推送等功能,以便以超文本的簡單性和強(qiáng)大性構(gòu)建現(xiàn)代用戶界面。

          HTMX的設(shè)計理念是通過解除HTML在前端開發(fā)中的一些限制,使其成為一個更加完整和強(qiáng)大的超文本工具。通常情況下,在傳統(tǒng)的Web開發(fā)中,只有<a><form>標(biāo)簽可以發(fā)起HTTP請求,只有點(diǎn)擊和提交事件可以觸發(fā)這些請求,只有GET和POST方法可用,并且只能替換整個屏幕內(nèi)容。而HTMX打破了這些限制,允許使用額外的HTML屬性來實(shí)現(xiàn)更多的功能,而不需要編寫大量的JavaScript代碼。例如,在HTML中使用特定的屬性即可實(shí)現(xiàn)進(jìn)度條、懶加載、無限滾動、內(nèi)聯(lián)驗(yàn)證等特性。

          與其他前端框架(如Vue.js和React)不同,HTMX的工作方式是:當(dāng)向服務(wù)器發(fā)送請求時,服務(wù)器返回完整的HTML響應(yīng),并更新頁面中的相應(yīng)部分,而不是以JSON格式返回數(shù)據(jù)。這使得HTMX可以與任何服務(wù)器端技術(shù)進(jìn)行集成,因?yàn)閼?yīng)用的邏輯和處理都發(fā)生在后端。這種方式簡化了前端開發(fā)并減少了對JavaScript的依賴。

          可以通過如下方式使用npm安裝HTMX:

          npm install htmx.org
          

          htmx 使用

          HTMX提供了一組屬性,可以直接從 HTM L中進(jìn)行AJAX請求:

          • hx-post:發(fā)送一個POST請求到指定的URL。
          • hx-get:發(fā)送一個GET請求到指定的URL。
          • hx-put:發(fā)送一個PUT請求到指定的URL。
          • hx-patch:發(fā)送一個PATCH請求到指定的URL。
          • hx-delete:發(fā)送一個DELETE請求到指定的URL。

          這些屬性都接受一個 URL 作為參數(shù),用于發(fā)送AJAX請求。因此,每當(dāng)觸發(fā)元素時,它會向指定的URL發(fā)送指定類型的請求。來看下面的例子:

          <button hx-get="/api/resource">加載數(shù)據(jù)</button>
          

          在上面的例子中,按鈕元素被賦予了hx-get屬性。一旦點(diǎn)擊該按鈕,就會向/api/resource URL發(fā)送一個GET請求。

          那當(dāng)從服務(wù)器返回數(shù)據(jù)時會發(fā)生什么呢?默認(rèn)情況下,htmx 會將這個響應(yīng)直接注入到發(fā)起請求的元素中,也就是示例中的按鈕元素。然而,htmx 并不局限于這種行為,它提供了將響應(yīng)數(shù)據(jù)指定為不同元素的目標(biāo)的能力,接下來將深入探討這個功能。

          使用htmx觸發(fā)請求

          htmx根據(jù)特定元素上發(fā)生的特定事件來觸發(fā)Ajax請求:

          • 對于inputtextareaselect元素,觸發(fā)事件是change事件。
          • 對于表單元素,觸發(fā)事件是submit事件。
          • 對于其他所有元素,觸發(fā)事件是click事件。

          下面來看一個例子:

          <label>關(guān)鍵詞:
            <input
              type="text"
              placeholder="輸入關(guān)鍵詞"
              hx-get="https://v2.jokeapi.dev/joke/Any?format=txt&safe-mode"
              hx-target="#joke-container"
              name="contains"
            />
          </label>
          
          <p id="joke-container">笑話內(nèi)容</p>
          

          為了觸發(fā)搜索,需要激活change事件。對于<input>元素而言,當(dāng)元素失去焦點(diǎn)且其值已被改變時就會觸發(fā)change事件。因此,當(dāng)在文本框中輸入一些內(nèi)容,然后點(diǎn)擊頁面上其他地方,一個笑話就會出現(xiàn)在<p>元素中。簡而言之,在輸入關(guān)鍵詞后,光標(biāo)離開輸入框,笑話就會自動顯示出來。

          這很不錯,但通常用戶希望在輸入時就看到搜索結(jié)果更新,也就是說,當(dāng)用戶在輸入框中輸入內(nèi)容時,將自動觸發(fā)Ajax請求,并在后臺獲取最新的搜索結(jié)果,并將其更新到頁面上相應(yīng)的位置。因此,用戶不需要手動點(diǎn)擊其他地方以觸發(fā)搜索,而是實(shí)時地在輸入的同時獲得更新的搜索結(jié)果。為了實(shí)現(xiàn)這一點(diǎn),可以給<input>元素添加一個htmx trigger屬性:

          <input
            ...
            hx-trigger="keyup"
          />
          

          現(xiàn)在結(jié)果會立即更新。但同時引入了一個新的問題:現(xiàn)在會在每次輸入時都進(jìn)行一次API調(diào)用。為了避免這個問題,可以使用修飾符來改變觸發(fā)器的行為。htmx 提供了以下修飾符選項(xiàng):

          • once:如果希望請求只執(zhí)行一次,可以使用此修飾符。
          • changed:此修飾符確保只有在元素的值發(fā)生變化時才發(fā)出請求。
          • delay:<時間間隔>:此修飾符設(shè)置一個等待期(如1秒),在此等待期間再次觸發(fā)事件將重新計時。
          • throttle:<時間間隔>:使用此修飾符,可以在發(fā)出請求之前設(shè)置一個等待期(例如1秒)。然而,與delay不同的是,如果在設(shè)定的時間內(nèi)觸發(fā)了新的事件,則該事件將被忽略,確保請求僅在定義的時間后觸發(fā)。
          • from:<CSS選擇器>:此修飾符使得可以在特定的元素上監(jiān)聽事件,而不是原始元素。

          在這種情況下,delay是我們想要的修飾符:

          <input
            ...
            hx-trigger="keyup delay:500ms"
          />
          

          現(xiàn)在,當(dāng)在輸入框中輸入內(nèi)容時(嘗試輸入一個較長的詞,比如"developer"),只有在暫停或完成輸入時才會觸發(fā)請求。

          <label>關(guān)鍵字:
            <input
              type="text"
              placeholder="E輸入關(guān)鍵字d"
              hx-get="https://v2.jokeapi.dev/joke/Any?format=txt&safe-mode"
              hx-target="#joke-container"
              name="contains"   
              hx-trigger="keyup delay:500ms"
            />
          </label>
          
          <p id="joke-container">笑話內(nèi)容</p>
          

          正如你所見,這種做法只需要幾行客戶端代碼就可以實(shí)現(xiàn)一個搜索框模式。

          請求指示器

          在Web開發(fā)中,當(dāng)用戶執(zhí)行某個操作并且該操作可能需要一段時間才能完成(如進(jìn)行網(wǎng)絡(luò)請求),我們通常需要給用戶提供反饋。其中一種常見的反饋方式是使用請求指示器,以可視化的方式提示用戶該操作正在進(jìn)行中。

          htmx集成了對請求指示器的支持,讓我們能夠向用戶提供這種反饋。它使用hx-indicator類來指定一個元素作為請求指示器。具有此類的任何元素的默認(rèn)不透明度為 0,使其在DOM中不可見但存在。

          當(dāng)htmx發(fā)起一個Ajax請求時,它會在觸發(fā)元素上應(yīng)用htmx-request類。htmx-request類會導(dǎo)致該元素或任何具有htmx-indicator類的子元素的不透明度變?yōu)?1。

          例如,下面是一個具有加載旋轉(zhuǎn)圖標(biāo)作為其請求指示器的元素:

          <button hx-get="/api/data">
            加載數(shù)據(jù)
            <img class="htmx-indicator" src="/spinner.gif" alt="Loading">
          </button>
          

          當(dāng)具有hx-get屬性的按鈕被點(diǎn)擊并且請求開始時,按鈕會自動添加一個htmx-request類。這個類可以讓請求指示器(例如加載旋轉(zhuǎn)圖標(biāo))在按鈕上顯示,當(dāng)請求完成后,這個類會被移除,請求指示器也會停止顯示。還可以使用htmx-indicator屬性來指示接收htmx-request類的元素(顯示請求指示器的元素)。

          <label>關(guān)鍵字:
            <input
              type="text"
              placeholder="輸入關(guān)鍵字"
              hx-get="https://v2.jokeapi.dev/joke/Any?format=txt&safe-mode"
              hx-target="#joke-container"
              name="contains"   
              hx-trigger="keyup delay:500ms"
              hx-indicator=".loader"
            />
          </label>
          
          <span class="loader htmx-indicator"></span>
          
          <p id="joke-container">笑話內(nèi)容</p>
          

          定位元素和更新內(nèi)容

          在某些情況下,我們可能需要在發(fā)送請求的元素之外更新其他元素。htmx 允許我們hx-target屬性來指定Ajax響應(yīng)應(yīng)該更新的特定元素。可以通過在hx-target屬性中設(shè)置一個CSS選擇器來指定要更新的元素。例如有一個用于發(fā)布新評論的表單,希望將新評論添加到評論列表中,而不是更新表單本身。

          <button
            hx-get="https://v2.jokeapi.dev/joke/Any?format=txt&safe-mode&type=single"
            hx-target="#joke-container"
          >
            Hello htmx!
          </button>
          

          當(dāng)用戶點(diǎn)擊按鈕并發(fā)起請求時,獲取到的響應(yīng)數(shù)據(jù)將會更新顯示在頁面上具有"joke-container"這個ID的元素內(nèi)部,而不是替換按鈕本身的內(nèi)容。這樣可以實(shí)現(xiàn)在特定位置更新內(nèi)容,而不影響其他部分的效果。

          擴(kuò)展CSS選擇器

          htmx提供了一些擴(kuò)展的CSS選擇器,用于更高級的元素選擇和內(nèi)容加載:

          • this :指定帶有 hx-target 屬性的元素作為實(shí)際更新目標(biāo)。
          • closest :找到與給定CSS選擇器匹配的最近的祖先元素。
          • nextprevious :在DOM中查找與給定CSS選擇器匹配的后續(xù)或前置元素。
          • find :查找與給定CSS選擇器匹配的第一個子元素。

          通過使用這些關(guān)鍵字,我們可以更靈活地選擇要更新的元素。例如,在之前的例子中,我們可以使用 hx-target="next p" 來指定更新目標(biāo)元素,而不是使用具體的 ID。這樣可以簡化代碼,并且使得更新更加動態(tài)和通用。

          更新內(nèi)容

          默認(rèn)情況下,htmx會用Ajax響應(yīng)替換目標(biāo)元素的內(nèi)容。但是,如果希望追加新內(nèi)容而不是替換它,那就可以使用hx-swap屬性。該屬性允許指定新內(nèi)容應(yīng)該如何插入目標(biāo)元素中。可能的取值包括outerHTMLinnerHTMLbeforebeginafterbeginbeforeendafterend。例如,使用hx-swap="beforeend"會將新內(nèi)容追加到目標(biāo)元素的末尾,這對于新評論的場景非常合適。

          CSS 過渡

          可以使用CSS過渡效果來使元素在不使用JavaScript的情況下平滑地改變樣式。要實(shí)現(xiàn)這一點(diǎn),需要在多個HTTP請求之間保持相同的元素 ID。這樣,當(dāng) htmx 接收到新的內(nèi)容并更新元素時,它將能夠應(yīng)用CSS過渡效果,使樣式的改變過渡得更加平滑。

          <button hx-get="/new-content" hx-target="#content">
            請求數(shù)據(jù)
          </button>
          
          <div id="content">
            初始內(nèi)容
          </div>
          

          在htmx發(fā)起到/new-content的Ajax請求后,服務(wù)器返回以下內(nèi)容:

          <div id="content" class="fadeIn">
            新內(nèi)容
          </div>
          

          盡管內(nèi)容發(fā)生了變化,但是<div>元素保持了相同的ID。然而,新增的內(nèi)容中添加了一個fadeIn類。通過為新內(nèi)容添加fadeIn類,我們可以定義相應(yīng)的CSS規(guī)則,例如opacitytransition屬性,來實(shí)現(xiàn)淡入效果。這樣,當(dāng)htmx接收到新的內(nèi)容并更新元素時,CSS過渡效果將被觸發(fā),使元素的變化過渡得更加平滑。

          下面來創(chuàng)建一個 CSS 過渡效果,使元素從初始狀態(tài)平滑過渡到新狀態(tài):

          .fadeIn {
            animation: fadeIn 2.5s;
          }
          
          @keyframes fadeIn {
            0% {opacity: 0;}
            100% {opacity: 1;}
          }
          

          當(dāng)htmx加載新內(nèi)容時,它會觸發(fā)CSS過渡效果,從而創(chuàng)建一個流暢的視覺過渡到更新后的狀態(tài)。

          使用 View Transitions API

          全新的View Transitions API提供了一種在DOM元素的不同狀態(tài)之間進(jìn)行動畫轉(zhuǎn)換的方式。與涉及元素CSS屬性變化的CSS過渡不同,視圖過渡是用于動畫元素內(nèi)容的變化。

          View Transitions API 是一個正在積極開發(fā)中的全新實(shí)驗(yàn)性功能。該API已經(jīng)在Chrome 111+中實(shí)現(xiàn),并預(yù)計將來會有更多的瀏覽器支持它。htmx提供了與View Transitions API一起使用的接口,并在不支持該API的瀏覽器中回退到非過渡機(jī)制。

          在 htmx 中,View Transitions API 的使用方法如下:

          • htmx.config.globalViewTransitions配置變量設(shè)置為true。這將對所有交換使用過渡效果。
          • hx-swap屬性中使用transition:true選項(xiàng)。可以使用CSS定義和配置視圖過渡效果。

          下面是一個“彈跳”過渡效果的示例,其中舊內(nèi)容彈出,新內(nèi)容彈入:

          @keyframes bounce-in {
            0% { transform: scale(0.1); opacity: 0; }
            60% { transform: scale(1.2); opacity: 1; }
            100% { transform: scale(1); }
          }
          
          @keyframes bounce-out {
            0% { transform: scale(1); }
            45% { transform: scale(1.3); opacity: 1; }
            100% { transform: scale(0); opacity: 0; }
          }
          
          .bounce-it {
            view-transition-name: bounce-it;
          }
          
          ::view-transition-old(bounce-it) {
            animation: 600ms cubic-bezier(0.4, 0, 0.2, 1) both bounce-out;
          }
          
          ::view-transition-new(bounce-it) {
            animation: 600ms cubic-bezier(0.4, 0, 0.2, 1) both bounce-in;
          }
          

          在使用htmx時,可以在hx-swap屬性中添加transition:true選項(xiàng)來啟用過渡效果。然后,可以將bounce-it類添加到想要進(jìn)行動畫處理的內(nèi)容上。

          <button
            hx-get="https://v2.jokeapi.dev/joke/Any?format=txt&safe-mode" 
            hx-swap="innerHTML transition:true" 
            hx-target="#joke-container"
          >
            加載新動畫
          </button>
          
          <div id="joke-container" class="bounce-it">
            <p>初始動畫內(nèi)容</p>
          </div>
          

          在這個例子中,當(dāng)<div>的內(nèi)容被更新時,舊內(nèi)容會以彈跳的方式退出視圖,而新內(nèi)容會以彈跳的方式進(jìn)入視圖,從而產(chǎn)生一種生動的視覺效果。

          表單校驗(yàn)

          htmx 與 HTML5 Validation API 可以良好的集成,在表單提交時,htmx會利用瀏覽器原生的驗(yàn)證功能進(jìn)行表單驗(yàn)證。

          例如,當(dāng)用戶點(diǎn)擊提交按鈕時,只有當(dāng)輸入字段包含有效的電子郵件地址時,才會向/contact發(fā)送POST請求。

          <form hx-post="/contact">
            <label>Email:
              <input type="email" name="email" required>
            </label>
            <button>提交</button>
          </form>
          

          值得注意的是,htmx在驗(yàn)證過程中會觸發(fā)一系列事件,可以利用這些事件來添加自己的驗(yàn)證邏輯和錯誤處理方法。例如,如果想要在JavaScript代碼中實(shí)現(xiàn)郵箱檢查,可以這樣做:

          form hx-post="/contact">
            <label>Email:
              <input type="email" name="email" required>
            </label>
            <button>提交</button>
          </form>
          
          <script>
            const emailInput = document.querySelector('input[type="email"]');
          
            emailInput.addEventListener('htmx:validation:validate', function() {
              const  pattern = /@gmail\.com$/i;
          
              if (!pattern.test(this.value)) {
                this.setCustomValidity('只接受谷歌郵箱!');
                this.reportValidity();
              }
            });
          </script>
          

          這里使用了htmx的htmx:validation:validate事件,該事件在調(diào)用元素的checkValidity()方法之前被觸發(fā)。

          現(xiàn)在,當(dāng)嘗試提交帶有非gmail.com地址的表單時,將會看到一樣的錯誤提示。

          其他功能

          除了上述提到的功能外,htmx 還具有很多其他功能,旨在增強(qiáng)HTML的能力,并為處理Web應(yīng)用中的動態(tài)內(nèi)容更新提供簡單而強(qiáng)大的方式。它的功能不僅限于已經(jīng)介紹的內(nèi)容,還包括一些設(shè)計用于創(chuàng)建更具交互性和響應(yīng)性的網(wǎng)站的功能,而無需使用復(fù)雜的JavaScript框架。

          擴(kuò)展

          擴(kuò)展是htmx工具中功能強(qiáng)大的工具。這些可定制的JavaScript組件使我們能夠根據(jù)我們的特定需求進(jìn)一步增強(qiáng)和定制庫的行為。擴(kuò)展包括在請求中啟用JSON編碼、操作HTML元素上類的添加和刪除、調(diào)試元素、支持客戶端模板處理等。有了這些,我們就可以將htmx自定義為更精細(xì)的粒度。

          Boosting

          htmx的“Boosting”功能允許我們將標(biāo)準(zhǔn)的HTML錨點(diǎn)(即鏈接)和表單轉(zhuǎn)換為Ajax請求。在傳統(tǒng)的Web開發(fā)中,點(diǎn)擊鏈接或提交表單通常會導(dǎo)致整個頁面刷新。而通過使用htmx的"boosting"功能,這些鏈接和表單將通過Ajax請求來處理,只更新需要更新的部分內(nèi)容,而不需要刷新整個頁面。這使得網(wǎng)站的加載速度更快,并提供了更流暢的用戶體驗(yàn)。類似的技術(shù)在過去被稱為pjax,現(xiàn)在在htmx中也可以實(shí)現(xiàn)類似的效果。

          <div hx-boost="true">
            <a href="/blog">Blog</a>
          </div>
          

          這個 div 中的錨點(diǎn)標(biāo)簽會發(fā)出一個 Ajax GET 請求到 /blog,并將 HTML 響應(yīng)替換到 <body> 標(biāo)簽中。

          通過利用這個功能,可以為用戶創(chuàng)建更流暢的導(dǎo)航和表單提交體驗(yàn),使我們的 Web 應(yīng)用更像單頁面應(yīng)用(SPA)。

          歷史記錄管理

          htmx 內(nèi)置了對瀏覽器歷史記錄的支持,可以與標(biāo)準(zhǔn)的瀏覽器歷史API對接。這樣,可以將URL添加到瀏覽器導(dǎo)航欄,并將頁面當(dāng)前狀態(tài)存儲在瀏覽器的歷史記錄中,確保"返回"按鈕按照用戶的期望進(jìn)行操作。這樣一來,我們就可以創(chuàng)建出類似于SPA的網(wǎng)頁,能夠在不重新加載整個頁面的情況下維護(hù)狀態(tài)和處理導(dǎo)航。

          與第三方庫一起使用

          htmx 可以很容易的與其他庫進(jìn)行集成。它可以無縫地與許多第三方庫進(jìn)行整合,利用它們的事件來觸發(fā)請求。

          總結(jié)

          htmx是一個多功能、輕量級且易于使用的工具。它成功地將HTML的簡潔性與通常與復(fù)雜JavaScript庫相關(guān)的動態(tài)功能相結(jié)合,為創(chuàng)建交互式網(wǎng)絡(luò)應(yīng)用程序提供了一個全新的選擇。

          然而,它并不是適用于所有情況的解決方案。對于更復(fù)雜的應(yīng)用,我們可能仍然需要使用JavaScript框架。但是,如果目標(biāo)是創(chuàng)建一個快速、交互性強(qiáng)且用戶友好的Web應(yīng)用,而又不增加太多復(fù)雜性,那么 htmx 絕對是值得考慮的。

          本標(biāo)簽: 32

          1. <html></html>,創(chuàng)建一個HTML文檔;
          2. <head></head>,設(shè)置文檔標(biāo)題和其它在網(wǎng)頁中不顯示的信息;
          3. <title></title>,設(shè)置文檔的標(biāo)題;
          4. <h1></h1>,最大的標(biāo)題;
          5. <pre></pre>,預(yù)先格式化文本;
          6. <u></u>,下劃線
          7. <b></b>,黑體字;
          8. <i></i>,斜體字;
          9. <tt></tt>,打字機(jī)風(fēng)格的字體;
          10. <cite></cite>,引用,通常是斜體;
          11. <em></em>,強(qiáng)調(diào)文本(通常是斜體加黑體);
          12. <strong></strong>,加重文本(通常是斜體加黑體);
          13. <font,size="",color=""></font>,設(shè)置字體大小從1到7,顏色使用名字或RGB的十六進(jìn)制值;
          14. <BASEFONT></BASEFONT>,基準(zhǔn)字體標(biāo)記;
          15. <big></big>,字體加大;
          16. <SMALL></SMALL>,字體縮小;
          17. <STRIKE></STRIKE>,加刪除線;
          18. <CODE></CODE>,程式碼;
          19. <KBD></KBD>,鍵盤字;
          20. <SAMP></SAMP>,范例;
          21. <VAR></VAR>,變量;
          22. <BLOCKQUOTE></BLOCKQUOTE>,向右縮排;
          23. <DFN></DFN>,述語定義;
          24. <ADDRESS></ADDRESS>,地址標(biāo)記;
          25. <sup></SUP>,上標(biāo)字;
          26. <SUB></SUB>,下標(biāo)字;
          27. <xmp>...</xmp>固定寬度字體(在文件中空白、換行、定位功能有效)
          28. <plaintext>...</plaintext>固定寬度字體(不執(zhí)行標(biāo)記符號);
          29. <listing>...</listing>,固定寬度小字體;
          30. <font,color=00ff00>...</font>字體顏色;
          31. <font,size=1>...</font>最小字體;
          32. <font,style,='font-size:100,px'>...</font>無限增大.

          格式標(biāo)簽: 16

          1. <p></p>,創(chuàng)建一個段落;
          2. <p,align="">,將段落按左、中、右對齊;
          3. <br>,換行,插入一個回車換行符;
          4. <blockquote></blockquote>,從兩邊縮進(jìn)文本;
          5. <dl></dl>,列表標(biāo)簽,定義列表;
          6. <dt>,定義列表標(biāo)題;
          7. <dd>,定義列表內(nèi)容;

          例:

          <dl>

          <dt>標(biāo)題1</dt>

          <dd>內(nèi)容11</dd>

          <dd>內(nèi)容12</dd>

          <dt>標(biāo)題2</dt>

          <dd>內(nèi)容21</dd>

          <dd>內(nèi)容22</dd>

          </dl>

          1. <ol></ol>,列表標(biāo)簽,定義一個標(biāo)有數(shù)字的列表;
          2. <ul></ul>,列表標(biāo)簽,定義一個標(biāo)有圓點(diǎn)的列表;
          3. <li>,放在每個列表項(xiàng)之前; 放在<ol></ol>之間則每個列表項(xiàng)加上一個數(shù)字,放在<ul></ul>之間則每個列表項(xiàng)加上一個圓點(diǎn);
          4. <div,align=""></div>,分區(qū)標(biāo)簽,用來排版大塊HTML段落,也用于格式化表;
          5. <MENU>,選項(xiàng)清單;
          6. <DIR>,目錄清單;
          7. <nobr></nobr>,強(qiáng)行不換行;
          8. <hr,size='9',width='80%',color='ff0000'>水平線(設(shè)定寬度);
          9. <center></center>,水平居中.

          鏈接標(biāo)簽: 7

          1. <a,href="URL"></a>,創(chuàng)建超文本鏈接;
          2. <a,href="mailtEMAIL">
          3. </a>,創(chuàng)建自動發(fā)送電子郵件的鏈接;
          4. <a,name="name"></a>,創(chuàng)建位于文檔內(nèi)部的書簽;
          5. <a,href="#name"></a>,創(chuàng)建指向位于文檔內(nèi)部書簽的鏈接;
          6. <BASE>,文檔中不能被該站點(diǎn)辨識的其它所有鏈接源的URL;
          7. <LINK>,定義一個鏈接和源之間的相互關(guān)系;

          鏈接標(biāo)簽注解:

          target="...",決定鏈接源在什么地方顯示(用戶自定義的名字,_blank,_parent,_self,_top);

          rel="...",發(fā)送鏈接的類型;

          rev="...",保存鏈接的類型;

          accesskey="...",指定該元素的熱鍵;

          shape="...",允許我們使用已定義的形狀定義客戶端的圖形鏡像(default,rect,circle,poly);

          coord="...",使用像素或者長度百分比來定義形狀的尺寸;

          tabindex="...",使用定義過的tabindex元素設(shè)置在各個元素之間的焦點(diǎn)獲取順序(使用tab鍵使元素獲得焦點(diǎn)).

          表格標(biāo)簽: 21

          1. <table></table>,創(chuàng)建一個表格;
          2. <tr></tr>,表格中的每一行;
          3. <td></td>,表格中一行中的每一個格子;
          4. <th></th>,設(shè)置表格頭:通常是黑體居中文字;
          5. <table,cellspacing="">,設(shè)置表格格子之間空間的大小;
          6. <table,border="">,設(shè)置邊框的寬度;
          7. <table,cellpadding="">,設(shè)置表格格子邊框與其內(nèi)部內(nèi)容之間空間的大小;
          8. <table,width="">,設(shè)置表格的寬度.用絕對像素值或總寬度的百分比;
          9. <table,align="">,設(shè)置表格格子的水平對齊方式(left,center,right,justify);
          10. <tr,align="">,設(shè)置表格格子的水平對齊方式(left,center,right,justify);
          11. <tr,valign="">,設(shè)置表格格子的垂直對齊方式(baseline,bottom,middle,top);
          12. <td,colspan="">,設(shè)置一個表格格子跨占的列數(shù)(缺省值為1);
          13. <td,rowspan="">,設(shè)置一個表格格子跨占的行數(shù)(缺省值為1);
          14. <td,nowrap>,禁止表格格子內(nèi)的內(nèi)容自動斷行;
          15. <CAPTION></CAPTION>,表格的標(biāo)題;
          16. <COLGROUP></COLGROUP>,定義多個列為一組列;
          17. <TABLE></TABLE>,創(chuàng)建一個表格;
          18. <THEAD></THEAD>,定義表格的頁眉;
          19. <COL>,定義一個列組中的列,以便對它們能夠同時設(shè)置有關(guān)屬性;
          20. <TBODY></TBODY>,定義一個表格的實(shí)體;
          21. <TFOOT></TFOOT>,定義一個表格的頁腳;

          表單標(biāo)簽: 18

          1. <form></form>,創(chuàng)建表單;

          action="...",接收數(shù)據(jù)的服務(wù)器的URL;

          method="...",HTTP的方法(get,,post),其中g(shù)et是被反對使用的;

          enctype="...",指定MIME(Internet媒體類型);

          onsubmit="...",當(dāng)提交表單時發(fā)生的內(nèi)部事件;

          noreset="...",在重新設(shè)置表單時發(fā)生的內(nèi)部事件;

          target="...",決定把內(nèi)容顯示在什么地方(_blank,_parent,_self,_top)

          1. <select,multiple,name="name",size=""></select>,創(chuàng)建滾動菜單,size設(shè)置在需要滾動前可以看到的表單項(xiàng)數(shù)目;
          2. <option>,設(shè)置每個表單項(xiàng)的內(nèi)容;
          3. <select,name="name"></select>,創(chuàng)建下拉菜單;
          4. <textarea,name="name",cols=40,rows=8></textarea>,創(chuàng)建一個文本框區(qū)域,列的數(shù)目設(shè)置寬度,行的數(shù)目設(shè)置高度;
          5. <input,type="checkbox",name="name">,創(chuàng)建一個復(fù)選框,文字在標(biāo)簽后面;
          6. <input,type="radio",name="name",value="">,創(chuàng)建一個單選框,文字在標(biāo)志后面;
          7. <input,type=text,name="foo",size=20>,創(chuàng)建一個單行文本輸入?yún)^(qū)域,size設(shè)置以字符串的寬度;
          8. <input,type="submit",value="name">,創(chuàng)建提交(submit)按鈕;
          9. <input,type="image",border=0,name="name",src="name.gif">,創(chuàng)建一個使用圖象的提交(submit)按鈕;
          10. <input,type="reset">,創(chuàng)建重置(reset)按鈕;
          11. <BUTTON></BUTTON>,創(chuàng)建一個按鈕;

          disabled="...",把按鈕的狀態(tài)設(shè)置為不能;

          name="...",按鈕的控制名,value="...",按鈕的值;

          type="...",按鈕的類型(button,,submit,,reset);

          1. <FIELDSET></FIELDSET>,把相互關(guān)聯(lián)的控件組合成一組;
          2. <ISINDEX>,提示用戶輸入;
          3. <LABEL></LABEL>,為一個控件提供標(biāo)簽;
          4. <LEGEND></LEGEND>,為FIELDSET元素指定一標(biāo)題;
          5. <SELECT></SELECT>,為用戶做選擇創(chuàng)建各個選項(xiàng);
          6. <TEXTAREA></TEXTAREA>,創(chuàng)建一個允許用戶多行輸入的區(qū)域.

          表單標(biāo)簽注解:

          type="...",用于輸入控件的類型(text,password,checkbox,radio,submit,reset,file,hidden,image,button);

          name="...",控件的控制名(要求是除了submit和reset之外的任何名字);

          value="...",控件的初始值;

          checked="...",把一個單選鈕設(shè)置為選中的狀態(tài);

          disabled="...",把控件的狀態(tài)設(shè)置為不能使用;

          readonly="...",只對輸入密碼的文本框使用;

          size="...",表示以像素為單位的除了文本框和密碼框控件之外的其它控件的寬度,它是用來指定字符的數(shù)目;

          src="...",一個圖像控件的URL;

          maxlength="...",指定可以輸入的最多的字符數(shù)目;

          alt="...",另外一種文本描述;

          usemap="...",到客戶端圖形鏡像的URL;

          align="...",被反對.控制對齊方式(left,,center,,right,,justify);

          tabindex="...",通過定義的tabindex值確定在不同元素之間獲得焦點(diǎn)的順序;

          onfocus="...",當(dāng)元素獲得焦點(diǎn)時發(fā)生的事件;

          onblur="...",當(dāng)元素失去焦點(diǎn)時發(fā)生的事件;

          onselect="...",當(dāng)元素被選中時發(fā)生的事件;

          onchang="...",當(dāng)元素狀態(tài)被改變時發(fā)生的事件;

          accept="...",允許上載的文件類型.

          幀標(biāo)簽(框架標(biāo)簽): 27

          1. <frameset></frameset>,放在一個幀文檔的<body>標(biāo)簽之前,也可以嵌在其他幀文檔中;
          2. <frameset,rows="value,value">,定義一個幀內(nèi)的行數(shù),可用像素值或高度百分比;
          3. <frameset,cols="value,value">,定義一個幀內(nèi)的列數(shù),可用像素值或?qū)挾劝俜直?
          4. <frame>,定義一個幀內(nèi)的單一窗或窗區(qū)域;
          5. <noframes></noframes>,定義在不支持幀的瀏覽器中顯示什么提示;
          6. <frame,src="URL">,規(guī)定幀內(nèi)顯示的HTML文檔;
          7. <frame,name="name">,命名幀或區(qū)域以便別的幀可以指向它;
          8. <frame,marginwidth="">,定義幀左右邊緣的空白大小,必須大于等于1;
          9. <frame,marginheight="">,定義幀上下邊緣的空白大小,必須大于等于1;
          10. <frame,scrolling="">,設(shè)置幀是否有滾動欄,其值可以是"yes","no",或"auto";
          11. <frame,noresize>,禁止用戶調(diào)整一個幀的大小;
          12. <IFRAME></IFRAME>,創(chuàng)建一個內(nèi)聯(lián)的幀;

          scr="...",定義在幀中顯示的內(nèi)容的來源;

          frameborder="...",定義幀之間的邊界(0或1);

          align="...",被反對,控制對齊方式(left,,center,,right,,justify);

          height="...",幀的高度,width="..."幀的寬度;

          1. <marquee>...</marquee>,普通卷動;
          2. <marquee,behavior=slide>...</marquee>,滑動;
          3. <marquee,behavior=scroll>...</marquee>,預(yù)設(shè)卷動;
          4. <marquee,behavior=alternate>...</marquee>,來回卷動;
          5. <marquee,direction=down>...</marquee>,向下卷動;
          6. <marquee,direction=up>...</marquee>,向上卷動;
          7. <marquee,direction=right></marquee>,向右卷動;
          8. <marquee,direction='left'></marquee>,向左卷動;
          9. <marquee,loop=2>...</marquee>,卷動次數(shù);
          10. <marquee,width=180>...</marquee>,設(shè)定寬度;
          11. <marquee,height=30>...</marquee>,設(shè)定高度;
          12. <marquee,bgcolor=FF0000>...</marquee>,設(shè)定背景顏色;
          13. <marquee,scrollamount=30>...</marquee>,設(shè)定卷動距離;
          14. <marquee,scrolldelay=300>...</marquee>,設(shè)定卷動時間;
          15. <img,src="">,插入圖片,參數(shù)有:width="寬",alt="說明文字",height="高",boder="邊框".

          文檔整體屬性標(biāo)簽: 10

          1. <body,bgcolor="">,設(shè)置背景顏色.使用名字或RGB的十六進(jìn)制值;
          2. <body,background="">,設(shè)置背景圖片;
          3. <body,bgsound="">,設(shè)置背景音樂;
          4. <body,bgproperties="fixed">,固定背景圖片(IE適用);
          5. <body,text="">,設(shè)置文本顏色.使用名字或RGB的十六進(jìn)制值;
          6. <body,link="">,設(shè)置鏈接顏色.使用名,字或RGB的十六進(jìn)制值;
          7. <body,vlink="">,設(shè)置已使用的鏈接的顏色.使用名字或RGB的十六進(jìn)制值;
          8. <body,alink="">,設(shè)置正在被擊中的鏈接的顏色.使用名字或RGB的十六進(jìn)制值;
          9. <body,topmargin="">,設(shè)置頁面的上邊距;
          10. <body,leftmargin="">,設(shè)置頁面的左邊距.

          主站蜘蛛池模板: 福利一区二区视频| 人妻体内射精一区二区三区| 成人无号精品一区二区三区| 国产精品特级毛片一区二区三区| 国产精品一区三区| 亚洲国产国产综合一区首页| 亚洲影视一区二区| 国产精品一区二区三区高清在线| 日韩高清一区二区三区不卡 | 免费一区二区三区在线视频| 香蕉久久AⅤ一区二区三区| AV无码精品一区二区三区宅噜噜| 无码人妻一区二区三区免费n鬼沢| 亚洲一区动漫卡通在线播放| 一区二区三区视频免费| 亚洲av一综合av一区| 日韩有码一区二区| 亚洲日本久久一区二区va| 中文字幕一区二区三区在线不卡| 91在线一区二区| 亚洲无人区一区二区三区| 日韩精品一区二区三区老鸦窝| 手机看片福利一区二区三区| 色一情一乱一伦一区二区三欧美| 成人午夜视频精品一区| 人妻体内射精一区二区三区 | 亚洲毛片αv无线播放一区| 成人h动漫精品一区二区无码| 亚洲综合色一区二区三区小说| 国产日韩AV免费无码一区二区| 无码av不卡一区二区三区| 精品无码一区二区三区在线 | 久久99国产精一区二区三区| 国产传媒一区二区三区呀| 亚洲一区中文字幕在线电影网| 国产在线视频一区| 国产一区二区三区在线2021| 久久婷婷色综合一区二区| 国产伦精品一区二区三区视频金莲| 国产丝袜一区二区三区在线观看| 亚洲av无码一区二区三区天堂|