2017-10-23 2 views
0

오버레이를 만들어 색조 효과를 만들 수있는 작은 jQuery 플러그인을 만들려고합니다. 이 오버레이를 만들려면 일반 js & jQuery를 사용하는 것만으로도 충분히 간단하지만 jQuery 플러그인으로 모두 마무리하려고하면 append (및 appendTo)가 함수가 아닌 오류 메시지가 나타납니다. 플러그인은 내가 append 대신 extend를 사용하면 작동하지만, div 나 object에 대해 실제 오버레이를 만들고 싶을 때 단순히 기존의 CSS 코드를 변경하는 것입니다.추가 기능을 사용하여 jQuery 플러그인에서 오버레이 만들기

(function ($) { 

    $.fn.tint = function(options) 
    { 
     var overlay = $.append(
     { 
      backgroundColor: "black", 
      opacity: 0.5, 
      width: "100%", 
      height: "100%", 
      position: "absolute", 
      top: 0, 
      left: 0, 
      right: 0, 
      bottom: 0, 
      //"z-index": 1000, 
     }, options 
    ); 
     return this.css(
     { 
      backgroundColor: overlay.backgroundColor, 
      opacity: overlay.opacity, 
      width: overlay.width, 
      height: overlay.height, 
      position: overlay.position, 
      top: overlay.top, 
      left: overlay.left, 
      right: overlay.right, 
      bottom: overlay.bottom, 
      //z-index: overlay.z-index, 
     } 
    ); 
    } 
} (jQuery)); 
+0

어떻게 당신이 사용하고자합니까? – charlietfl

+0

나는 이와 비슷한 간단한 색조 효과를 만들기 위해 페이지의 어떤 요소보다 불투명 한 검정색 오버레이를 만드는 작은 플러그인을 만들고 싶습니다. http://jsfiddle.net/youngstoic/57cu83hx/ –

답변

0

난 당신이 $.extend (하지 $.append)을 수행하려고하는 것 같아요 :

(function ($) { 
 
     $.fn.tint = function(options) 
 
     { 
 
    
 
      if($(this).find(".overlay").length > 0) return $(this); 
 

 
      var overlay = $.extend({ 
 
       backgroundColor: "black", 
 
       opacity: 0.5, 
 
       width: "100%", 
 
       height: "100%", 
 
       position: "absolute", 
 
       top: 0, 
 
       left: 0, 
 
       right: 0, 
 
       bottom: 0, 
 
       //"z-index": 1000, 
 
      }, options); 
 
    
 
      $("<div class='overlay'>").css(
 
      { 
 
       backgroundColor: overlay.backgroundColor, 
 
       opacity: overlay.opacity, 
 
       width: overlay.width, 
 
       height: overlay.height, 
 
       position: overlay.position, 
 
       top: overlay.top, 
 
       left: overlay.left, 
 
       right: overlay.right, 
 
       bottom: overlay.bottom, 
 
       //z-index: overlay.z-index, 
 
      } 
 
     ).appendTo(this); 
 
      return $(this); 
 
     } 
 
    } (jQuery)); 
 
    
 
    $(".overlay-target").on("click", function(){ 
 
     $(this).tint({backgroundColor: "green"}); 
 
    });
.overlay-target { 
 
    border: 1px solid red; 
 
    margin: 20px; 
 
    padding: 50px; 
 
    position: relative; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class='overlay-target'>I want an overlay</div>

+0

잘 찾았습니다. JSFiddle에서이 작업을 수행하는 예제이며, 독립 실행 형 함수로 작성하면 append가 올바르게 작동합니다. 내 문제는 플러그인에서 그것을 사용하고 있습니다. http://jsfiddle.net/youngstoic/57cu83hx/ http://jsfiddle.net/youngstoic/ec128wmt/ –

+0

옵션을 기본값으로 "확장"한 다음 병합 된 값을 사용하여 CSS 속성으로 적용하고 싶습니다. 요소에. 이 대답은 당신의 의도가 이것이라면 잘 작동 할 것입니다. 다른 일을 좇는다면 알려주세요. –

+0

이것을 플러그인으로 사용하면 CSS 속성을 오버레이하지 않고 함께 병합합니다. 그래서이 메소드를 사용하면 선택된 객체의 jquery 내부에있는 모든 것이 불투명하게되고 그 위에 불투명 한 레이어가 추가됩니다. –

관련 문제