I achieved it by:
on variables.less, added:
----------------------------
@grid-xs-columns: 4;
@grid-sm-columns: 12;
@grid-md-columns: 16;
on grid.less file, modified:
-------------------------------
.make-grid(xs,@grid-xs-columns);
// Small grid
//
// Columns, offsets, pushes, and pulls for the small device range, from phones
// to tablets.
@media (min-width: @screen-sm-min) {
.make-grid(sm,@grid-sm-columns);
}
// Medium grid
//
// Columns, offsets, pushes, and pulls for the desktop device range.
@media (min-width: @screen-md-min) {
.make-grid(md,@grid-md-columns);
}
on grid-framework.less; modified
--------------------------------
.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {
.col-@{class}-@{index} when (@class = xs){
width: percentage((@index / @grid-xs-columns));
}
.col-@{class}-@{index} when (@class = sm){
width: percentage((@index / @grid-sm-columns));
}
.col-@{class}-@{index} when (@class = md){
width: percentage((@index / @grid-md-columns));
}
}
.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {
.col-@{class}-push-@{index} when (@class = xs){
left: percentage((@index / @grid-xs-columns));
}
.col-@{class}-push-@{index} when (@class = sm){
left: percentage((@index / @grid-sm-columns));
}
.col-@{class}-push-@{index} when (@class = md){
left: percentage((@index / @grid-md-columns));
}
}
.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {
.col-@{class}-push-0 {
left: auto;
}
}
.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {
.col-@{class}-pull-@{index} when (@class = xs){
right: percentage((@index / @grid-xs-columns));
}
.col-@{class}-pull-@{index} when (@class = sm){
right: percentage((@index / @grid-sm-columns));
}
.col-@{class}-pull-@{index} when (@class = md){
right: percentage((@index / @grid-md-columns));
}
}
.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {
.col-@{class}-pull-0 {
right: auto;
}
}
.calc-grid-column(@index, @class, @type) when (@type = offset) {
.col-@{class}-offset-@{index} when (@class = xs){
margin-left: percentage((@index / @grid-xs-columns));
}
.col-@{class}-offset-@{index} when (@class = sm){
margin-left: percentage((@index / @grid-sm-columns));
}
.col-@{class}-offset-@{index} when (@class = md){
margin-left: percentage((@index / @grid-md-columns));
}
}
// Basic looping in LESS
.loop-grid-columns(@index, @class, @type) when (@index >= 0) {
.calc-grid-column(@index, @class, @type);
// next iteration
.loop-grid-columns((@index - 1), @class, @type);
}
// Create grid for specific class
.make-grid(@class,@numbers) {
.float-grid-columns(@class);
.loop-grid-columns(@numbers, @class, width);
.loop-grid-columns(@numbers, @class, pull);
.loop-grid-columns(@numbers, @class, push);
.loop-grid-columns(@numbers, @class, offset);
}