2013-11-26 8 views
12

मैंने एक साधारण परीक्षण svg-image किया है।एसवीजी - बटन पर भरें रंग बदलें

मैं टॉगल बटन बनाना चाहता हूं ताकि जब मैं बीटीएन-टेस्ट 1 पर क्लिक करूं, तो पथ 1 भर जाएगा = "# 000" और अन्य "# एफएफएफ"। मैं लगभग 40 अलग-अलग पथों के साथ एक नक्शा बनाने जा रहा हूं, लेकिन मैं इसे पहले कोशिश कर रहा हूं (पता नहीं है कि यह संभव है)?

<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 
width="500px" height="500px" viewBox="0 0 500 500" enable-background="new 0 0 500 500" xml:space="preserve"> 

<path id="path1" fill="#FFFFFF" stroke="#231F20" stroke-miterlimit="10" d="M291.451,51.919v202.54c0,0,164.521,119.846,140.146,0 
    C407.227,134.613,291.451,51.919,291.451,51.919z"/> 

<path id="path2" fill="#FFFFFF" stroke="#231F20" stroke-miterlimit="10" d="M169.595,150.844c0,0-76.24,69.615-40.606,128.309 
    c35.634,58.695,155.798-51.867,151.654-85.993C276.498,159.034,177.054,89.42,169.595,150.844z"/> 

<path id="path3" fill="#FFFFFF" stroke="#231F20" stroke-miterlimit="10" d="M40.332,90.466c0,0-39.911,76.119-2.691,87.83 
    c37.22,11.71,78.923-46.844,56.054-78.462C70.826,68.216,40.332,90.466,40.332,90.466z"/> 
</svg> 

</div> 

<button class="btn" id="btn-test1">Test 1</button> 
<button class="btn" id="btn-test2">Test 2</button> 
<button class="btn" id="btn-test3">Test 3</button> 

संपादित करें:

यहाँ एचटीएमएल अब तक की यह जावास्क्रिप्ट हल यह

<script> 
$('.btn').click(function() { 
    $('#path1, #path2, #path3').css({ fill: "#ffffff" }); 
var currentId = $(this).attr('id'); 
$('#path' + currentId +'').css({ fill: "#000" }); 
}); 
</script> 
+0

'document.getElementById ('') .setAttribute ('भरने', '<नई भरने

इस बेला देखें -रंग> '); '?? – techfoobar

उत्तर

18

आप fill संपत्ति की तलाश में हैं। http://jsfiddle.net/P6t2B/

उदाहरण के लिए::

$('#btn-test1').on("click", function() { 
    $('#path1').css({ fill: "#ff0000" }); 
}); 
+0

अच्छा! ठीक काम करना जैसा कि मैंने उल्लेख किया है, मैं लगभग 40 अलग-अलग पथों के साथ एक छवि बनाने जा रहा हूं और भरना चाहता हूं। लेकिन मैंने आपका कोड इस्तेमाल किया और इसे संशोधित किया और अब यह बहुत अच्छा काम करता है (मेरे संपादन से) – Stichy

+0

बढ़िया! मदद करने में खुशी। – Abhitalks

4

इस (बस एक छोटा सा उदाहरण) कार्य करें:

$(function(){ 
    $("#btn-test1").on("click",function(){ 
     $("#path1").attr("fill","#0000"); 

    }); 
}); 

यह पथ 1 वाई भर जाएगा वें # 0000

1
<script type="text/javascript"> 
    $(document).ready(function() 
    { 

     //Redo XML 
     jQuery('img.svg').each(function(){ 
      var $img = jQuery(this); 
      var imgID = $img.attr('id'); 
      var imgClass = $img.attr('class'); 
      var imgURL = $img.attr('src'); 

      jQuery.get(imgURL, function(data) { 
       // Get the SVG tag, ignore the rest 
       var $svg = jQuery(data).find('svg'); 

       // Add replaced image's ID to the new SVG 
       if(typeof imgID !== 'undefined') { 
        $svg = $svg.attr('id', imgID); 
       } 
       // Add replaced image's classes to the new SVG 
       if(typeof imgClass !== 'undefined') { 
        $svg = $svg.attr('class', imgClass+' replaced-svg'); 
       } 

       // Remove any invalid XML tags as per http://validator.w3.org 
       $svg = $svg.removeAttr('xmlns:a'); 

       // Replace image with new SVG 
       $img.replaceWith($svg); 

      }, 'xml'); 

     }); 

    }); 

    function changeColor(color) 
    { 

     //obj Father 
     $("#imgSvg").css("fill", color); 
     //objs children 
     $('#imgSvg').children().css('fill', color); 
    } 
    </script> 




    <img id="imgSvg" xmlns="http://www.w3.org/2000/svg" version="1.1" class="svg" src="imgTest.svg"/> 

    <br /> 
    <br /> 

    <button onclick="changeColor('#C0C0C0')">Gray</button> 
    <button onclick="changeColor('#FFF')">White</button> 
    <button onclick="changeColor('#000')">Black</button> 
संबंधित मुद्दे