<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      原生js實現表頭拖拽效果

      使用原生js實現表頭拖拽效果

      方法獨立jq,使用面向對象方法,可以改造成ts嵌入vue項目中或者拓展el-table表頭固定,不影響el-table排序的拖拽問題

      代碼如下,有不足之處的請幫忙指出

      <!DOCTYPE html>
      <html>
      
      <head>
          <meta charset="UTF-8">
          <title>原生實現table拖拽滾動</title>
          <style>
              .scrollTableBox {
                  width: 100%;
                  max-width: 300px;
                  margin: auto;
                  overflow-x: scroll;
              }
      
              .scrollTableBox table {
                  width: 100%;
                  border-collapse: collapse;
              }
              .scrollTableBox.dragActive table{
                  user-select: none;
              }
      
              .scrollTableBox th,
              .scrollTableBox td {
                  padding: 8px;
                  text-align: left;
                  border-bottom: 1px solid #ddd;
              }
      
              .scrollTableBox thead th {
                  background-color: #f2f2f2;
                  white-space: nowrap;
              }
          </style>
      </head>
      
      <body>
          <div class="scrollTableBox">
              <table class="scrollTable" id="scrollable" border>
                  <thead>
                      <tr>
                          <th>序號</th>
                          <th>產品</th>
                          <th>標題</th>
                          <th>型號</th>
                          <th>內容</th>
                          <th>備注</th>
                          <th>售前價格</th>
                          <th>活動價格</th>
                          <th>促銷抵扣</th>
                          <th>積分</th>
                      </tr>
                  </thead>
                  <tbody>
                      <tr>
                          <td>1</td>
                          <td>2</td>
                          <td>3</td>
                          <td>4</td>
                          <td>5</td>
                          <td>6</td>
                          <td>7</td>
                          <td>8</td>
                          <td>9</td>
                          <td>10</td>
                      </tr>
                      <tr>
                          <td>21</td>
                          <td>22</td>
                          <td>23</td>
                          <td>24</td>
                          <td>25</td>
                          <td>26</td>
                          <td>27</td>
                          <td>28</td>
                          <td>29</td>
                          <td>210</td>
                      </tr>
                      <tr>
                          <td>321</td>
                          <td>322</td>
                          <td>323</td>
                          <td>324</td>
                          <td>325</td>
                          <td>326</td>
                          <td>327</td>
                          <td>328</td>
                          <td>329</td>
                          <td>3210</td>
                      </tr>
                  </tbody>
              </table>
          </div>
          <script>
              class HeaderDraggable {
                  constructor(scrollContainer) {
                      this.isDragging = false;
                      this.startX = 0;
                      this.scrollLeft = 0;
                      this.scrollContainer = scrollContainer;
      
                      this.startDrag = this.startDrag.bind(this);
                      this.drag = this.drag.bind(this);
                      this.endDrag = this.endDrag.bind(this);
                      if (this.scrollContainer) {
                          let thead = this.scrollContainer.querySelector('thead');
                          thead.addEventListener('mousedown', this.startDrag);
                      }
                  }
                  startDrag(e) {
                      this.isDragging = true;
                      this.startX = e.pageX;
                      this.scrollLeft = this.scrollContainer ? this.scrollContainer.scrollLeft : 0;
                      this.scrollContainer.classList.add('dragActive');
                      this.scrollContainer.style.cursor = 'grabbing';
                      document.addEventListener('mousemove', this.drag);
                      document.addEventListener('mouseup', this.endDrag);
                  }
      
                  drag(e) {
                      if (!this.isDragging) return;
                      const scrollX = this.startX - e.pageX;
                      if (this.scrollContainer) {
                          this.scrollContainer.scrollLeft = this.scrollLeft + scrollX;
                      }
                  }
                  endDrag() {
                      this.isDragging = false;
                      this.scrollContainer.classList.remove('dragActive');
                      this.scrollContainer.style.cursor = 'auto';
                      document.removeEventListener('mousemove', this.drag);
                      document.removeEventListener('mouseup', this.endDrag);
                  }
                  cleanup() {
                      if (this.scrollContainer) {
                          this.scrollContainer.removeEventListener('mousedown', this.startDrag);
                      }
                      document.removeEventListener('mousemove', this.drag);
                      document.removeEventListener('mouseup', this.endDrag);
                  }
              }
              const initTableScroll = () => {
                  const table = document.querySelector('.scrollTableBox');
                  if (!table) return;
                  const headerDraggable = new HeaderDraggable(table);
              }
              initTableScroll()
          </script>
      </body>
      
      </html>
      

        

      posted @ 2024-05-28 16:10  chengJun—  閱讀(49)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日本一区二区不卡精品| 久久精品99国产国产精| 日本亚洲欧洲无免费码在线| 开封市| 中文字幕亚洲精品第一页| 一区二区三区激情免费视频| 国产欧美日韩高清在线不卡| 欧美成人黄在线观看| 亚洲国产成人久久一区久久| 俄罗斯老熟妇性爽xxxx| 国产一码二码三码区别| 亚洲中文字幕精品一区二区三区| 亚洲欧美综合中文| av男人的天堂在线观看国产| 亚洲 另类 小说 国产精品无码| 成人国产精品一区二区网站公司 | 欧美亚洲高清日韩成人| 一区二区亚洲人妻精品| 成人国产精品三上悠亚久久| 亚洲国产天堂久久综合226114 | 一区二区三区av天堂| 日韩在线观看精品亚洲| 人人人澡人人肉久久精品| 国产福利姬喷水福利在线观看| 国产精品一二三区久久狼| 午夜精品久久久久久久久| 丰满人妻一区二区三区色| аⅴ天堂国产最新版在线中文| 国产亚洲无线码一区二区| 激情伊人五月天久久综合| 九九热在线免费播放视频| 久久99精品国产自在现线小黄鸭| 人妻中文字幕亚洲精品| 国产中文字幕在线精品| 国产超碰无码最新上传| 亚洲人亚洲人成电影网站色| 亚洲精品国产中文字幕| 自拍偷亚洲产在线观看| 国产999久久高清免费观看| 富蕴县| 精品视频一区二区福利午夜|