代码之家  ›  专栏  ›  技术社区  ›  ItFreak

CSS不带flex更改div顺序

  •  0
  • ItFreak  · 技术社区  · 7 年前

    给定的HTML为:

    <div class="class">1</div>
    <div class="class">2</div>
    <div class="class">3</div>
    <div class="class">4</div>
    

    我知道我能做一件事 display:flex

    .class :nth-child(1) { order: 2 }
    .class :nth-child(2) { order: 4 }
    .class :nth-child(3) { order: 1 }
    .class :nth-child(4) { order: 3 }
    

    它应该产生

    <div class="class">3</div>
    <div class="class">1</div>
    <div class="class">4</div>
    <div class="class">2</div>
    

    有没有一种方法可以做到这一点,而不必将flexbox与其order属性结合使用?

    3 回复  |  直到 7 年前
        1
  •  9
  •   Vucko    7 年前

    可以使用栅格布局,它具有类似的顺序属性。

    .boxes {
      display: grid;
    }
    
    .class:nth-of-type(1) {
      order: 2;
    }
    
    .class:nth-of-type(2) {
      order: 4;
    }
    
    .class:nth-of-type(3) {
      order: 1;
    }
    
    .class:nth-of-type(4) {
      order: 3;
    }
    <div class="boxes">
      <div class="class">1</div>
      <div class="class">2</div>
      <div class="class">3</div>
      <div class="class">4</div>
    </div>
        2
  •  0
  •   Irina    7 年前

    你可以用 left float: left;

    .class {
        position: relative;
        float: left;
        width: 25%;
       }
    
      .class:nth-child(1) {
        left: 75%;
      }
    
      .class:nth-child(2) {
        left: 25%;
      }
    
      .class:nth-child(3) {
        left: -25%;
      }
    
      .class:nth-child(4) {
        left: -75%;
      }
    
        3
  •  0
  •   Mr Lister hawi    7 年前

    .container {display: table;}
    .class {display: table-row;}
    .class:nth-child(3) {display: table-header-group;}
    .class:nth-child(2) {display: table-footer-group;}
    <div class="container">
      <div class="class">1</div>
      <div class="class">2</div>
      <div class="class">3</div>
      <div class="class">4</div>
    </div>