Всплывающий div от наведения изображения из функции javascript

поэтому я работал над чем-то на стороне, и я пытался создать всплывающее окно масштабирования (div), используя функцию JavaScript на этой странице: https://www.w3schools.com/howto/howto_js_image_zoom.asp

Я попробовал несколько вещей и посмотрел здесь на многие вопросы, но не смог понять. Я также могу вставить сюда код, если необходимо, или дополнительные объяснения того, что я пытаюсь сделать. Любые предложения будут ценны!

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

Christopher M Miller 27.06.2018 20:12

@ChristopherMMiller что-то вроде этого: jsfiddle.net/gb0xcuwz/5, но я хочу, чтобы результирующее изображение было всплывающим div, когда я наводил курсор на исходное изображение

ski11s 27.06.2018 20:23

Что вы имеете в виду под «всплывающим окном»?

gforce301 27.06.2018 20:34

@ gforce301, поэтому функция принимает идентификатор изображения и идентификатор div, а идентификатор div - это версия исходного изображения для перемещения мыши. Я хочу, чтобы версия div была всплывающим окном увеличенной области, когда я наводил курсор на исходное изображение.

ski11s 27.06.2018 20:36
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
330
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обновлять:

http://jsfiddle.net/gb0xcuwz/23/ Просто добавил немного css (который не требует пояснений)

(Надеюсь, это то, что вы хотели)

Старый ответ:

(сохраняя его на случай, если кто-то захочет)

Итак, вы указали это: http://jsfiddle.net/gb0xcuwz/5 в комментарии.

Я внес некоторые изменения, основанные на методе проверки и испытания (это что за фраза?), И придумал следующее: http://jsfiddle.net/gb0xcuwz/16/

Вот и фрагмент кода:

function imageZoom(imgID, resultID) {
    var img, lens, result, cx, cy;
    img = document.getElementById(imgID);
    result = document.getElementById(resultID);
    //create lens:
    lens = document.createElement("img");
    lens.setAttribute("class", "img-zoom-lens");
    //insert lens:
    img.parentElement.insertBefore(lens, img);
    //calculate the ratio between result DIV and lens:
    cx = 300 / lens.offsetWidth;
    cy = 300 / lens.offsetHeight;
    //set background properties for the result DIV:
    lens.style.backgroundImage = "url('" + img.src + "')";
    lens.style.backgroundSize = (img.width * cx) + "px " + (img.height * cy) + "px";
    //execute a function when someone moves the cursor over the image, or the lens:
    lens.addEventListener("mousemove", moveLens);
    img.addEventListener("mousemove", moveLens);
    //and also for touch screens:
    lens.addEventListener("touchmove", moveLens);
    img.addEventListener("touchmove", moveLens);


    //img.addEventListener("mouseenter", result);
    function moveLens(e) {
      var pos, x, y;
      //prevent any other actions that may occur when moving over the image:
      e.preventDefault();
      //get the cursor's x and y positions:
      pos = getCursorPos(e);
      //calculate the position of the lens:
      x = pos.x - (lens.offsetWidth / 2);
      y = pos.y - (lens.offsetHeight / 2);
      //prevent the lens from being positioned outside the image:
      if (x > img.width - lens.offsetWidth) {x = img.width - lens.offsetWidth;}
      if (x < 0) {x = 0;}
      if (y > img.height - lens.offsetHeight) {y = img.height - lens.offsetHeight;}
      if (y < 0) {y = 0;}
      //set the position of the lens:
      lens.style.left = x + "px";
      lens.style.top = y + "px";
      //display what the lens "sees":
      lens.style.backgroundPosition = "-" + (x * cx + lens.offsetWidth) + "px -" + (y * cy + lens.offsetHeight) + "px";
    }
    function getCursorPos(e) {
      var a, x = 0, y = 0;
      e = e || window.event;
      //get the x and y positions of the image:
      a = img.getBoundingClientRect();
      //calculate the cursor's x and y coordinates, relative to the image:
      x = e.pageX - a.left;
      y = e.pageY - a.top;
      //consider any page scrolling:
      x = x - window.pageXOffset;
      y = y - window.pageYOffset;
      return {x : x, y : y};
    }

}
document.addEventListener("DOMContentLoaded", function(){
    imageZoom("myimage", "myresult");
})
* {box-sizing: border-box;}

  
    
    .img-zoom-container {
      position: relative;
    }
    
    
    .img-zoom-lens {
      position: absolute;
      border: 3px solid #A9A9A9;
      width: 100px;
      height: 100px;
    }
   
  <body>

    <h1>Picture</h1>

    <p>Mouse over the image:</p>

    <div class = "img-zoom-container">

      <img id = "myimage" src = "https://i.imgur.com/50dDbmr.jpg"  width = "300" height = "200">
    </div>

  </body>

Спасибо за ваш ответ! Я действительно искал что-то вроде этого, где выскакивает другое окно: starplugins.com/cloudzoom/examples#

ski11s 27.06.2018 20:49

Другие вопросы по теме