Maison >interface Web >js tutoriel >Comment jQuery peut-il cloner des styles d'éléments à l'aide du pseudo-clonage et des styles calculés ?
Lorsque vous travaillez avec jQuery, il devient parfois nécessaire d'accéder et de manipuler les styles calculés d'un élément. Bien que les méthodes jQuery existantes telles que width() permettent une manipulation facile de propriétés spécifiques, une approche plus complète est nécessaire pour copier et appliquer tous les styles calculés.
Le défi central tourne autour de la recherche d'un plugin ou d'une approche jQuery qui peut :
Malgré un besoin apparent, une solution facilement disponible Le plugin jQuery pour cette tâche n'a pas encore été développé. Cependant, il existe des solutions personnalisées qui résolvent efficacement ce problème.
L'une de ces solutions consiste à étendre la méthode css() standard en remplaçant son comportement. Si aucun argument n'est fourni, il renvoie un objet avec tous les styles calculés.
Méthode CSS étendue :
jQuery.fn.css2 = jQuery.fn.css; jQuery.fn.css = function() { if (arguments.length) return jQuery.fn.css2.apply(this, arguments); var attr = ['font-family','font-size','font-weight','font-style','color', 'text-transform','text-decoration','letter-spacing','word-spacing', 'line-height','text-align','vertical-align','direction','background-color', 'background-image','background-repeat','background-position', 'background-attachment','opacity','width','height','top','right','bottom', 'left','margin-top','margin-right','margin-bottom','margin-left', 'padding-top','padding-right','padding-bottom','padding-left', 'border-top-width','border-right-width','border-bottom-width', 'border-left-width','border-top-color','border-right-color', 'border-bottom-color','border-left-color','border-top-style', 'border-right-style','border-bottom-style','border-left-style','position', 'display','visibility','z-index','overflow-x','overflow-y','white-space', 'clip','float','clear','cursor','list-style-image','list-style-position', 'list-style-type','marker-offset']; var len = attr.length, obj = {}; for (var i = 0; i < len; i++) obj[attr[i]] = jQuery.fn.css2.call(this, attr[i]); return obj; }
Une autre solution notable est un plugin jQuery appelé getStyleObject. Il récupère tous les styles possibles, y compris ceux qui ne sont pas accessibles via la méthode css() standard :
getStyleObject Plugin :
(function($){ $.fn.getStyleObject = function(){ var dom = this.get(0); var style; var returns = {}; if(window.getComputedStyle){ var camelize = function(a,b){ return b.toUpperCase(); } style = window.getComputedStyle(dom, null); for(var i=0;i<style.length;i++){ var prop = style[i]; var camel = prop.replace(/\-([a-z])/g, camelize); var val = style.getPropertyValue(prop); returns[camel] = val; } return returns; } if(dom.currentStyle){ style = dom.currentStyle; for(var prop in style){ returns[prop] = style[prop]; } return returns; } return this.css(); } })(jQuery);
Les deux Certaines de ces solutions vous permettent d'obtenir et d'appliquer des styles calculés aux éléments, offrant ainsi une plus grande flexibilité et un plus grand contrôle sur l'apparence des éléments et le pseudo-clonage. Le choix de la solution dépend des exigences de compatibilité et des besoins spécifiques de votre projet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!