html 使用flexbox和一些Javascript按列对表进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html 使用flexbox和一些Javascript按列对表进行排序相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
<style>
  #container {
      flex-shrink: 0;
      flex-basis: auto;
      display: flex;
      flex-direction: column;
      height: 90%;
      margin: 2em;
      border: 2px dotted grey;
      padding: 0.5em;
  }
  .row {
    flex-flow : row nowrap;
    display: flex;
    order: 1;
  }
  .item {
    flex: 1;
  }
  .row.header {
    background-color: skyblue;
    order: -1;
  }
  
</style>

  <div id="container">
    <div class="row header">
      <div class="item" data-field="nombre">Nombre</div>
      <div class="item" data-field="apellidos">Apellidos</div>
      <div class="item" data-field="telefono">telefono</div>
    </div>
    <div class="row">
      <div class="item" data-nombre="Jorge">Jorge</div> 
      <div class="item" data-apellidos="Barrachina">Barrachina</div>
      <div class="item" data-telefono="91443456">91443456</div>
    </div>
    <div class="row">
      <div class="item" data-nombre="Susana">Susana</div>
      <div class="item" data-apellidos="García">García</div>
      <div class="item" data-telefono="91223456">91223456</div>
    </div>
    <div class="row">
      <div class="item" data-nombre="Pedro">Pedro</div>
      <div class="item" data-apellidos="Ramirez">Ramirez</div>
      <div class="item" data-telefono="91573456">91223456</div>
    </div>
    <div class="row">
      <div class="item" data-nombre="Alba">Alba</div> 
      <div class="item" data-apellidos="Lopez">Lopez</div>
      <div class="item" data-telefono="91833456">91833456</div>
    </div>
    <div class="row">
      <div class="item" data-nombre="Ramón">Ramón</div>
      <div class="item" data-apellidos="Casco">Casco</div>
      <div class="item" data-telefono="91653456">91653456</div>
    </div>
  </div>
<script>
  
  document.addEventListener("DOMContentLoaded",init,false);
  function init () {
      var container = document.getElementById('container');
      
      container.onclick = function (e) {
      var selected = e.target;
      var filter = selected.dataset.field;
      [].slice.call(container.querySelectorAll('[data-' + filter +']')).sort(function(a,b){ return (a.dataset[filter].toLowerCase() > b.dataset[filter].toLowerCase()) - (a.dataset[filter].toLowerCase() < b.dataset[filter].toLowerCase()); }).map(function(n,i){ n.parentElement.style.order = i+1; return n;});

      };
  }
</script>
</body>
</html>

以上是关于html 使用flexbox和一些Javascript按列对表进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 flexbox 使菜单居中 [关闭]

Img 不尊重 html 中的宽度(使用 flexbox)

FlexboxLayout 的一些基本介绍与基本用法

Flexbox 嵌套元素

flexbox 一个元素固定高度,其他填充

如何更改 flexbox 中图片的大小?