As browsers continue to be upgraded and improved, the boundaries between CSS and JavaScript are becoming increasingly blurred. Originally they were responsible for completely different functions, but in the end, they all belong to web front-end technologies, and they need to work closely with each other. We all have .js files and .css files in our web pages, but this does not mean that CSS and js are independent and cannot interact. You may not be aware of these five ways JavaScript and CSS can work together!
Related learning recommendations: javascript video tutorial
Everyone You know 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.
// 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!
Many JavaScript tool libraries have methods such as addClass
, removeClass
and toggleClass
. In order to be compatible with old browsers, the method used by these class libraries is 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 for adding, deleting and reversing CSS class attributes, called classList:
myp.classList.add('myCssClass'); // Adds a class myp.classList.remove('myCssClass'); // Removes a class myp.classList.toggle('myCssClass'); // Toggles a class
Most browsers have implemented the classList
API for a long time. And it was finally implemented in IE10.
We are all very familiar with using element.style.propertyName
to modify the style. 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.
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.
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.
curl( [ "namespace/MyWidget", "css!namespace/resources/MyWidget.css" ], function(MyWidget) { // 你可以对MyWidget进行操作 // 这里没有对这个CSS文件引用,因为不需要; // 我们只需要它已经加载到页面上了 } });
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 Eventspointer-events
The property is very interesting. It works very much like JavaScript. When you set this property to none
, it can effectively prevent and disable this element. You may say "So what?", but in fact, it disables any JavaScript events or callback functions on this element!
.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.
These are 5 ways to interact with CSS and JavaScript that you may not have discovered yet. Do you have any new discoveries? Share it!
The above is the detailed content of Learn 5 ways to interact with JavaScript and CSS. For more information, please follow other related articles on the PHP Chinese website!