The necessity of jQuery: Is jQuery really necessary? In some cases, especially if you need to use jQuery 1.x to support IE6/7/8, jQuery is still required. However, the API of modern browsers now provides many features that we are accustomed to in jQuery. This article will explore native JavaScript equivalents for the jQuery method related to CSS.
Key Points
classList
property, which is an array-like collection containing all classes applied to nodes. This can take precedence over the use of className
attributes in native JavaScript, making class operations more efficient. Classic Operation
Applying classes to specific elements is one of the most common jQuery tasks:
$("#myelement").addClass("myclass");
In native JavaScript, we can implement the same function:
document.getElementById("myelement").className = "myclass";
But that's not all:
In native JavaScript, the className
attribute is just a string. Therefore, we need a function to copy how jQuery works, for example:
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");
While this code is smaller and faster than jQuery, we are copying features that are already available in the library - doing so doesn't make much sense. Fortunately, modern browsers now provide a new classList
property that implements a DOMTokenList
- a collection of similar arrays of all classes applied to nodes. The following attributes are available:
length
——The number of class names applieditem(*index*)
——Class name at a specific indexcontains(*class*)
—Return trueadd(*class*)
——Apply new classes to nodesremove(*class*)
——Remove class from node toggle(*class*)
—If the class is applied or not applied, the class will be deleted or added separately We can use this attribute first instead of the bulky className
attribute:
document.getElementById("myelement").classList.add("myclass");
classList
is supported by most browsers, except for IE9. Fortunately, there are some shims that can load on demand in this browser.
Style operation
jQuery provides many ways to apply specific styles, such as:
$("#myelement").addClass("myclass");
Native equivalent:
document.getElementById("myelement").className = "myclass";
For more than 10,000 iterations using the cache selector, the jQuery code executes in 6,670 milliseconds. Native JavaScript takes 330 milliseconds – 20 times faster. Of course, both should not be used unless the value needs to be calculated in some way. Defining a style class in CSS and then applying its name to elements is more efficient.
Animation
jQuery provides a variety of ready-made animations, including swipes and fades. Native JavaScript may be faster, but that doesn't matter: CSS3 animations outweigh both. I was initially skeptical about CSS3 animation. It can never provide fine-grained control (such as stopping animation after N frames) and can infringe on JavaScript's responsibility for behavior. However, the benefits outweigh the disadvantages:
IE9 and below won't show effects, but they can be downgraded gracefully, and IE10 should be the dominant version within a few months. The magic of CSS3 will not disappear. If you are still doing DOM animations using jQuery or JavaScript in a modern browser, you may be wasting your time. That is, when the animation starts, stops, or continues to the next iteration, JavaScript can be used to respond to CSS3 animations, using animationstart
, animationend
and animationiteration
respectively. For more information, see How to Capture CSS3 Animated Events in JavaScript. In my next post, we will complete this series of articles, discussing events, Ajax, and utility functions.
(The FAQs part is omitted here because the content of this part has little to do with the main theme of the article and has been fully pseudo-originalized in the previous output.)
The above is the detailed content of Native JavaScript Equivalents of jQuery Methods: CSS and Animation. For more information, please follow other related articles on the PHP Chinese website!