zoukankan      html  css  js  c++  java
  • VUE Transfer 穿梭框

    点击左边到右边,并且删除点击边的数据,点击右边同理。

    <template>
      <div
        class="transfer"
        style="text-align: left;display: inline-block;font-size: 14px;"
      >
        <div class="transfer-panel">
          <p class="transfer-panel__header">
            <label class="tilte"
              ><span class="title_label">发布文章<span>0/5</span></span></label
            >
          </p>
          <div class="transfer-panel__body is-with-footer">
            <div class="transfer_ul_art">
              <ul
                style="padding-left: 22px; padding-top: 15px;"
                class="releaseArticle"
              >
                <li
                  v-for="(item, index) in articleList.filter(obj => {
                    return obj.isHide != undefined;
                  })"
                  :key="item.ID"
                  :data-id="item.ID"
                  :data-index="index"
                >
                  <div class="ul-content" style="pointer-events: none;">
                    <img
                      :src="item.ImgUrl"
                      width="100%"
                      :alt="item.Title"
                      :title="item.Title"
                    />
                    <h5>{{ item.Title }}</h5>
                  </div>
                </li>
              </ul>
            </div>
          </div>
          <p class="transfer-panel__footer"></p>
        </div>
    
        <div class="transfer-panel" style="margin-left: 25px;">
          <p class="transfer-panel__header">
            <label class="tilte">全部文章</label>
          </p>
          <div class="transfer-panel__body is-with-footer">
            <div class="transfer_ul_art queryDiv">
              <ul style="padding-left: 22px; padding-top: 15px;" class="ulList">
                <li
                  v-for="(item, index) in articleList.filter(obj => {
                    return obj.isHide == undefined;
                  })"
                  :key="item.ID"
                  :data-id="item.ID"
                  :data-index="index"
                >
                  <div class="ul-content" style="pointer-events: none;">
                    <img
                      :src="item.ImgUrl"
                      width="100%"
                      :alt="item.Title"
                      :title="item.Title"
                    />
                    <h5>{{ item.Title }}</h5>
                  </div>
                </li>
              </ul>
            </div>
          </div>
          <p class="transfer-panel__footer">
            <label style="margin-top: 10px;color: #999999;">我是有底线的---</label>
          </p>
        </div>
      </div>
    </template>
    <script>
    export default {
      data() {
        return {
          articleList: []
        };
      },
      created: function() {
      },
      methods: {
        ScreenData(e, type) {
          let _this = this;
          let target = e.target; //事件发生的元素
          let data = target.dataset; //获取集合数据
          const dataIndex = _this.articleList.findIndex(k => {
            return k.ID.match(data.id);
          });
          let DataList = _this.articleList;
          type == 1
            ? (DataList[dataIndex].isHide = true)
            : delete DataList[dataIndex].isHide;
          _this.$set(_this.articleList, dataIndex, DataList[dataIndex]);
        }
      },
      mounted() {
        let _this = this;
        _this.$nextTick(() => {
          /**监听div的滚动条是否到底*/
          const el = document.querySelector(".queryDiv");
          const offsetHeight = $(".queryDiv").height(); //el.offsetHeight;
          el.onscroll = () => {
            const scrollTop = el.scrollTop;
            const scrollHeight = el.scrollHeight;
            //console.log(offsetHeight, scrollTop, scrollHeight);
            if (offsetHeight + scrollTop - scrollHeight >= -1) {
              console.log("div到底了");
              // 需要执行的代码
            }
          };
        });
    
        //事件委托(右边框)
        document.querySelector(".ulList").addEventListener("click", function(e) {
          const len = _this.articleList.filter(obj => {
            return obj.isHide != undefined;
          });
          if (len.length >= 5) {
            _this.$message("最多只能选择5篇文章");
            return false;
          }
          _this.ScreenData(e, 1);
        });
        //左边框
        document
          .querySelector(".releaseArticle")
          .addEventListener("click", function(e) {
            _this.ScreenData(e, 0);
          });
      },
      components: {}
    };
    </script>
    <style scoped>
    .transfer-panel {
      border: 1px solid #ebeef5;
      border-radius: 4px;
      overflow: hidden;
      background: #fff;
      display: inline-block;
      vertical-align: middle;
       380px;
      max-height: 100%;
      box-sizing: border-box;
      position: relative;
    }
    
    .transfer-panel__header {
      height: 40px;
      line-height: 40px;
      background: #f5f7fa;
      margin: 0;
      padding-left: 15px;
      border-bottom: 1px solid #ebeef5;
      -webkit-box-sizing: border-box;
      box-sizing: border-box;
      color: #000;
    }
    .transfer-panel .transfer-panel__header .tilte .title_label span {
      position: absolute;
      right: 15px;
      color: #909399;
      font-size: 12px;
      font-weight: 400;
    }
    .transfer-panel__body {
      height: auto;
       auto;
    }
    .transfer-panel__footer {
      height: 40px;
      background: #fff;
      margin: 0;
      padding: 0;
      border-top: 1px solid #ebeef5;
      bottom: 0;
      left: 0;
       100%;
      text-align: center;
    }
    .transfer_ul_art {
      overflow-y: auto;
      height: 31.25rem;
    }
    .transfer_ul_art li {
       158px;
      border: 1px solid #ddd;
      float: left;
      margin: 0 15px 5px 0;
      list-style: none;
      position: relative;
    }
    
    .transfer_ul_art li img {
      height: 100px;
      overflow: hidden;
    }
    
    .transfer_ul_art li h5 {
      padding: 8px;
       100%;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
      border-top: 1px solid #eee;
      margin: 0;
    }
    
    .transfer_ul_art::-webkit-scrollbar {
      /*滚动条整体样式*/
       10px;
      /*高宽分别对应横竖滚动条的尺寸*/
      height: 1px;
    }
    
    .transfer_ul_art::-webkit-scrollbar-thumb {
      /*滚动条里面小方块*/
      border-radius: 10px;
      -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
      background: #535353;
    }
    
    .transfer_ul_art::-webkit-scrollbar-track {
      /*滚动条里面轨道*/
      -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
      border-radius: 10px;
      background: #ededed;
    }
    .checkbox__input {
      position: absolute;
      z-index: 14;
      top: 0;
      left: 0;
    }
    </style>
    View Code

    效果:

  • 相关阅读:
    JavaEE——SpringMVC(11)--拦截器
    JavaEE——SpringMVC(10)--文件上传 CommonsMultipartResovler
    codeforces 460A Vasya and Socks 解题报告
    hdu 1541 Stars 解题报告
    hdu 1166 敌兵布阵 解题报告
    poj 2771 Guardian of Decency 解题报告
    hdu 1514 Free Candies 解题报告
    poj 3020 Antenna Placement 解题报告
    BestCoder5 1001 Poor Hanamichi(hdu 4956) 解题报告
    poj 1325 Machine Schedule 解题报告
  • 原文地址:https://www.cnblogs.com/Mr-lin66/p/11912205.html
Copyright © 2011-2022 走看看