首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以通过类名来控制HTML元素的顺序吗?

我可以通过类名来控制HTML元素的顺序吗?
EN

Stack Overflow用户
提问于 2018-03-15 08:00:18
回答 2查看 756关注 0票数 8

我有几个有固定类名的div:

代码语言:javascript
复制
<div class="type-a"></div>
<div class="type-b"></div>
<div class="type-c"></div>

其中可能有倍数,而这些div并不总是有序的。它们是动态添加的。

代码语言:javascript
复制
<div class="type-a"></div>
<div class="type-b"></div>
<div class="type-c"></div>
<div class="type-c"></div>
<div class="type-b"></div>
<div class="type-b"></div>
<div class="type-c"></div>
<div class="type-a"></div>

我想对所有的type-atype-b div进行分组,并在type-c div前面显示它们(这可以通过向右浮动type-a & type-b和向左浮动type-c来完成)。另外,在type-atype-b之间,我想首先显示type-a div。和type-b第二。

在不重新排列上述HTML或使用JavaScript的情况下,我试图获得以下输出:

代码语言:javascript
复制
[type-a] [type-a] [type-b] [type-b] [type-b] [type-c] [type-c] [type-c]

这有可能只使用CSS吗?

这是小提琴,div左右浮动。现在需要进行的排序是在type-atype-b之间。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-15 08:03:31

您可以使用flexboxorder属性:

代码语言:javascript
复制
.container>div {
  width: 20px;
  height: 20px;
  background-color: yellow;
}

.container {
  display: inline-flex;
}

.type-a {
  order: 1;
}

.type-b {
  order: 2;
}

.type-c {
  order: 3;
}
代码语言:javascript
复制
<div class="container">
  <div class="type-a">A</div>
  <div class="type-b">B</div>
  <div class="type-c">C</div>
  <div class="type-c">C</div>
  <div class="type-b">B</div>
  <div class="type-b">B</div>
  <div class="type-c">C</div>
  <div class="type-a">A</div>
</div>

Order也适用于Grid

代码语言:javascript
复制
.container>div {
  background-color: yellow;
}

.type-a {
  order: 1;
}

.type-b {
  order: 2;
}

.type-c {
  order: 3;
}

.container {
  display: grid;
  grid-template-columns: repeat(auto-fit, 20px);
  
}
代码语言:javascript
复制
<div class="container">
  <div class="type-a">A</div>
  <div class="type-b">B</div>
  <div class="type-c">C</div>
  <div class="type-c">C</div>
  <div class="type-b">B</div>
  <div class="type-b">B</div>
  <div class="type-c">C</div>
  <div class="type-a">A</div>
</div>

票数 10
EN

Stack Overflow用户

发布于 2018-03-15 08:05:11

使用flex显示器:

代码语言:javascript
复制
.container {
display:flex;
flex-flow:column;
}

.type-a {
order:1;
}

.type-b {
order:2;
}

.type-c {
order:3;
}
代码语言:javascript
复制
<div class="container">
<div class="type-a">a</div>
<div class="type-b">b</div>
<div class="type-c">c</div>
<div class="type-c">c</div>
<div class="type-b">b</div>
<div class="type-b">b</div>
<div class="type-c">c</div>
<div class="type-a">a</div>
</div>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49294168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档