jQuery로 작업할 때 때때로 계산된 스타일에 액세스하고 조작해야 하는 경우가 있습니다. 요소의. width()와 같은 기존 jQuery 메서드를 사용하면 특정 속성을 쉽게 조작할 수 있지만 계산된 모든 스타일을 복사하고 적용하려면 보다 포괄적인 접근 방식이 필요합니다.
핵심 과제는 다음과 같습니다. 다음을 수행할 수 있는 jQuery 플러그인 또는 접근 방식을 찾는 방법:
필요함에도 불구하고 쉽게 사용할 수 있습니다. 이 작업을 위한 jQuery 플러그인은 아직 개발되지 않았습니다. 그러나 이 문제를 효과적으로 해결하는 사용자 정의 솔루션이 있습니다.
이러한 솔루션 중 하나는 표준 CSS() 메서드의 동작을 재정의하여 확장하는 것입니다. 인수가 제공되지 않으면 계산된 모든 스타일이 포함된 객체를 반환합니다.
확장 CSS 메서드:
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; }
또 다른 주목할만한 솔루션은 getStyleObject라는 jQuery 플러그인입니다. 표준 CSS() 메소드를 통해 액세스할 수 없는 스타일을 포함하여 가능한 모든 스타일을 검색합니다:
getStyleObject 플러그인:
(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);
둘 다 이러한 솔루션을 사용하면 계산된 스타일을 얻고 요소에 적용할 수 있어 요소 모양과 의사 복제에 대한 더 큰 유연성과 제어 기능을 제공합니다. 솔루션 선택은 프로젝트의 호환성 요구 사항과 특정 요구 사항에 따라 달라집니다.
위 내용은 의사 복제 및 계산된 스타일을 사용하여 jQuery에서 요소 스타일을 어떻게 복제할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!