首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >颠倒所有元素的顺序

颠倒所有元素的顺序
EN

Stack Overflow用户
提问于 2019-03-26 16:13:27
回答 4查看 692关注 0票数 0

我试过用

CSS:

代码语言:javascript
复制
flex-direction: column-reverse;

Javascript:

代码语言:javascript
复制
var reversed = document.getElementsByTagName('span').reverse();
document.getElementsByTagName('div').innerHTML = reversed;

若要反转div内跨度的顺序,同时使其保持内联但不工作,请执行以下操作

代码语言:javascript
复制
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">



<div class="row">
  <span class="col-3">1</span>
  <span class="col-3">2</span>
  <span class="col-3">3</span>
  <span class="col-3">4</span>
  <span class="col-3">5</span>
  <span class="col-3">6</span>
  <span class="col-3">7</span>
  <span class="col-3">8</span>
  <span class="col-3">9</span>
  <span class="col-3">10</span>
</div>

预期结果是

代码语言:javascript
复制
10    9    8    7
6     5    4    3
2     1
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-03-26 16:18:54

您可以使用flex-direction: row-reversejustify-content: flex-end

代码语言:javascript
复制
div {
  display: flex;
  flex:1;
  justify-content: flex-end;
  flex-direction: row-reverse;
}
代码语言:javascript
复制
<div>
  <span>1</span>
  <span>2</span>
  <span>3</span>
  <span>4</span>
  <span>5</span>
  <span>6</span>
  <span>7</span>
  <span>8</span>
  <span>9</span>
  <span>10</span>
</div>

与JS

代码语言:javascript
复制
function change(){
  let spans = document.querySelectorAll('.row > span')
  let div = document.querySelector('.row');
  ([...spans]).reverse().forEach(e=>{
    div.appendChild(e)
  })
}
代码语言:javascript
复制
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">


<button onClick='change()'>Reverse</button>
<div class="row">
  <span class="col-3">1</span>
  <span class="col-3">2</span>
  <span class="col-3">3</span>
  <span class="col-3">4</span>
  <span class="col-3">5</span>
  <span class="col-3">6</span>
  <span class="col-3">7</span>
  <span class="col-3">8</span>
  <span class="col-3">9</span>
  <span class="col-3">10</span>
</div>

票数 3
EN

Stack Overflow用户

发布于 2019-03-26 16:18:16

您可以通过以下步骤实现这一点:

  • 使用querySelectorAll()获取所有<span>元素
  • 使用扩展运算符将querySelectorAll的结果转换为Array
  • 对此使用Array.prototype.reverse()
  • 使用querySelector()获取<div>,使用appendChild代替innerHTML

代码语言:javascript
复制
let div = document.querySelector('div')
let spans =  [...document.querySelectorAll('span')].reverse().forEach(elm => {
  div.appendChild(elm);
})
代码语言:javascript
复制
div {
  display: flex;
}
代码语言:javascript
复制
<div>
  <span>1</span>
  <span>2</span>
  <span>3</span>
  <span>4</span>
  <span>5</span>
  <span>6</span>
  <span>7</span>
  <span>8</span>
  <span>9</span>
  <span>10</span>
</div>

票数 2
EN

Stack Overflow用户

发布于 2019-03-26 16:16:11

您可以在这里使用flex-direction: row-reversejustify-content对齐项目,而不是向右对齐,这将在使用row-reverse作为值时发生。

代码语言:javascript
复制
div {
  display: flex;
  flex-direction: row-reverse;
  justify-content: flex-end;
}
代码语言:javascript
复制
<div>
  <span>1</span>
  <span>2</span>
  <span>3</span>
  <span>4</span>
  <span>5</span>
  <span>6</span>
  <span>7</span>
  <span>8</span>
  <span>9</span>
  <span>10</span>
</div>

另外,不确定您是否正在寻找JS解决方案,但我认为您不需要这样做,因为您只需使用flex就可以实现上述目标。

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

https://stackoverflow.com/questions/55361689

复制
相关文章

相似问题

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