2016-05-13 41 views
3

我正在使用物化設計和麪料js庫。我想在畫布中更改文字的字體樣式。在實現設計之前,我使用了bootstrap,然後它工作正常。但現在我正在使用bootstrap的物化設計位置,然後我的下拉式不起作用。下拉式不適用於面料js的物化設計

無實質性設計(下拉工作正常)。

var canvas = new fabric.Canvas('canvas'); 
 
$('#font').change(function(){ 
 
    var obj = canvas.getActiveObject(); 
 
    if(obj){ 
 
    obj.setFontFamily($(this).val()); 
 
    } 
 
    canvas.renderAll(); 
 
}); 
 

 
function addText() { 
 
    var oText = new fabric.IText('Tap and Type', { 
 
    left: 100, 
 
    top: 100 , 
 
    }); 
 

 
    canvas.add(oText); 
 
    canvas.setActiveObject(oText); 
 
    $('#fill, #font').trigger('change'); 
 
    oText.bringToFront(); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.min.js"></script> 
 
<button class="btn" onclick="addText()">Add Custom Text</button> 
 
<select id="font"> 
 
    <option>arial</option> 
 
    <option>tahoma</option> 
 
    <option>times new roman</option> 
 
</select> 
 
<br /> 
 
<canvas id="canvas" width="750" height="550" style="border:1px solid #333"></canvas>

與物化設計(下拉不工作)。

var canvas = new fabric.Canvas('canvas'); 
 
$('#font').change(function(){ 
 
    var obj = canvas.getActiveObject(); 
 
    if(obj){ 
 
    obj.setFontFamily($(this).val()); 
 
    } 
 
    canvas.renderAll(); 
 
}); 
 

 
function addText() { 
 
    var oText = new fabric.IText('Tap and Type', { 
 
    left: 100, 
 
    top: 100 , 
 
    }); 
 

 
    canvas.add(oText); 
 
    canvas.setActiveObject(oText); 
 
    $('#fill, #font').trigger('change'); 
 
    oText.bringToFront(); 
 
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.6/css/materialize.min.css"> 
 
<!-- Compiled and minified JavaScript --> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.6/js/materialize.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.min.js"></script> 
 

 
<div class="container"> 
 
<div class="row"> 
 
<div class="col s12"> 
 

 
<button class="btn" onclick="addText()">Add Custom Text</button> 
 
<select id="font"> 
 
    <option>arial</option> 
 
    <option>tahoma</option> 
 
    <option>times new roman</option> 
 
</select> 
 
<br /> 
 
<canvas id="canvas" width="750" height="550" style="border:1px solid #333"></canvas> 
 

 
</div> 
 
</div> 
 
</div>

我想使用布JS兌現的設計。我想在畫布中更改文字的字體樣式。

回答

1

你必須通過物化來初始化你的選擇框。

$(document).ready(function() { 
    $('#font').material_select(); 
    }); 

$(document).ready(function() { 
 
    $('#font').material_select(); 
 
    }); 
 

 
var canvas = new fabric.Canvas('canvas'); 
 
$('#font').change(function(){ 
 
    var obj = canvas.getActiveObject(); 
 
    if(obj){ 
 
    obj.setFontFamily($(this).val()); 
 
    } 
 
    canvas.renderAll(); 
 
}); 
 

 
function addText() { 
 
    var oText = new fabric.IText('Tap and Type', { 
 
    left: 100, 
 
    top: 100 , 
 
    }); 
 

 
    canvas.add(oText); 
 
    canvas.setActiveObject(oText); 
 
    $('#fill, #font').trigger('change'); 
 
    oText.bringToFront(); 
 
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.6/css/materialize.min.css"> 
 
<!-- Compiled and minified JavaScript --> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.6/js/materialize.min.js"></script> 
 
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.min.js"></script> 
 

 
<div class="container"> 
 
<div class="row"> 
 
<div class="col s12"> 
 

 
<button class="btn" onclick="addText()">Add Custom Text</button> 
 
<select id="font"> 
 
    <option>arial</option> 
 
    <option>tahoma</option> 
 
    <option>times new roman</option> 
 
</select> 
 
<br /> 
 
<canvas id="canvas" width="750" height="550" style="border:1px solid #333"></canvas> 
 

 
</div> 
 
</div> 
 
</div>