Home >Web Front-end >JS Tutorial >Summary of methods for interacting with JavaScript and CSS_javascript skills

Summary of methods for interacting with JavaScript and CSS_javascript skills

WBOY
WBOYOriginal
2016-05-16 16:29:301377browse

Use JavaScript to get pseudo-element attributes

Everyone knows how to get the CSS style value of an element through its style attribute, but can you get the attribute value of a pseudo-element? Yes, you can also access pseudo-elements in the page using JavaScript.

Copy code The code is as follows:

// Get the color value of .element:before
var color = window.getComputedStyle(
document.querySelector('.element'), ':before'
).getPropertyValue('color');
// Get the content value of .element:before
var content = window.getComputedStyle(
document.querySelector('.element'), ':before'
).getPropertyValue('content');

See, I can access the content attribute value in the pseudo element. This is a very useful technique if you want to create a dynamic, stylish website!

classList API

Many JavaScript tool libraries have methods such as addClass, removeClass and toggleClass. In order to be compatible with old browsers, the methods used by these class libraries are to first search the className of the element, append and delete the class, and then update the className. In fact, there is a new API that provides methods to add, delete and reverse CSS class attributes, called classList:

Copy code The code is as follows:

myDiv.classList.add('myCssClass'); // Adds a class
myDiv.classList.remove('myCssClass'); // Removes a class
myDiv.classList.toggle('myCssClass'); // Toggles a class

ClassListAPI has been implemented in most browsers for a long time, and it was finally implemented in IE10.

Add and delete style rules directly to the style sheet

We are all very familiar with using element.style.propertyName to modify styles. Using JavaScript can help us do this, but do you know how to add or modify an existing CSS style rule? It's actually very simple.

Copy code The code is as follows:

function addCSSRule(sheet, selector, rules, index) {
if(sheet.insertRule) {
sheet.insertRule(selector "{" rules "}", index);
}
else {
sheet.addRule(selector, rules, index);
}
}
// Use it!
addCSSRule(document.styleSheets[0], "header", "float: left");

This method is usually used to create a new style rule, but if you want to modify an existing rule, you can also do so.

Load CSS file

Lazy loading of images, JSON, scripts, etc. is a good way to speed up page display. We can use JavaScript loaders such as curl.js to lazily load these external resources, but did you know that CSS style sheets can also be lazily loaded, and the callback function will notify you after the loading is successful.

Copy code The code is as follows:

curl(
[
"namespace/MyWidget",
"css!namespace/resources/MyWidget.css"
],
function(MyWidget) {
// You can operate MyWidget
// There is no reference to this CSS file here because it is not needed;
// We just need it to be loaded on the page
}
});

The PrismJS syntax highlighting script used on this website is lazy loaded. When all resources are loaded, the callback function will fire and I can load it in the callback function. Very useful!

CSS Mouse Pointer Events

The CSS pointer-events property is very interesting. It works very much like JavaScript. When you set this property to none, it can effectively prevent the element from being disabled. You may say, "So what?" ”, but in fact, it disables any JavaScript events or callback functions on this element!

Copy code The code is as follows:

.disabled { pointer-events: none; }

Click on this element and you will find that any listeners you place on this element will not trigger any events. A fantastic feature, really - you no longer need to check whether a certain CSS class exists in order to prevent an event from being triggered.

The above are the 5 ways to interact with JavaScript and CSS that I have summarized. If you have better ones, please let us know. This article will continue to be updated

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn