第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我想用來自api的數(shù)組替換我的本地數(shù)組,同時在javascript中保持相同的功能。

我想用來自api的數(shù)組替換我的本地數(shù)組,同時在javascript中保持相同的功能。

冉冉說 2022-08-18 16:06:34
我已經(jīng)實現(xiàn)了下面代碼段中的功能,可以拖動和交換本地照片,它就像一個魅力。但是,現(xiàn)在我想用這個url中的圖像替換我的本地數(shù)組 https://picsum.photos/v2/list?page=2&amp 同時仍然保持拖放功能。我怎樣才能做到這一點?Index.html(整代碼 css 和 javascript)(我假設(shè)解決方案看起來像這樣) const url = 'https://picsum.photos/v2/list?page=2&limit=9'; fetch(url) .then((response) => { return response.json(); }) .then( data => {...} 
查看完整描述

1 回答

?
UYOU

TA貢獻1878條經(jīng)驗 獲得超4個贊

您需要將函數(shù)更改為運算符,以便可以從 API 獲取圖像。根據(jù)您的需要映射數(shù)據(jù)。asyncawait


樣品:


(async function () {

  const url = 'https://picsum.photos/v2/list?page=2&limit=9';

  const response = await fetch(url).then((response) => response.json())

  const _imageLibrary = response.map(img => {

    img.image = img.download_url

    img.title = img.author

    return img

  })

  const _listedImageIds = _imageLibrary.map(({

    id

  }) => id)

})()

工作樣本:


<html>


<head>


  <title>Drag and Drop</title>

  <link href="https://fonts.googleapis.com/css?family=Roboto+Slab" rel="stylesheet">

  <style>

    body {

      background: rgb(255, 246, 231);

    }


    * {

      margin: 0;

      padding: 0;

      font-family: 'Roboto Slab', serif;

    }


    .dd-vc {

      position: relative;

      top: 50%;

      transform: translateY(-50%);

    }


    .dd-transition {

      transition: all 0.3s ease;

    }


    .dd-shadow {

      box-shadow: 0 0 3px 1px rgba(0, 0, 0, 0.3);

    }


    #dragDrop {

      width: 1000px;

      margin: 20px auto 0;

      position: relative;

    }


    .dd-slot {

      float: left;

      outline: 2px dashed rgba(54, 86, 132, 0.75);

      outline-offset: -15px;

      position: relative;

      pointer-events: none;

    }


    .dd-slot-num {

      text-align: center;

      color: rgba(0, 0, 0, 0.1);

      font-size: 40px;

      position: absolute;

      width: 100%;

    }


    .dd-item {

      position: absolute;

      left: 0;

      top: 0;

      box-sizing: border-box;

      padding: 10px;

      cursor: pointer;

    }


    .dd-item.dd-disabled {

      pointer-events: none;

      opacity: 0;

    }


    .dd-item.dd-selected {

      z-index: 20;

    }


    .dd-item-inner {

      background-repeat: no-repeat;

      background-size: cover;

      background-position: center;

      width: 100%;

      height: 100%;

      position: relative;

    }


    .dd-item-panel {

      width: 80%;

      height: 35px;

      background: #fff;

      position: absolute;

      left: 10%;

      bottom: -15px;

      z-index: 5;

    }


    .dd-item-title {

      font-size: 15px;

      color: #365684;

      text-align: center;

      line-height: 35px;

    }

  </style>


</head>


<body>


  <div id="dragDrop"></div>


  <script>

    (async function () {

      const url = 'https://picsum.photos/v2/list?page=2&amp;limit=9';

      const response = await fetch(url).then((response) => response.json())

      const _imageLibrary = response.map(img => {

        img.image = img.download_url

        img.title = img.author

        return img

      })

      const _listedImageIds = _imageLibrary.map(({

        id

      }) => id)


      var _doc = window.document;


      var _numOfImageSlots = 12,

        _numOfImagesPerRow = 3,

        _imageMarginBottom = 30;


      var _imageAspectWidth = 1920,

        _imageAspectHeight = 1080;


      var _imageSlots = [],

        _selectedImageElement = null,

        _originalImageSlot = null,

        _originalClickCoords = null,

        _lastTouchedSlotId = null;


      function init() {


        addImageSlots();

        drawImages();


        _doc.getElementById('dragDrop').addEventListener('mousemove', imageMousemove);


      }


      function addImageSlots() {


        var i = 0,

          len = _numOfImageSlots,

          item;


        var wrap = _doc.getElementById('dragDrop');


        for (; i < len; i++) {


          item = _doc.createElement('div');


          item.setAttribute('class', 'dd-slot');

          item.setAttribute('style', 'width:' + (100 / _numOfImagesPerRow) + '%;padding-bottom:' + ((100 /

              _numOfImagesPerRow) * (_imageAspectHeight / _imageAspectWidth)) + '%;margin-bottom:' +

            _imageMarginBottom + 'px;');


          item.innerHTML = '<p class="dd-slot-num dd-vc">' + (i + 1) + '</p>';


          wrap.appendChild(item);


        }


      }


      function drawImages() {


        var i = 0,

          len = _numOfImageSlots,

          item;


        var wrap = _doc.getElementById('dragDrop');


        var slot = _doc.getElementsByClassName('dd-slot')[0],

          bounds = slot.getBoundingClientRect(),

          itemWidth = bounds.width,

          itemHeight = bounds.height;


        var itemX,

          itemY;


        var imageId,

          image;


        for (; i < len; i++) {


          imageId = _listedImageIds[i] || -1;

          image = getImageById(imageId);


          itemX = (i % _numOfImagesPerRow) * itemWidth;

          itemY = Math.floor(i / _numOfImagesPerRow) * (itemHeight + _imageMarginBottom);


          item = _doc.createElement('div');


          item.setAttribute('class', 'dd-item dd-transition' + (imageId < 0 ? ' dd-disabled' : ''));

          item.setAttribute('data-image-id', imageId);

          item.setAttribute('style', 'width:' + itemWidth + 'px;height:' + itemHeight +

            'px;transform:translate3d(' +

            itemX + 'px,' + itemY + 'px,0);');

          item.innerHTML = '<div class="dd-item-inner dd-shadow" style="' + (image ? (

            'background-image:url(' +

            image.image + ')') : '') + '"><div class="dd-item-panel dd-shadow"><h3 class="dd-item-title">' + (

            image ? image.title : '') + '</h3></div></div>';


          wrap.appendChild(item);


          item.addEventListener('mousedown', imageMousedown);

          item.addEventListener('mouseup', imageMouseup);


          _imageSlots[i] = {

            width: itemWidth,

            height: itemHeight,

            x: itemX,

            y: itemY

          };


        }


      }


      function arrangeItems() {


        var i = 0,

          len = _listedImageIds.length,

          slot,

          ele;


        for (; i < len; i++) {


          slot = _imageSlots[i];

          ele = _doc.querySelector('[data-image-id="' + _listedImageIds[i] + '"]');


          ele.style.transform = 'translate3d(' + slot.x + 'px,' + slot.y + 'px,0)';


        }


      }


      function imageMousedown(event) {


        if (!_selectedImageElement) {


          _selectedImageElement = event.currentTarget;

          _originalClickCoords = {

            x: event.pageX,

            y: event.pageY

          };

          _originalImageSlot = getIndexOfImageId(_selectedImageElement.getAttribute('data-image-id'));


          _selectedImageElement.classList.add('dd-selected');

          _selectedImageElement.classList.remove('dd-transition');


        }


      }


      function imageMousemove(event) {


        if (_selectedImageElement) {


          var wrap = _doc.getElementById('dragDrop'),

            bounds = wrap.getBoundingClientRect(),

            left = bounds.left,

            top = bounds.top;


          var pageX = event.pageX,

            pageY = event.pageY;


          var clickX = pageX - left,

            clickY = pageY - top,

            hoverSlotId = getSlotIdByCoords({

              x: clickX,

              y: clickY

            });


          var ele = _selectedImageElement,

            imageId = ele.getAttribute('data-image-id'),

            index = _originalImageSlot,

            newIndex = getIndexOfImageId(imageId),

            x = _imageSlots[index].x,

            y = _imageSlots[index].y;


          var resultX = x + (pageX - _originalClickCoords.x),

            resultY = y + (pageY - _originalClickCoords.y);


          if (hoverSlotId != undefined && _lastTouchedSlotId != hoverSlotId) {


            _lastTouchedSlotId = hoverSlotId;


            _listedImageIds.splice(hoverSlotId, 0, _listedImageIds.splice(newIndex, 1)[0]);

            arrangeItems();


          }


          ele.style.transform = 'translate3d(' + resultX + 'px,' + resultY + 'px,0)';


        }


      }


      function imageMouseup() {


        _selectedImageElement.classList.remove('dd-selected');

        _selectedImageElement.classList.add('dd-transition');


        _selectedImageElement = null;

        _originalClickCoords = null;


        arrangeItems();


      }


      function getSlotIdByCoords(coords) {


        // Get the current slot being hovered over

        for (var id in _imageSlots) {


          var slot = _imageSlots[id];


          if (slot.x <= coords.x && coords.x <= slot.x + slot.width && slot.y <= coords.y && coords.y <= slot.y +

            slot

            .height)

            return id;


        }


      }


      function getImageById(id) {


        return _imageLibrary.find(function (image) {

          return image.id == id;

        });


      }


      function getIndexOfImageId(id) {


        var i = 0,

          len = _listedImageIds.length;


        for (; i < len; i++)

          if (_listedImageIds[i] == id)

            return i;


      }


      init();


    })();

  </script>


</body>


</html>


查看完整回答
反對 回復 2022-08-18
  • 1 回答
  • 0 關(guān)注
  • 106 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號