AngularJS支持通過單個頁面上的多個視圖單頁應用。要做到這一點AngularJS提供了ng-view 、 ng-template 指令和 $routeProvider 服務。
ng-view
NG-view標記簡單地創建一個占位符,其中一個相應的視圖(HTML或ng-template視圖),可以根據配置來放置。
使用
定義主模塊使用一個 div 及ng-view。
<div ng-app="mainApp">
...
<div ng-view></div>
</div> 12345復制代碼類型:[html]
ng-template
ng-template指令用于創建使用腳本標記的HTML視圖。它包含一個“id”屬性用于由 $routeProvider 映射帶有控制器的視圖。
使用
定義腳本塊類型為 ng-template 的主模塊 。
div ng-app="mainApp">
...
<script type="text/ng-template" id="addStudent.htm">
<h2> Add Student </h2>
{{message}}
</script>
</div> 12345678復制代碼類型:[html]
$routeProvider
$routeProvider是用來設置URL配置的關鍵服務,映射與對應的HTML頁面或ng-template,并附加相同的控制器。
使用
定義腳本塊類型為 ng-template 的主模塊 。
<div ng-app="mainApp">
...
<script type="text/ng-template" id="addStudent.htm">
<h2> Add Student </h2>
{{message}}
</script>
</div>
123456789復制代碼類型:[html]
使用
定義腳本塊及主模塊,并設置路由配置。
var mainApp=angular.module("mainApp", ['ngRoute']);
mainApp.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/addStudent', {
templateUrl: 'addStudent.htm',
controller: 'AddStudentController'
}).
when('/viewStudents', {
templateUrl: 'viewStudents.htm',
controller: 'ViewStudentsController'
}).
otherwise({
redirectTo: '/addStudent'
});
}]);
123456789101112131415161718復制代碼類型:[html]
以下是在上面的例子中要考慮的重點。
$ routeProvider定義作為一個函數在mainApp模塊的配置下,使用鍵 '$routeProvider'.
$routeProvider定義URL “/addStudent”,然后映射到“addStudent.htm”。addStudent.htm 存在于相同的路徑的主html頁面。如果HTM網頁沒有定義,那么NG-模板使用id="addStudent.htm"。我們使用ng-template。
"otherwise" 用于設置的默認視圖。
"controller" 用于為視圖設置相應的控制器。
開課吧廣場-人才學習交流平臺
下列哪項是常見的郵件管理軟件(B)?
選擇一項:
A. Visio
B. Outlook
C. Photoshop
2 顯示器的主要技術指標之一是(C)。
選擇一項:
A. 耗電量
B. 亮度
C. 分辨率
D. 重量
3 計算機技術中,下列不是度量存儲器的容量單位的是(A)。
選擇一項:
A. GHZ
B. KB
C. GB
D. MB
4 在Word中,如果要使文檔內容橫向打印,在"頁面設置"中應選擇彩蛋。
選擇一項:(B)
A. 版面
B. 頁邊距
C. 紙張來源
D. 紙型
5 等于每行中最大字符高度兩倍的行距被稱為(A )行距。
選擇一項:
a. 兩倍
b. 最小值
c. 1.5倍
d. 單倍
6 Word默認的紙張大小為(D )。
選擇一項:
A. A3
B. A2
C. A1
D. A4
7 Word中設置行間距可以在(C )選項卡中的段落對話框中設置。
選擇一項:
A. 文檔元素
B. 表格
C. 開始
D. 布局
8 在工作表中插入頁眉應該在( B)選項卡中選擇頁眉/頁腳。
選擇一項:
A. 審閱
B. 插入
C. 數據
D. 布局
9 下列關于工作表表述正確的是(A)。
選擇一項:
A. 一個Excel文件可以包含多個工作表
B. 工作表的行數與列數是無限的
C. 同一個Excel文件中工作表可以重名
D. 工作簿與工作表是同一個概念
10 關于演示文稿的視圖方式下列錯誤的是(C)。
選擇一項:
A. 在備注頁視圖中用戶可以整頁格式查看和使用備注
B. 在大綱試圖中用戶在大綱區域輸入大綱文本后按“回車”則創建一個新的幻燈片
C. 在幻燈片瀏覽視圖中用戶可以移動幻燈片的位置,但不能插入、刪除
D. 對幻燈片的編輯主要在普通視圖下進行
11 下面關于文件和文件夾的管理說法正確的是(AC)。
選擇一項或多項:
A. 如果文件正在被使用,則系統不允許對文件進行重命名的操作
B. 如果移動文件可以使用Ctrl+C組合鍵
C. 按住Shift單擊鼠標可以選中連續的多個文件
D. 如果要復制文件可以使用Ctrl+A組合鍵
12 下面哪幾種字符不能在文件名中使用?(ACD)
選擇一項或多項:
A. \
B.=
C. ,
D. *
13 如果我們在EXCEL中的發現某個單元格顯示 “######”,那么可能的原因是( BD )。
選擇一項或多項:
A. 單元格不支持輸入內容的格式
B. 單元格的寬度不夠,內容無法完全顯示
C. 單元格出現亂碼
D. 這個單元格本身輸入了######
14 創建一個新的空白演示文稿,新演示文稿的第一張幻燈片上會有標題占位符和副標題占位符。占位符中可以直接輸入(AD)?
選擇一項或多項:
A. 數字
B. 視頻
C. 圖片
D. 文本
15 EXCEL的單元格只能直接輸入文字或者公式或者數字,不能插入文本框、圖片等內容。(錯)
16 幻燈片中占位符以外的位置處不能直接添加文字,需要先插入文本框,在文本框中輸入文字。(對)
17 Word中沒有為文字添加拼音的功能。(錯)
18 在Word中,利用“格式刷”按鈕可以復制文本的段落格式、樣式、字體和字號格式。(對)
19 在Word中,使用“表格”菜單中的“繪制表格”命令在表格的某個單元格內繪制一條橫線后,則原表格以該橫線為界,被拆分成兩個表格。(錯)
20 Word可以對文檔進行字數統計。(對)
21 在Word表格中,單元格的底紋不能改變。(對)
22 在Word編輯狀態下,若當前的文本處于豎排狀態,當選定若干文字后用鼠標左鍵單擊“更改文字方向”按鈕,則文檔中的所有文字均變成橫排狀態。(對)
23 如果要顯示文檔的修改痕跡,應該選擇批注模式。(錯)
24 頁面視圖模式是Word文檔的默認查看模式。(對)
25 對一個表格中所有單元格對齊方式修改為“中部居中”的具體操作步驟如下:
1 選中所有單元格。
2進入在“布局”選項卡下
3點擊“對齊方式”組中單擊“中部兩端對齊”按鈕
26 生成目錄后,可以按(C)+鼠標跳轉到目錄所指向的頁碼。
選擇一項:
A. Tab
B. Shift
C. Ctrl
D. Alt
27 當Excel中表格的行數過多時,為了方便查看,希望選擇將表頭(第一行)不動,不隨滾動條滾動,應該如何操作(A )?
選擇一項:
A. 在“視圖”選項卡下選擇“凍結首行”
B. 在“視圖”選項卡下選擇“凍結窗格”
C. 在“頁面布局”選項卡下選擇“凍結首列”
D. 在“視圖”選項卡下選擇“重排”
28 PPT中插入的圖片可以通過( A)的方式一鍵導出。
選擇一項:
A. 將PPT另存為html網頁格式
B. 將PPT另存為WPS文檔格式
C. 將PPT文件另存為jpeg圖片格式
D. 將PPT另存為PDF文檔格式
29 在會議中經常用于播放演示文稿的辦公設備為( D)。
選擇一項:
A. 掃描儀
B. 傳真機
C. 打印機
D. 投影儀
30 為了避免出現演示文稿中鏈接的媒體資源無法播放的問題,可以進行( C)操作。
a. 文件-另存為
b. 文件-打包到CD
c. 文件-首選項
d. 開始-保存
33 打開PowerPoint 軟件后點擊文件,在下拉菜單中選擇(A),可以創建一個無預設格式的演示文稿。
選擇一項:
A. 新建空白文檔
B. 根據模板創建
C. 打開最近使用
D. 打開
34 Word把格式化分為( C)等3類。
選擇一項:
A. 句子、頁面格式和段落格式化
B. 字符、段落和句子格式化
C. 字符、段落和頁面格式化
D. 字符、句子和頁面格式化
35 在銷售業績統計表格中用戶需要對每個業務員的季度銷售額進行排名,可以利用(A)函數。
選擇一項:
A. RANK
B. MAX
C. AVERAG
D. COUNT
36 通過按(B)鍵可以結束幻燈片的放映。
選擇一項:
A. Ctrl
B. Esc
C. Shift
D. Enter
37 下列說法正確的是(ABD)
選擇一項或多項:
A. 在插入圖表時用戶必須首先在工作表中輸入數據
B. 在添加幻燈片時用戶可以選擇新幻燈片的版式
C. 在創建圖表后用戶無法更改圖表的類型
D. 用戶可以利用鼠標拖動調整幻燈片的位置
38 如果想要刪除一個幻燈片,應該要如何做(AB)?
選擇一項或多項:
A. 在左側編輯欄中,選中幻燈片,右鍵選中“刪除幻燈片”
B. 在左側編輯欄中,選中幻燈片,按“Delete鍵”
C. 在左側編輯欄中,選中幻燈片,按“Ctrl C鍵”
D. 在左側編輯欄中,選中幻燈片,按“Insert鍵”
39 關于郵件合并下列說法正確的是(ACD)。
選擇一項或多項:
A. 要實現郵件合并的前提是建立一個數據源
B. 完成郵件合并后,將數據源刪除,仍然能夠正常打開該文檔
C. 完成郵件合并后可以直接打印結果
D. 郵件合并可以實現將合并后文檔分別Email給對應的郵箱
40 Excel 2010中提供了(BCD)引用類型。
選擇一項或多項:
A. 直接引用
B. 相對引用
C. 混合引用
D. 絕對引用
42 輸入文檔時,鍵入的內容出現在(D)。
選擇一項或多項:
a. 換行符處
b. 鼠標的箭頭所在處
c. 文檔的末尾
d. “|”形指針處
43 如果要明確地制定新建表格的行數與列數,最好的方法是通過(A)來新建表格?
選擇一項:
a. 插入表格
b. 快速表格
c. 繪制表格
d. EXCEL表格
44 下面關于共享文件和文件夾說法正確的是(D)。
選擇一項:
A. 在對某個文件進行共享之前必須先選中它
B. “共享”選項卡是在文件的“屬性”對話框中
C. 在設置共享選項時候,我們可以設置被共享文件的使用權限
D. 以上都是
45 當一頁已滿,而文檔仍然繼續被輸入,Word將插入( A )。
選擇一項:
a. 軟分頁符
b. 軟分節符
c. 硬分節符
d. 硬分頁符
46 在單元格中輸入數據后,如果按回車鍵確認,則當前活動單元格()。
選擇一項:
A. 自動右移
B. 不變
C. 自動左移
D. 自動下移
47 在工作表中插入頁眉應該在(A)選項卡中選擇頁眉/頁腳。
選擇一項:
A. 插入
B. 數據
C. 審閱
D. 布局
48 下列設備中,屬于輸出設備的是(B)。
選擇一項:
A. 觸摸屏
B. 顯示器
C. 掃描儀
D. 光筆
49 想在一個屏幕上同時顯示兩個演示文稿并進行編輯,如何實現( A )?
選擇一項:
A. 打開兩個演示文稿,選擇視圖菜單中“全部重排”
B. 打開兩個演示文稿,選擇視圖菜單中“適應窗口大小”
C. 打開一個演示文稿,選擇插入菜單中“幻燈片(從文件)”
D. 無法實現
50 關于圖標的格式化下列說法錯誤的是(A)。
選擇一項:
A. 用戶只能對圖表標題的文本格式進行設置,不能調整標題的位置
B. 用戶可以設置圖表區的邊框樣式和顏色
C. 設置繪圖區的格式會影響數據系列的格式
D. 用戶不但可以設置圖例的位置,還可以設置圖例的文本格式
51 如果要去掉文本框的框架線條,可以(BC)。
選擇一項或多項:
a. 選中文本框,右鍵,在彈出菜單欄中選擇形狀填充選項,再選擇無填充
b. 選中文本框,雙擊后,跳出格式選項卡,在格式選項卡中選擇輪廓形狀選項,再選擇無輪廓選項
c. 選中文本框,右鍵,在彈出菜單欄中選擇輪廓形狀選項,再選擇無輪廓選項
d. 選中文本框,雙擊后,選擇形狀填充選項,再選擇無填充
52 關于應用幻燈片主題下列說法正確的是(BC)。
選擇一項或多項:
A. 應用幻燈片主題會更改幻燈片的文字內容
B. 在一個演示文稿中可以為不同的幻燈片應用不同的主題
C. 用戶可以使用PowerPoint2010內置的主題樣式,也可以自定義主題樣式并應用到幻燈片中
D. 在應用主題后用戶不能再對幻燈片的外觀進行設置,只能更改幻燈片內容
53 當單元格中輸入11位號碼,如43122560098時,最后4位總是自動變成0000,如43122560000,請問如何解決這個問題(CD )?
選擇一項或多項:
A. 重新輸入一次
B. 在43122560098前添加 ’ (中文的上引號)
C. 在43122560098前添加’(英文的上引號)
D. 設置單元格格式,將數字類型改為文本型
54 關于文檔目錄下列說法正確的是(ABC)。
選擇一項或多項:
A. 在提取目錄時可以選擇目錄樣式
B. 形成目錄后,如果頁碼發生變化,需要手動更新目錄才能保證頁碼正確
C. 只有在文檔中應用了一些標題樣式才能提取目錄
D. 目錄一旦形成就無法修改
55 下列說法正確的是(ACD)
選擇一項或多項:
A. 用戶可以利用鼠標拖動調整幻燈片的位置
B. 在創建圖表后用戶無法更改圖表的類型
C. 在插入圖表時用戶必須首先在工作表中輸入數據
D. 在添加幻燈片時用戶可以選擇新幻燈片的版式
56 打印機打印的字跡模糊,顏色過淺,可能是(BD)造成的。
選擇一項或多項:
A. 卡紙
B. 硒鼓老化
C. 墨粉不均勻
D. 墨粉不足
57 關于文件和文件夾的描述正確的是(D)。
選擇一項或多項:
A. 計算機中的文件沒有擴展名
B. 在Windows7系統中,文件的擴展名由1-255個字符組成
C. 從大的方面來說文件分為文檔、圖片、相片、音樂等幾種
D. 文件在同一文件夾中不能與另外一個文件重名
今,Web 用戶期望得到單頁應用(SPA)提供的流暢、動態的體驗。然而,創建 SPA 往往需要使用復雜的框架,如 React 和 Vue,學習和使用起來可能比較困難。這就是htmx的用武之地:一種通過直接在HTML中利用Ajax和CSS過渡效果等功能,為構建動態 Web 體驗帶來新思路的工具。下面就來看看 htmx 是什么,它有什么強大之處!
HTMX 允許在不使用 JavaScript 的情況下添加現代瀏覽器功能??梢灾苯釉?HTML 中使用屬性來訪問 AJAX、CSS 過渡效果、WebSockets 和服務器推送等功能,以便以超文本的簡單性和強大性構建現代用戶界面。
HTMX的設計理念是通過解除HTML在前端開發中的一些限制,使其成為一個更加完整和強大的超文本工具。通常情況下,在傳統的Web開發中,只有<a>和<form>標簽可以發起HTTP請求,只有點擊和提交事件可以觸發這些請求,只有GET和POST方法可用,并且只能替換整個屏幕內容。而HTMX打破了這些限制,允許使用額外的HTML屬性來實現更多的功能,而不需要編寫大量的JavaScript代碼。例如,在HTML中使用特定的屬性即可實現進度條、懶加載、無限滾動、內聯驗證等特性。
與其他前端框架(如Vue.js和React)不同,HTMX的工作方式是:當向服務器發送請求時,服務器返回完整的HTML響應,并更新頁面中的相應部分,而不是以JSON格式返回數據。這使得HTMX可以與任何服務器端技術進行集成,因為應用的邏輯和處理都發生在后端。這種方式簡化了前端開發并減少了對JavaScript的依賴。
可以通過如下方式使用npm安裝HTMX:
npm install htmx.org
HTMX提供了一組屬性,可以直接從 HTM L中進行AJAX請求:
這些屬性都接受一個 URL 作為參數,用于發送AJAX請求。因此,每當觸發元素時,它會向指定的URL發送指定類型的請求。來看下面的例子:
<button hx-get="/api/resource">加載數據</button>
在上面的例子中,按鈕元素被賦予了hx-get屬性。一旦點擊該按鈕,就會向/api/resource URL發送一個GET請求。
那當從服務器返回數據時會發生什么呢?默認情況下,htmx 會將這個響應直接注入到發起請求的元素中,也就是示例中的按鈕元素。然而,htmx 并不局限于這種行為,它提供了將響應數據指定為不同元素的目標的能力,接下來將深入探討這個功能。
htmx根據特定元素上發生的特定事件來觸發Ajax請求:
下面來看一個例子:
<label>關鍵詞:
<input
type="text"
placeholder="輸入關鍵詞"
hx-get="https://v2.jokeapi.dev/joke/Any?format=txt&safe-mode"
hx-target="#joke-container"
name="contains"
/>
</label>
<p id="joke-container">笑話內容</p>
為了觸發搜索,需要激活change事件。對于<input>元素而言,當元素失去焦點且其值已被改變時就會觸發change事件。因此,當在文本框中輸入一些內容,然后點擊頁面上其他地方,一個笑話就會出現在<p>元素中。簡而言之,在輸入關鍵詞后,光標離開輸入框,笑話就會自動顯示出來。
這很不錯,但通常用戶希望在輸入時就看到搜索結果更新,也就是說,當用戶在輸入框中輸入內容時,將自動觸發Ajax請求,并在后臺獲取最新的搜索結果,并將其更新到頁面上相應的位置。因此,用戶不需要手動點擊其他地方以觸發搜索,而是實時地在輸入的同時獲得更新的搜索結果。為了實現這一點,可以給<input>元素添加一個htmx trigger屬性:
<input
...
hx-trigger="keyup"
/>
現在結果會立即更新。但同時引入了一個新的問題:現在會在每次輸入時都進行一次API調用。為了避免這個問題,可以使用修飾符來改變觸發器的行為。htmx 提供了以下修飾符選項:
在這種情況下,delay是我們想要的修飾符:
<input
...
hx-trigger="keyup delay:500ms"
/>
現在,當在輸入框中輸入內容時(嘗試輸入一個較長的詞,比如"developer"),只有在暫?;蛲瓿奢斎霑r才會觸發請求。
<label>關鍵字:
<input
type="text"
placeholder="E輸入關鍵字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">笑話內容</p>
正如你所見,這種做法只需要幾行客戶端代碼就可以實現一個搜索框模式。
在Web開發中,當用戶執行某個操作并且該操作可能需要一段時間才能完成(如進行網絡請求),我們通常需要給用戶提供反饋。其中一種常見的反饋方式是使用請求指示器,以可視化的方式提示用戶該操作正在進行中。
htmx集成了對請求指示器的支持,讓我們能夠向用戶提供這種反饋。它使用hx-indicator類來指定一個元素作為請求指示器。具有此類的任何元素的默認不透明度為 0,使其在DOM中不可見但存在。
當htmx發起一個Ajax請求時,它會在觸發元素上應用htmx-request類。htmx-request類會導致該元素或任何具有htmx-indicator類的子元素的不透明度變為 1。
例如,下面是一個具有加載旋轉圖標作為其請求指示器的元素:
<button hx-get="/api/data">
加載數據
<img class="htmx-indicator" src="/spinner.gif" alt="Loading">
</button>
當具有hx-get屬性的按鈕被點擊并且請求開始時,按鈕會自動添加一個htmx-request類。這個類可以讓請求指示器(例如加載旋轉圖標)在按鈕上顯示,當請求完成后,這個類會被移除,請求指示器也會停止顯示。還可以使用htmx-indicator屬性來指示接收htmx-request類的元素(顯示請求指示器的元素)。
<label>關鍵字:
<input
type="text"
placeholder="輸入關鍵字"
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">笑話內容</p>
在某些情況下,我們可能需要在發送請求的元素之外更新其他元素。htmx 允許我們hx-target屬性來指定Ajax響應應該更新的特定元素??梢酝ㄟ^在hx-target屬性中設置一個CSS選擇器來指定要更新的元素。例如有一個用于發布新評論的表單,希望將新評論添加到評論列表中,而不是更新表單本身。
<button
hx-get="https://v2.jokeapi.dev/joke/Any?format=txt&safe-mode&type=single"
hx-target="#joke-container"
>
Hello htmx!
</button>
當用戶點擊按鈕并發起請求時,獲取到的響應數據將會更新顯示在頁面上具有"joke-container"這個ID的元素內部,而不是替換按鈕本身的內容。這樣可以實現在特定位置更新內容,而不影響其他部分的效果。
htmx提供了一些擴展的CSS選擇器,用于更高級的元素選擇和內容加載:
通過使用這些關鍵字,我們可以更靈活地選擇要更新的元素。例如,在之前的例子中,我們可以使用 hx-target="next p" 來指定更新目標元素,而不是使用具體的 ID。這樣可以簡化代碼,并且使得更新更加動態和通用。
默認情況下,htmx會用Ajax響應替換目標元素的內容。但是,如果希望追加新內容而不是替換它,那就可以使用hx-swap屬性。該屬性允許指定新內容應該如何插入目標元素中??赡艿娜≈蛋?span style="color: #0EA5E9; --tt-darkmode-color: #0EA5E9;">outerHTML、innerHTML、beforebegin、afterbegin、beforeend和afterend。例如,使用hx-swap="beforeend"會將新內容追加到目標元素的末尾,這對于新評論的場景非常合適。
可以使用CSS過渡效果來使元素在不使用JavaScript的情況下平滑地改變樣式。要實現這一點,需要在多個HTTP請求之間保持相同的元素 ID。這樣,當 htmx 接收到新的內容并更新元素時,它將能夠應用CSS過渡效果,使樣式的改變過渡得更加平滑。
<button hx-get="/new-content" hx-target="#content">
請求數據
</button>
<div id="content">
初始內容
</div>
在htmx發起到/new-content的Ajax請求后,服務器返回以下內容:
<div id="content" class="fadeIn">
新內容
</div>
盡管內容發生了變化,但是<div>元素保持了相同的ID。然而,新增的內容中添加了一個fadeIn類。通過為新內容添加fadeIn類,我們可以定義相應的CSS規則,例如opacity和transition屬性,來實現淡入效果。這樣,當htmx接收到新的內容并更新元素時,CSS過渡效果將被觸發,使元素的變化過渡得更加平滑。
下面來創建一個 CSS 過渡效果,使元素從初始狀態平滑過渡到新狀態:
.fadeIn {
animation: fadeIn 2.5s;
}
@keyframes fadeIn {
0% {opacity: 0;}
100% {opacity: 1;}
}
當htmx加載新內容時,它會觸發CSS過渡效果,從而創建一個流暢的視覺過渡到更新后的狀態。
全新的View Transitions API提供了一種在DOM元素的不同狀態之間進行動畫轉換的方式。與涉及元素CSS屬性變化的CSS過渡不同,視圖過渡是用于動畫元素內容的變化。
View Transitions API 是一個正在積極開發中的全新實驗性功能。該API已經在Chrome 111+中實現,并預計將來會有更多的瀏覽器支持它。htmx提供了與View Transitions API一起使用的接口,并在不支持該API的瀏覽器中回退到非過渡機制。
在 htmx 中,View Transitions API 的使用方法如下:
下面是一個“彈跳”過渡效果的示例,其中舊內容彈出,新內容彈入:
@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選項來啟用過渡效果。然后,可以將bounce-it類添加到想要進行動畫處理的內容上。
<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>初始動畫內容</p>
</div>
在這個例子中,當<div>的內容被更新時,舊內容會以彈跳的方式退出視圖,而新內容會以彈跳的方式進入視圖,從而產生一種生動的視覺效果。
htmx 與 HTML5 Validation API 可以良好的集成,在表單提交時,htmx會利用瀏覽器原生的驗證功能進行表單驗證。
例如,當用戶點擊提交按鈕時,只有當輸入字段包含有效的電子郵件地址時,才會向/contact發送POST請求。
<form hx-post="/contact">
<label>Email:
<input type="email" name="email" required>
</label>
<button>提交</button>
</form>
值得注意的是,htmx在驗證過程中會觸發一系列事件,可以利用這些事件來添加自己的驗證邏輯和錯誤處理方法。例如,如果想要在JavaScript代碼中實現郵箱檢查,可以這樣做:
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事件,該事件在調用元素的checkValidity()方法之前被觸發。
現在,當嘗試提交帶有非gmail.com地址的表單時,將會看到一樣的錯誤提示。
除了上述提到的功能外,htmx 還具有很多其他功能,旨在增強HTML的能力,并為處理Web應用中的動態內容更新提供簡單而強大的方式。它的功能不僅限于已經介紹的內容,還包括一些設計用于創建更具交互性和響應性的網站的功能,而無需使用復雜的JavaScript框架。
擴展是htmx工具中功能強大的工具。這些可定制的JavaScript組件使我們能夠根據我們的特定需求進一步增強和定制庫的行為。擴展包括在請求中啟用JSON編碼、操作HTML元素上類的添加和刪除、調試元素、支持客戶端模板處理等。有了這些,我們就可以將htmx自定義為更精細的粒度。
htmx的“Boosting”功能允許我們將標準的HTML錨點(即鏈接)和表單轉換為Ajax請求。在傳統的Web開發中,點擊鏈接或提交表單通常會導致整個頁面刷新。而通過使用htmx的"boosting"功能,這些鏈接和表單將通過Ajax請求來處理,只更新需要更新的部分內容,而不需要刷新整個頁面。這使得網站的加載速度更快,并提供了更流暢的用戶體驗。類似的技術在過去被稱為pjax,現在在htmx中也可以實現類似的效果。
<div hx-boost="true">
<a href="/blog">Blog</a>
</div>
這個 div 中的錨點標簽會發出一個 Ajax GET 請求到 /blog,并將 HTML 響應替換到 <body> 標簽中。
通過利用這個功能,可以為用戶創建更流暢的導航和表單提交體驗,使我們的 Web 應用更像單頁面應用(SPA)。
htmx 內置了對瀏覽器歷史記錄的支持,可以與標準的瀏覽器歷史API對接。這樣,可以將URL添加到瀏覽器導航欄,并將頁面當前狀態存儲在瀏覽器的歷史記錄中,確保"返回"按鈕按照用戶的期望進行操作。這樣一來,我們就可以創建出類似于SPA的網頁,能夠在不重新加載整個頁面的情況下維護狀態和處理導航。
htmx 可以很容易的與其他庫進行集成。它可以無縫地與許多第三方庫進行整合,利用它們的事件來觸發請求。
htmx是一個多功能、輕量級且易于使用的工具。它成功地將HTML的簡潔性與通常與復雜JavaScript庫相關的動態功能相結合,為創建交互式網絡應用程序提供了一個全新的選擇。
然而,它并不是適用于所有情況的解決方案。對于更復雜的應用,我們可能仍然需要使用JavaScript框架。但是,如果目標是創建一個快速、交互性強且用戶友好的Web應用,而又不增加太多復雜性,那么 htmx 絕對是值得考慮的。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。