in src/carousel.js [204:282]
function position(item) {
var item_transition = item.transition()
.ease(d3.easeLinear)
.duration(250);
item_transition.attr('transform',function(d,i){
var dist_from_focus = Math.abs(i - carousel_focus);
var dir_from_focus = Math.sign(i - carousel_focus);
var x_translate = (svg_width * 0.5 + 0.5 * ((focus_height * 2) - 4)) - ((focus_height * 2) - 4) * (1 - (dist_from_focus * 0.05)) - 2;
var y_translate = 0;
if (dist_from_focus == 0) {
y_translate = center_y - (focus_height * 0.5) - 2;
}
else {
var offset = 0;
var j = (dir_from_focus == -1) ? 1 : 2;
var buffer = (dir_from_focus == -1) ? 6 : 10;
for (j; j <= dist_from_focus; j++){
offset = offset + buffer + d3.max([0,(focus_height - 4) * (1 - (j * 0.1))]);
}
if (dir_from_focus == -1) {
y_translate = center_y - ((focus_height - 4) * 0.5) - 4 - offset;
}
else {
y_translate = center_y + ((focus_height - 4) * 0.5) + 2 + offset;
}
}
return 'translate('+ x_translate + ',' + y_translate + ')';
});
item_transition.select('.carousel_rect')
.attr('x',0)
.attr('y',0)
.attr('height', function(d,i){
var dist_from_focus = Math.abs(i - carousel_focus);
if (dist_from_focus == 0) {
return (focus_height - 4);
}
else {
return d3.max([0,(focus_height - 4) * (1 - (dist_from_focus * 0.1))]);
}
})
.attr('width', function(d,i){
var dist_from_focus = Math.abs(i - carousel_focus);
return d3.max([0,((focus_height * 2) - 4) * (1 - (dist_from_focus * 0.1))]);
})
.style('opacity',function(d,i){
var dist_from_focus = Math.abs(i - carousel_focus);
return 1 * (1 - (dist_from_focus * 0.25));
})
.attr('stroke', '#fff');
item_transition.select('.carousel_text')
.attr('y', function(d,i){
var dist_from_focus = Math.abs(i - carousel_focus);
if (dist_from_focus == 0) {
return focus_height / 2;
}
else {
return d3.max([0,(focus_height - 4) * (1 - (dist_from_focus * 0.1))]) / 2;
}
})
.attr('x', function(d,i){
var dist_from_focus = Math.abs(i - carousel_focus);
return d3.max([0,((focus_height * 2) - 4) * (1 - (dist_from_focus * 0.1))]) / 2;
})
.style('font-size',function(d,i){
var dist_from_focus = Math.abs(i - carousel_focus);
return 0.7 * (1 - (dist_from_focus * 0.1)) + 'em';
})
.style('opacity',function(d,i){
var dist_from_focus = Math.abs(i - carousel_focus);
return 0.75 * (1 - (dist_from_focus * 0.25));
});
}