>  기사  >  웹 프론트엔드  >  의사 복제 및 계산된 스타일을 사용하여 jQuery에서 요소 스타일을 어떻게 복제할 수 있습니까?

의사 복제 및 계산된 스타일을 사용하여 jQuery에서 요소 스타일을 어떻게 복제할 수 있습니까?

DDD
DDD원래의
2024-10-22 11:52:02762검색

How Can jQuery Clone Element Styles using Pseudo Cloning and Computed Styles?

의사 복제 요소 스타일용 jQuery CSS 플러그인

소개

jQuery로 작업할 때 때때로 계산된 스타일에 액세스하고 조작해야 하는 경우가 있습니다. 요소의. width()와 같은 기존 jQuery 메서드를 사용하면 특정 속성을 쉽게 조작할 수 있지만 계산된 모든 스타일을 복사하고 적용하려면 보다 포괄적인 접근 방식이 필요합니다.

문제 설명

핵심 과제는 다음과 같습니다. 다음을 수행할 수 있는 jQuery 플러그인 또는 접근 방식을 찾는 방법:

  • 첫 번째로 일치하는 요소의 계산된 스타일이 포함된 객체를 반환
  • CSS( ) 방법
  • 다른 태그가 사용되지만 동일한 모양을 유지하는 요소의 의사 복제를 촉진합니다

해결책

필요함에도 불구하고 쉽게 사용할 수 있습니다. 이 작업을 위한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.