【发布时间】:2018-06-21 19:25:54
【问题描述】:
. 大家好,我正在尝试设置 Javascript 函数来对齐(拉伸)FlexBox 中的最后一个子元素。
要在我的行中显示最多三列。 article-card-container 设置为flex: 1 1 calc(100 * (1/3));。
要拉伸最后一个我需要设置的项目 flex: 1;
<div id="content-container">
<article class="article-card-container"></article>
<article class="article-card-container"></article>
<article class="article-card-container"></article>
<article class="article-card-container"></article>
</div>
这是我的解决方案,但正在运行......
window.onload = function alignLeftovers() {
// get container with flexboxes
var container = document.getElementById("content-container");
// get container children
var childernCount = container.children.length;
// get leftover children
var leftover = container.children.length % 3;
if (childernCount > 3 && leftover === 1 ) { // condition
// start loop
for (var i = 0; i < container.children.length; i++) {
// remove class on last child
container.lastElementChild.classList.remove('article-card-container');
}
// add a new class on last child
container.lastElementChild.classList.add('article-card-container-100');
}
};
我使用leftover === 1 进行测试,因为甚至还有2 项剩余,leftover > 0 导致问题。
这个函数的问题是我必须编写要分配的新类(包括内部元素的所有子类 = 大量代码)。
使用if 语句中的第一个条件,因为即使只有两个元素,modulus 也会返回 1。
在纯 JavaScript 中是否有更好的解决方案(我是 JS 新手)如何在最后一个子类 .article-card-container 选择器上获取“flex”属性并更改(删除和添加)其值并避免编写全新的类?
感谢您提供任何建议或提示以使其变得更好
【问题讨论】:
-
不清楚你想达到什么,你能说明一下吗?
-
我正在创建 WP 主题和文章列表不同,并且行上的最大列数为 3。因为所有 flex 元素都将 flex 值设置为 1/3,所以我试图删除这个值并最后拉伸孩子到 100%
-
所以不需要 JS :) 简单的 CSS 就足够了
-
这是我第一次尝试提出问题,但我得到了否定点。有人可以解释为什么我的 Q 被否决了吗?
-
谢谢,但我现在知道要问更多问题,因为我不知道什么是好问题。我试图对 JS 代码进行排序,因为我没有在这里找到正确的答案,而且我被否决了。我知道有 100 种方法可以解决一个问题,但我不明白仅仅因为被问到就判断某人的问题。至少我总是试图帮助别人而不评判他们。所以对谁投反对票。不好意思问
标签: javascript html css flexbox