Reputation: 119
I was trying to make an image gallery website, so i'm using Flask as backend to search images in database here is the code.
app.py
from flask import Flask
app = Flask('__name__')
.....
.....
@app.route('/')
def index():
images = Image_Table.query.all()
return render_template("index.html", images=images)
index.html
{% 'extends base.html ' %}
{% block content %}
{% for image in images %}
<div class="gallery">
<img class="image" src="{{ url_for('static', filename='photos/' + image.image_file) }}">
</div>
{% endfor %}
{% endblock %}
here are the styles style.css
.gallery {
display: grid;
grid-templates-column: repeat(auto-fit, minmax(300px, 1fr));
grid-gap: 10px;
}
.gallery .image {
width:100%;
}
So the way i want images to be displayed is like that
But instead i got this
In brief i want those empty space to be completed.
Upvotes: 1
Views: 92
Reputation: 105923
If you do not mind having image drawn columns by columns, you can use CSS column .
Basicly your CSS can become:
.gallery {
column-width: 300px;
column-gap: 10px;
}
.gallery img {
width: 100%;
margin-bottom: 10px;
}
<div class="gallery">
<img src=" https://picsum.photos/200/80">
<img src=" https://picsum.photos/200/100">
<img src=" https://picsum.photos/200/402">
<img src=" https://picsum.photos/200/102">
<img src=" https://picsum.photos/200/302">
<img src=" https://picsum.photos/200/301">
<img src=" https://picsum.photos/200/201">
<img src=" https://picsum.photos/200/401">
<img src=" https://picsum.photos/200/101">
<img src=" https://picsum.photos/200/400">
<img src=" https://picsum.photos/200/100">
<img src=" https://picsum.photos/200/200">
<img src=" https://picsum.photos/200/400">
<img src=" https://picsum.photos/200/100">
<img src=" https://picsum.photos/200/300">
<img src=" https://picsum.photos/200/200">
<img src=" https://picsum.photos/200/402">
<img src=" https://picsum.photos/200/102">
<img src=" https://picsum.photos/200/302">
<img src=" https://picsum.photos/200/301">
<img src=" https://picsum.photos/200/201">
<img src=" https://picsum.photos/200/401">
<img src=" https://picsum.photos/200/101">
<img src=" https://picsum.photos/200/300">
<img src=" https://picsum.photos/200/200">
<img src=" https://picsum.photos/200/400">
<img src=" https://picsum.photos/200/100">
<img src=" https://picsum.photos/200/300">
<img src=" https://picsum.photos/200/200">
<img src=" https://picsum.photos/200/400">
<img src=" https://picsum.photos/200/100">
<img src=" https://picsum.photos/200/200">
<img src=" https://picsum.photos/200/402">
<img src=" https://picsum.photos/200/102">
<img src=" https://picsum.photos/200/302">
<img src=" https://picsum.photos/200/301">
<img src=" https://picsum.photos/200/201">
<img src=" https://picsum.photos/200/401">
<img src=" https://picsum.photos/200/101">
</div>
You can aside use clamp()
if you wish a bit more fluidity in calculating the column's width :
https://developer.mozilla.org/en-US/docs/Web/CSS/clamp()
The
clamp()
CSS function clamps a value between an upper and lower bound.clamp()
enables selecting a middle value within a range of values between a defined minimum and maximum. It takes three parameters: a minimum value, a preferred value, and a maximum allowed value. Theclamp()
function can be used anywhere a<length>
,<frequency>
,<angle>
,<time>
,<percentage>
,<number>
, or<integer>
is allowed.
.gallery {
column-width:300px;/* wherever clamp() is not supported */
column-width: clamp(150px,30vw,300px);
column-gap: 10px;
}
.gallery img {
width: 100%;
margin-bottom: 10px;
}
<div class="gallery">
<img src=" https://picsum.photos/200/80">
<img src=" https://picsum.photos/200/100">
<img src=" https://picsum.photos/200/402">
<img src=" https://picsum.photos/200/102">
<img src=" https://picsum.photos/200/302">
<img src=" https://picsum.photos/200/301">
<img src=" https://picsum.photos/200/201">
<img src=" https://picsum.photos/200/401">
<img src=" https://picsum.photos/200/101">
<img src=" https://picsum.photos/200/400">
<img src=" https://picsum.photos/200/100">
<img src=" https://picsum.photos/200/200">
<img src=" https://picsum.photos/200/400">
<img src=" https://picsum.photos/200/100">
<img src=" https://picsum.photos/200/300">
<img src=" https://picsum.photos/200/200">
<img src=" https://picsum.photos/200/402">
<img src=" https://picsum.photos/200/102">
<img src=" https://picsum.photos/200/302">
<img src=" https://picsum.photos/200/301">
<img src=" https://picsum.photos/200/201">
<img src=" https://picsum.photos/200/401">
<img src=" https://picsum.photos/200/101">
<img src=" https://picsum.photos/200/300">
<img src=" https://picsum.photos/200/200">
<img src=" https://picsum.photos/200/400">
<img src=" https://picsum.photos/200/100">
<img src=" https://picsum.photos/200/300">
<img src=" https://picsum.photos/200/200">
<img src=" https://picsum.photos/200/400">
<img src=" https://picsum.photos/200/100">
<img src=" https://picsum.photos/200/200">
<img src=" https://picsum.photos/200/402">
<img src=" https://picsum.photos/200/102">
<img src=" https://picsum.photos/200/302">
<img src=" https://picsum.photos/200/301">
<img src=" https://picsum.photos/200/201">
<img src=" https://picsum.photos/200/401">
<img src=" https://picsum.photos/200/101">
</div>
Upvotes: 2