Align Objects
by Steve Eberhardt
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.3.4/fabric.min.js"></script>
<input type="button" id="objAlignLeft" value="Align Selected" />
<canvas id="c" width="400" height="400" class="c"></canvas>
CSS
canvas {
border: 1px solid grey;
}
JavaScript
var canvas = new fabric.Canvas('c', {
preserveObjectStacking: true,
backgroundColor: "#fff"
});
var circle = new fabric.Circle({
radius: 100,
fill: '#ccc',
top: 120,
left: 120,
originX: 'center',
originY: 'center'
});
var text = new fabric.Text('hello world', {
fontSize: 30,
top: 120,
left: 120,
originX: 'center',
originY: 'center'
});
canvas.add(circle);
canvas.add(text);
canvas.on({
'selection:updated': function() {
manageSelection();
},
'selection:created': function() {
manageSelection();
}
});
function manageSelection() {
var activeObj = canvas.getActiveObject();
console.log('activeObj.type', activeObj.type);
if (activeObj.type === "activeSelection") {
console.log("Group created");
var groupWidth = activeObj.getScaledWidth();
var groupHeight = activeObj.getScaledHeight();
activeObj.forEachObject(function(obj) {
var itemWidth = obj.getBoundingRect().width;
var itemHeight = obj.getBoundingRect().height;
console.log(itemWidth);
$('#objAlignLeft').click(function() {
obj.set({
left: -(groupWidth / 2),
originX: 'left'
});
obj.setCoords();
canvas.renderAll();
});
});
}
}