I am having an array list which comprises of image url. I want to bind each items into a div using react-bootstrap(library is not contraint but it should be compatible with react). I want to align divs in a way that in each row I will have 3 images only and if there is 4th item in collection then it slides to next row.
Below is the collection
const images = [
{
src:
'https://images.unsplash.com/photo-1509420316987-d27b02f81864?dpr=1&auto=format&fit=crop&w=1500&q=80&cs=tinysrgb&ixid=dW5zcGxhc2guY29tOzs7Ozs=',
width: 1500,
height: 1000,
},
{
src:
'https://images.unsplash.com/photo-1509641498745-13c26fd1ed89?dpr=1&auto=format&fit=crop&w=1000&q=80&cs=tinysrgb&ixid=dW5zcGxhc2guY29tOzs7Ozs=',
width: 666,
height: 1000,
},
{
src:
'https://images.unsplash.com/photo-1491146179969-d674118945ff?dpr=1&auto=format&fit=crop&w=1500&q=80&cs=tinysrgb&ixid=dW5zcGxhc2guY29tOzs7Ozs=',
width: 1500,
height: 844,
},
{
src:
'https://images.unsplash.com/photo-1509420316987-d27b02f81864?dpr=1&auto=format&fit=crop&w=1500&q=80&cs=tinysrgb&ixid=dW5zcGxhc2guY29tOzs7Ozs=',
width: 1500,
height: 1000,
},
{
src:
'https://images.unsplash.com/photo-1509641498745-13c26fd1ed89?dpr=1&auto=format&fit=crop&w=1000&q=80&cs=tinysrgb&ixid=dW5zcGxhc2guY29tOzs7Ozs=',
width: 666,
height: 1000,
}
]
CodePudding user response:
I would make a wrapping Div with display: flex.
<div id="img-wrapper">
<div><img src="your image" /></div>
<div><img src="your image" /></div>
</div>
CSS:
#img-wrapper {
display: flex;
flex-wrap: wrap;
}
#img-wrapper > div {
flex: 0 1 33%;
}
flex: tells the child-div if it should grow, shrink and which size it should have:
flex: "flex-grow" "flex-shrink" "flex-basis";
edit: as Baruch Mashasha stated, grid would be even better for this.
CodePudding user response:
put all the images inside container and use grid
.container {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-row-gap: 10px;
}
img {
width: 200px;
height: 200px;
}
CodePudding user response:
I would use Bootstrap classes to create a grid for this, something like this...
<div className="row">
<div className="col"></div>
<div className="col"></div>
<div className="col"></div>
</div>
If you want to have another row you can just keep going with this idea. You can check here: https://getbootstrap.com/docs/4.0/layout/grid/ for a more thorough explanation, and to customize to your liking.