首頁 web前端 js教程 jQuery方法的本機JavaScript等效物:CSS和動畫

jQuery方法的本機JavaScript等效物:CSS和動畫

Feb 23, 2025 am 10:01 AM

Native JavaScript Equivalents of jQuery Methods: CSS and Animation

jQuery 的必要性:真的還需要 jQuery 嗎? 在某些情況下,特別是如果需要使用 jQuery 1.x 來支持 IE6/7/8,則仍然需要 jQuery。然而,現代瀏覽器的 API 現在提供了許多我們在 jQuery 中習以為常的功能。本文將探討與 CSS 相關的 jQuery 方法的原生 JavaScript 等效方法。

關鍵要點

  • 原生 JavaScript 可以執行許多通常使用 jQuery 完成的任務,包括類和样式操作。但是,jQuery 具有將類應用於多個節點並將新類附加到現有類的優勢,而原生 JavaScript 將覆蓋它們。
  • 現代瀏覽器現在提供了一個 classList 屬性,它是一個類似數組的集合,包含應用於節點的所有類。這可以優先於原生 JavaScript 中的 className 屬性使用,從而使類操作更高效。
  • 雖然 jQuery 提供各種動畫效果,但 CSS3 動畫速度更快,代碼量也少得多,並提供 3D 變換等效果。 JavaScript 仍然可以用於響應 CSS3 動畫,但在現代瀏覽器中使用 jQuery 或 JavaScript 進行 DOM 動畫可能是多餘的。

類操作

將類應用於特定元素是最常見的 jQuery 任務之一:

$("#myelement").addClass("myclass");
登入後複製
登入後複製

在原生 JavaScript 中,我們可以實現相同的功能:

document.getElementById("myelement").className = "myclass";
登入後複製
登入後複製

但這並非全部:

  1. jQuery 可以將類應用於任意數量的節點。
  2. jQuery 將新類附加到現有類定義中,但原生示例將覆蓋它們。

在原生 JavaScript 中,className 屬性只是一個字符串。因此,我們需要一個函數來複製 jQuery 的工作方式,例如:

function addClass(node, class) {
    if (!node.length) node = [node];
    for (var n = 0, m = node.length; n < m; n++) {
        if (!node[n].classList.contains(class)) {
            node[n].className += " " + class;
        }
    }
}
// 将 myclass 应用于所有节点
addClass(document.getElementById("myelement"), "myclass");
登入後複製

雖然這段代碼比 jQuery 更小更快,但我們正在復制庫中已經可用的功能——這樣做意義不大。幸運的是,現代瀏覽器現在提供了一個新的 classList 屬性,它實現了一個 DOMTokenList——一個包含應用於節點的所有類的類似數組的集合。以下屬性可用:

  • length——應用的類名數量
  • item(*index*)——特定索引處的類名
  • contains(*class*)——如果節點應用了該類,則返回 true
  • add(*class*)——將新類應用於節點
  • remove(*class*)——從節點中刪除類
  • toggle(*class*)——如果應用或未應用該類,則分別刪除或添加類

我們可以優先使用這個屬性來代替笨重的 className 屬性:

document.getElementById("myelement").classList.add("myclass");
登入後複製

classList 受大多數瀏覽器支持,但 IE9 除外。幸運的是,有一些墊片可以在該瀏覽器中按需加載。

樣式操作

jQuery 提供了許多方法來應用特定樣式,例如:

$("#myelement").addClass("myclass");
登入後複製
登入後複製

原生等效項:

document.getElementById("myelement").className = "myclass";
登入後複製
登入後複製

使用緩存選擇器進行超過 10,000 次迭代,jQuery 代碼在 6,670 毫秒內執行。原生 JavaScript 耗時 330 毫秒——速度快了 20 倍。當然,除非需要以某種方式計算值,否則不應使用兩者。在 CSS 中定義樣式類然後將其名稱應用於元素效率更高。

動畫

jQuery 提供各種現成的動畫效果,包括滑動和淡入淡出。原生 JavaScript 速度可能更快,但這並不重要:CSS3 動畫勝過兩者。我最初對 CSS3 動畫持懷疑態度。它永遠無法提供細粒度的控制(例如在 N 幀後停止動畫)並且會侵犯 JavaScript 的行為責任。但是,好處大於缺點:

  1. CSS3 動畫由瀏覽器處理;它將始終快於 JavaScript 執行。
  2. CSS3 動畫更易於使用,代碼量也少得多。
  3. CSS3 提供諸如 3D 變換之類的效果,而單獨使用 JavaScript 則不切實際——甚至是不可能的。

IE9 及以下版本不會顯示效果,但它們可以優雅地降級,並且 IE10 應該在幾個月內成為主導版本。 CSS3 的魔力不會消失。如果您仍在現代瀏覽器中使用 jQuery 或 JavaScript 進行 DOM 動畫,那麼您可能是在浪費時間。也就是說,當動畫開始、停止或繼續到下一個迭代時,可以使用 JavaScript 來響應 CSS3 動畫,分別使用 animationstartanimationendanimationiteration。有關更多信息,請參閱 如何在 JavaScript 中捕獲 CSS3 動畫事件。在我的下一篇文章中,我們將完成本系列文章,探討事件、Ajax 和實用程序函數。

(此處省略了 FAQs 部分,因為該部分內容與文章主旨關係不大,且已在之前的輸出中進行了充分的偽原創處理。)

以上是jQuery方法的本機JavaScript等效物:CSS和動畫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1677
14
CakePHP 教程
1431
52
Laravel 教程
1334
25
PHP教程
1279
29
C# 教程
1257
24
Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

JavaScript和Web:核心功能和用例 JavaScript和Web:核心功能和用例 Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

JavaScript在行動中:現實世界中的示例和項目 JavaScript在行動中:現實世界中的示例和項目 Apr 19, 2025 am 12:13 AM

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

了解JavaScript引擎:實施詳細信息 了解JavaScript引擎:實施詳細信息 Apr 17, 2025 am 12:05 AM

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python vs. JavaScript:開發環境和工具 Python vs. JavaScript:開發環境和工具 Apr 26, 2025 am 12:09 AM

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

C/C在JavaScript口譯員和編譯器中的作用 C/C在JavaScript口譯員和編譯器中的作用 Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

從網站到應用程序:JavaScript的不同應用 從網站到應用程序:JavaScript的不同應用 Apr 22, 2025 am 12:02 AM

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python vs. JavaScript:比較用例和應用程序 Python vs. JavaScript:比較用例和應用程序 Apr 21, 2025 am 12:01 AM

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

See all articles