Hi Larry
When you use the Loop Wizard to set up the output of a View as a Bootstrap grid the options available in the UI and the resulting markup only allow for a certain number of columns collapsing to a single stack on smaller screens.
A more refined approach is possible with the Bootstrap grid, but when combining this with how a View dynamically generates the markup you will need to intervene manually in the setup in the context of limitations which arise from how Bootstrap uses rows.
Let's look at the markup inserted into the Loop Editor for a 4-column grid:
<!-- wpv-loop-start -->
<div class="container wpv-loop js-wpv-loop">
<wpv-loop wrap="4" pad="true">
[wpv-item index=1]
<div class="row ">
<div class="col-md-3">[wpv-post-body view_template="loop-item-in-bs-grid-of-things"]</div>
[wpv-item index=other]
<div class="col-md-3">[wpv-post-body view_template="loop-item-in-bs-grid-of-things"]</div>
[wpv-item index=4]
<div class="col-md-3">[wpv-post-body view_template="loop-item-in-bs-grid-of-things"]</div>
</div>
</wpv-loop>
Note, I'm using BS4 in this example, and I've omitted the padding items for simplicity.
Bootstrap grids operate using rows.
With a four-column grid every 4 column entries (e.g. div with col class) are wrapped in a div class = row.
So the actual HTML produced looks something like this:
<div class="row ">
<div class="col-md-3">Non iusto asperiores est explicabo autem</div>
<div class="col-md-3">Repellendus rerum autem molestiae ut sit qui</div>
<div class="col-md-3">Quo nulla voluptate recusandae</div>
<div class="col-md-3">Sit in labore qui quod veniam</div>
</div>
<div class="row ">
<div class="col-md-3">Voluptatem excepturi quia molestiae</div>
<div class="col-md-3">Ea maiores nihil fugiat</div>
<div class="col-md-3">Aperiam a sed consequatur provident</div>
<div class="col-md-3">Harum enim nemo quasi</div>
</div>
...
...
See? Every row has 4 columns, on medium-sized screens and above.
Now if you want 3 columns on small screens you need the markup to look like this:
<div class="row ">
<div class="col-md-3">Non iusto asperiores est explicabo autem</div>
<div class="col-md-3">Repellendus rerum autem molestiae ut sit qui</div>
<div class="col-md-3">Quo nulla voluptate recusandae</div>
</div>
<div class="row ">
<div class="col-md-3">Sit in labore qui quod veniam</div>
<div class="col-md-3">Voluptatem excepturi quia molestiae</div>
<div class="col-md-3">Ea maiores nihil fugiat</div>
</div>
<div class="row">
<div class="col-md-3">Aperiam a sed consequatur provident</div>
<div class="col-md-3">Harum enim nemo quasi</div>
...
</div>
It's not just a question of modifying the classnames (or choosing some classes for smallest screens and different classes for larger screens on the same divs), you also need to modify the markup structure itself to include a different number of columns.
And that is problematic when you want different numbers of column divs within each row div for different screen sizes.
Now, I'm mentioning four columns as a starting point here, because if you stuff too many columns into a markup row they will overflow onto the next visual row.
Which means when you set this up on larger screens
and view it on a smaller screen you can achieve this
but if you try to use 3 columns mimicking 2 columns you end up going from this
to this
In terms of implementation, where there are divs with class col-md-3 in the code above I need to manually add classes of col-sm-6 to the same divs.
That way on medium screens and above I have four columns, on small screens two, and on smaller screens just one.
You could also do, for example, 6 to 3 to 1.
But you cannot do 3 to 2 to 1, which you originally enquired about.