CSS 砌体不工作;所有弹性元素都排成一行
CSS masonry isn't working; all flex elements end up in one line
我的 CSS 砖石结构根本不起作用。到目前为止,我已经看到数百个网站告诉您如何执行此操作,但没有一个网站有效。我已经尝试解决这个问题大约一个星期了,非常感谢您的帮助。
信息
使用 HTML 和 CSS。通过 Django 加载砌体中项目的内容(在 Python 中)。
约束条件
虽然这并不是真正的限制,但首选无 JS 解决方案。但是,如果除了用 Javascript 调整某些东西之外别无他法,那也没关系。
描述
所以,问题来了:flex-wrap
根本没有将 flex 元素换行到下一行。这一切都在一条直线上,并在 x
轴上溢出页面。如果都是一条直线就不用砌了
这是我正在使用的 CSS from here:
.container {
display: flex;
flex-flow: column wrap;
align-content: space-between;
height: 600px;
}
.item {
width: 32%;
margin-bottom: 2%;
}
.item:nth-child(3n+1) { order: 1; }
.item:nth-child(3n+2) { order: 2; }
.item:nth-child(3n) { order: 3; }
/* Force new columns */
.container::before,
.container::after {
content: "";
flex-basis: 100%;
width: 0;
order: 2;
}
HTML:
{% for book in books %}
<div class="item" style="width: {{ size.width }}px; height: min-content;">
<img src="{{ book.thumbnail.url }}" style="width: {{ size.width }}px; height: {{ size.height }}px;">
<div class="titlebox"><h3>{{ book }}</h3></div>
<div class="authorbox">{{ book.author }}</div>
<div class="clickbtndiv">
{% if book.status == 1 %}
<a href="/main/rent/{{ book.code }}"><button class="clickbtn">Rent</button></a>
{% else %}
<button class="clickbtn" style="width: auto !important;" onclick="Alert.render('')">Not available</button>
{% endif %}
<a href="/main/books/{{ book.code }}/" style="margin-left: 10px;"><button class="clickbtn">Know more</button></a>
</div>
</div>
{% endfor %}
如果你正在阅读这个问题,你可能是一名前端开发人员,也许你不知道 Django。 {{}}
s 被替换为从后端发送的实际值。
我不知道发生了什么,自早上 7 点以来我所做的任何事情都无法修复它,因为我更像是一名后端开发人员,尽管我知道 HTML、CSS , 和 JS,这是我正在做的一种项目,所以没有前端开发人员来帮助我。
谢谢!
它不适用于 flex。你应该使用网格。
https://www.smashingmagazine.com/native-css-masonry-layout-css-grid/
flex 仅适用于 x 或 y 轴。
我的 CSS 砖石结构根本不起作用。到目前为止,我已经看到数百个网站告诉您如何执行此操作,但没有一个网站有效。我已经尝试解决这个问题大约一个星期了,非常感谢您的帮助。
信息
使用 HTML 和 CSS。通过 Django 加载砌体中项目的内容(在 Python 中)。
约束条件
虽然这并不是真正的限制,但首选无 JS 解决方案。但是,如果除了用 Javascript 调整某些东西之外别无他法,那也没关系。
描述
所以,问题来了:flex-wrap
根本没有将 flex 元素换行到下一行。这一切都在一条直线上,并在 x
轴上溢出页面。如果都是一条直线就不用砌了
这是我正在使用的 CSS from here:
.container {
display: flex;
flex-flow: column wrap;
align-content: space-between;
height: 600px;
}
.item {
width: 32%;
margin-bottom: 2%;
}
.item:nth-child(3n+1) { order: 1; }
.item:nth-child(3n+2) { order: 2; }
.item:nth-child(3n) { order: 3; }
/* Force new columns */
.container::before,
.container::after {
content: "";
flex-basis: 100%;
width: 0;
order: 2;
}
HTML:
{% for book in books %}
<div class="item" style="width: {{ size.width }}px; height: min-content;">
<img src="{{ book.thumbnail.url }}" style="width: {{ size.width }}px; height: {{ size.height }}px;">
<div class="titlebox"><h3>{{ book }}</h3></div>
<div class="authorbox">{{ book.author }}</div>
<div class="clickbtndiv">
{% if book.status == 1 %}
<a href="/main/rent/{{ book.code }}"><button class="clickbtn">Rent</button></a>
{% else %}
<button class="clickbtn" style="width: auto !important;" onclick="Alert.render('')">Not available</button>
{% endif %}
<a href="/main/books/{{ book.code }}/" style="margin-left: 10px;"><button class="clickbtn">Know more</button></a>
</div>
</div>
{% endfor %}
如果你正在阅读这个问题,你可能是一名前端开发人员,也许你不知道 Django。 {{}}
s 被替换为从后端发送的实际值。
我不知道发生了什么,自早上 7 点以来我所做的任何事情都无法修复它,因为我更像是一名后端开发人员,尽管我知道 HTML、CSS , 和 JS,这是我正在做的一种项目,所以没有前端开发人员来帮助我。
谢谢!
它不适用于 flex。你应该使用网格。 https://www.smashingmagazine.com/native-css-masonry-layout-css-grid/
flex 仅适用于 x 或 y 轴。