реализация компонента для щелчка перетаскивания

#javascript #reactjs

#javascript #reactjs

Вопрос:

Я хотел бы реализовать этот компонент в React показать изображениепо ссылке ниже http://uxkids.com/portfolio/the-new-apprentice-software-for-treasury /

Как реализовано перетаскивание щелчок и как вы снимаете маску с части изображения? Под ним есть 2 изображения

 <div className="parent">
   <div className="dragControl" id="bar"></div>
   <img src="image1.jpg" />
   <img src="image2.jpg" />
</div>
  

Как вы создаете эту маску, чтобы разоблачить 2 изображения? Они выглядят так, как будто оба являются абсолютными позициями, а затем медленно снимаются.

Я просто хотел узнать часть HTML / CSS, поскольку это мешает мне реализовать код React.

Ответ №1:

Однажды мне приходилось делать аналогичный эффект только с помощью jQuery и простого HTML. Вот воссоздание, которое я собрал в codepen.

Хитрость заключается в том, чтобы иметь два абсолютно расположенных изображения в родительском контейнере с событием щелчка на родительском. Внутри события щелчка вам нужно получить значение положения мыши. Поместите ползунок-дескриптор в x-координату мыши, и тогда ширина верхнего изображения должна быть равна ширине x-координаты мыши минус смещение влево родительского элемента:

  var offset = container.offset().left;
 var x = e.clientX - offset;
  

Затем присвоение верхнему изображению overflow: hidden значения создаст эффект покрытия и раскрытия нижнего изображения по мере изменения ширины контейнера-оболочки изображения.

Основная проблема, с которой я столкнулся, заключалась в том, что попытка динамического изменения размера тега img не сработала. Таким образом, решение заключалось в том, чтобы обернуть каждое изображение в отдельный контейнер.

Вам также необходимо добавить это условие в прослушиватель событий, чтобы проверить, находится ли координата x мыши в родительском контейнере, в противном случае дескриптор ползунка будет скользить за пределы изображения:

    if (x < 700 amp;amp; x > 0) {
    // change css here
   }
  

еще одна вещь, о которой следует упомянуть, я добавил эти значения css к оболочкам изображений:

 pointer-events: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -o-user-select: none;
  user-select: none;
  

Это остановит браузер от создания мерцающего синего прямоугольника, когда мышь щелкает и перетаскивает изображение, чтобы перетащить его по экрану.

Я надеюсь, что это решит вашу проблему или, по крайней мере, наставит вас на правильный путь. Счастливого Хэллоуина!