【发布时间】:2021-08-26 09:05:13
【问题描述】:
有没有办法将弹性容器宽度设置为第一行中所有弹性项目的宽度?
这是重新创建我的模拟页面的代码:
let tags = ["whatever", 'whenever', 'follower', 'leaves', 'trees', 'follow', 'sea', 'ocean'];
const addTagsToHTML = function(tags) {
let tagsList = document.getElementsByClassName('tag-list')[0];
for (let i = 0; i < tags.length; i++) {
let spanEl = document.createElement('span')
spanEl.className = 'tag';
spanEl.innerHTML = tags[i];
tagsList.appendChild(spanEl);
}
}
addTagsToHTML(tags)
const deleteBtn = document.getElementById('delete-btn');
deleteBtn.addEventListener('click', () => {
console.log("to delete");
let spanEl = document.getElementsByClassName('tag')[0];
let tagsList = document.getElementsByClassName('tag-list')[0];
tagsList.removeChild(spanEl);
})
.all-container {
width: 90%;
background-color: rgb(231, 248, 228);
display: flex;
padding: 10px;
gap: 10px;
justify-content: space-between;
}
.add-padd-color {
padding: 20px;
background-color: white;
}
.tag-list {
display: flex;
gap: 10px;
flex-wrap: wrap;
}
.tag-list .tag {
border: 1px solid rgb(182, 112, 112);
padding: 2px 5px;
border-radius: 2px;
;
}
.actions,
.title {
min-width: 30%;
}
<div class="all-container">
<div class="title add-padd-color">Mock title</div>
<div class="tag-list add-padd-color">
</div>
<div class="actions add-padd-color">
<button id='delete-btn'>Delete tag</button>
</div>
</div>
这些弹性项目(标签)可能会被删除,所以第一行的宽度会改变,我希望我的弹性容器(标签列表)的宽度相应地改变,并且只占用包含所有弹性所需的大小可以包含在一行中而不会留下可用空间的项目。
【问题讨论】:
-
使用
flex-grow和flex-shrink属性分别增大或缩小弹性项目。