我有5个内联的正方形在一个灵活的父母.当点击按钮时,first方块被移除.每次移除第一个方块时,后面的方块都会被推回左边一个方块的宽度(正如预期的那样).发生这种情况时,是否有可能使其他方块保持其位置(即,它们停留在原来的位置,而不是向左移动)?

我能想到的一种方法是绝对定位每个正方形元素.但这是防止方块移动的唯一方法吗?

Note:如果我也移除last方块,我希望方块保持它们的位置;所以像justify-content: flex-end这样的东西不能满足我的需求,因为它不能同时满足两种情况.

Note 2:visibility: hiddenopacity: 0也不能满足我的需要,因为我确实需要删除正方形元素.我还计划稍后添加另一个方形元素,不希望布局发生变化.这可能吗?

请看小提琴的例子.

$('.click-me').on('click', function() {
  // Remove the first square.
  $('.main').children().first().remove();
});
.main {
  position: relative;
  display: flex;
  margin-top: 20px;
}
.main span {
  width: 35px;
  height: 35px;
  background-color: #2e852e;
  border: 1px solid #000;
}
.main .square1,
.main .square5 {
  background-color: #a5a551;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="click-me">Click Me!</button>
<div class="main">
  <span class="square1"></span>
  <span class="square2"></span>
  <span class="square3"></span>
  <span class="square4"></span>
  <span class="square5"></span>
</div>

推荐答案

您可以使用grid方法,并将其与数据属性相结合.

$('.click-me').on('click', function() {
  // Remove the first square.
  $('.main').children().first().remove();
});
.main {
  position: relative;
  display: grid;
  grid-template-columns: repeat(5, 35px); /* create grid with 5 columns */
  margin-top: 20px;
}
.main span {
  width: 35px;
  height: 35px;
  background-color: #2e852e;
  border: 1px solid #000;
}
.main .square1,
.main .square5 {
  background-color: #a5a551;
}

.square[data-index="1"] {
  grid-column-start: 1;
}
.square[data-index="2"] {
  grid-column-start: 2;
}
.square[data-index="3"] {
  grid-column-start: 3;
}
.square[data-index="4"] {
  grid-column-start: 4;
}
.square[data-index="5"] {
  grid-column-start: 5;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="click-me">Click Me!</button>
<div class="main">
  <span class="square square1" data-index="1"></span>
  <span class="square square2" data-index="2"></span>
  <span class="square square3" data-index="3"></span>
  <span class="square square4" data-index="4"></span>
  <span class="square square5" data-index="5"></span>
</div>


<div class="main">
  <span class="square square2" data-index="2"></span>
  <span class="square square4" data-index="4"></span>
  <span class="square square5" data-index="5"></span>
</div>

Html相关问答推荐

为什么这个高度为100%的页面会出现滚动条?

VBA从公共Google Drive地址下载文档-.Click事件(?)

react :事件和转发器在特定代码段中不起作用

assets资源 净值元素不会扩展到涵盖子项

Bootstrap nav没有崩溃

如何在R中渲染Quarto文档时动态设置html文件名

高度:适合-内容不拉伸以适合内部长度

如何在ASP.NET Core中添加换行符

如何在小屏幕中制作水平滚动div

Tailwind CSS 忽略我的元素的填充

如何将多个类名组合到CSS中的一个关键帧

:invalid Select 器的惰性判断

在 laravel 中使用 DomPDF 将数据导出为 pdf 时,第二列被拉伸

为 HTML5 文本字段设置最后六位正则表达式模式

发送带有图像的Google文档作为HTML格式的邮件正文不再起作用

如何将 HTML DateTime 转换为 Golang Time 对象

HTML、CSS设计图像出格

奇怪的幻影 div 命名为

暗模式转换器

shinydashboard 标题中的位置标题