其他分享
首页 > 其他分享> > 表格:头部和首列固定、上下左右联动

表格:头部和首列固定、上下左右联动

作者:互联网

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>联动表格</title>
  <style>
    html,body,h2,h3,h4,h5,h6,div,dl,dt,dd,ul,ol,li,p,blockquote,pre,hr,figure,table,caption,th,td,form,fieldset,legend,input,button,textarea,menu{margin:0;padding:0;}
    li{
      list-style: none;
    }
    html{
      height: 100%;
      font-size: 62.5%;
    }
    body{
      color: #333;
      background: #fff;
      height: 100%;
      font-size: 1.4rem;
    }
    .fund{
      padding-top: 7.5rem;
    }
    .fixed-header{
      position: fixed;
      top: 0;
      left: 0;
      right: 0;
      z-index: 999;
      background: #fff;
    }
    .header{
      position: relative;
    }
    .header::after{
      content: '';
      position: absolute;
      top: 0;
      right: 0;
      height: 4.5rem;
      box-shadow: 0px 0 10px 10px #fff;
      z-index: 10;
    }
    .tabs{
      font-size: 0;
      padding-right: 1rem;
      overflow-x: auto;
      white-space: nowrap;
      -webkit-overflow-scrolling: touch;
    }
    .tabs::-webkit-scrollbar{
      display: none;
    }
    .tabs>li{
      display: inline-block;
      width: 18%;
      height: 4rem;
      line-height: 4rem;
      font-size: 1.5rem;
      color: #646464;
      text-align: center;
    }
    .tabs>li.active{
      color: #3074c2;
      position: relative;
    }
    .tabs>li.active::after{
      content: '';
      position: absolute;
      bottom: 0.2rem;
      left: 50%;
      width: 2rem;
      height: 0.3rem;
      border-radius: 0.15rem;
      background: #3074c2;
      transform: translateX(-50%);
      -webkit-transform: translateX(-50%);
    }
    .thead{
      background: #f7f8fa;
      position: relative;
    }
    .thead>ul>li{
      font-size: 1.2rem;
    }
    .thead-l>li{
      height: 3.5rem;
      line-height: 3.5rem;
      width: 25%;
      text-align: center;
    }
    .thead-r{
      position: absolute;
      top: 0;
      left: 25%;
      right: 1.5rem;
      bottom: 0;
      z-index: 9;
      overflow-x: auto;
      white-space: nowrap;
      font-size: 0;
    }
    .thead-r::-webkit-scrollbar{
      display: none;
    }
    .thead-r>li{
      display: inline-block;
      width: 30%;
      text-align: center;
      font-size: 1.3rem;
      color: #666;
      height: 3.5rem;
      line-height: 3.5rem;
    }
    .thead-r>li>i{
      display: inline-block;
      width: 1rem;
      height: 1rem;
      vertical-align: middle;
      position: relative;
      bottom: 0.2rem;
      margin-left: 0.1rem;
      background-size: 100% 100%;
      visibility: hidden;
    }
    .thead-r>li>i.order-up{
      background-image: url(../img/order-up.png);
      visibility: visible;
    }
    .thead-r>li>i.order-down{
      background-image: url(../img/order-down.png);
      visibility: visible;
    }
    .container{
      position: relative;
    }
    .line{
      padding: 0.5rem 0 0.5rem 1.7rem;
      width: 25%;
      box-sizing: border-box;
    }
    .fixed-box{
      position: absolute;
      top: 0;
      left: 25%;
      right: 1.5rem;
      bottom: 0;
      z-index: 9;
      overflow-x: auto;
    }
    .fixed-box::-webkit-scrollbar{
      display: none;
    }
    .fixed-box>ul{
      white-space: nowrap;
      font-size: 0;
    }
    .fixed-box>ul>li{
      display: inline-block;
      width: 30%;
      text-align: center;
      font-size: 1.3rem;
    }
  </style>
</head>
<body>
  <div class="fund">
    <div class="fixed-header">
      <div class="header">
        <ul class="tabs">
          <li class="active">全部</li>
          <li>股票</li>
          <li>债券</li>
          <li>混合</li>
          <li>货币</li>
          <li>QDII</li>
          <li>短期理财</li>
        </ul>
      </div>
      <div class="thead">
        <ul class="thead-l">
          <li>名称/代码</li>
        </ul>
        <ul class="thead-r">
          <li>质押比例<i class="order-down"></i></li>
          <li>质押市值<i></i></li>
          <li>质押股数<i></i></li>
          <li>质押笔数<i></i></li>
          <li>涨幅<i></i></li>
          <li>押数<i></i></li>
          <li>所属行业<i></i></li>
        </ul>
      </div>
    </div>
    <div class="container">
      <div class="fixed-box">
      </div>
    </div>
  </div>
  <script src="../zepto.min.js"></script>
  <script>
    // 头部切换
    $('.tabs').on('click', 'li', function() {
      $(this).addClass('active').siblings().removeClass('active');
    });
    // 排序
    $('.thead-r').on('click', 'li', function() {
      var child = $(this).children('i');
      console.log(child);
      if (child.hasClass('order-down')) {
        child.addClass('order-up').removeClass('order-down');
      } else {
        child.addClass('order-down');
      }
      $(this).siblings().children('i').removeClass('order-down').removeClass('order-up');
    });
    // 添加DOM
    var container = document.querySelector('.container')
    var box = document.querySelector('.fixed-box')
    for (var i = 0; i < 20; i ++) {
      var $ul = document.createElement('ul');
      $ul.setAttribute('class', 'line');
      $ul.innerHTML = `<li>藏格控股${i+1}</li><li>000408</li>`
      container.insertBefore($ul, box)
      var $fixLine = document.createElement('ul');
      $fixLine.setAttribute('class', 'fixed-line');
      $fixLine.innerHTML = `<li>77.96%</li>
        <li>168.33亿</li>
        <li>15.54亿</li>
        <li>32</li>
        <li>1.75%</li>
        <li>392万</li>
        <li>化学原料</li>`
      box.appendChild($fixLine)
    }
    // 计算行高
    var arrLeft = []
    var leftUl = document.getElementsByClassName('line')
    for (var i = 0; i < leftUl.length; i ++) {
      arrLeft.push(getComputedStyle(leftUl[i]).height)
    }
    var rightUl = document.getElementsByClassName('fixed-line')
    for (var i = 0; i < rightUl.length; i ++) {
      rightUl[i].style.height = arrLeft[i]
      rightUl[i].style.lineHeight = arrLeft[i]
    }
    // 上下左右联动
    var $thead = document.querySelector('.thead-r'),
    $tbody = document.querySelector('.fixed-box');
    $tbody.addEventListener('scroll', function() {
      $thead.scrollLeft = this.scrollLeft
    });
    $thead.addEventListener('touchmove', function(e) {
      e.preventDefault()
    })
  </script>
</body>
</html>

 

标签:box,表格,首列,li,rem,var,height,上下左右,thead
来源: https://www.cnblogs.com/Yicoding/p/10435314.html