как перетащить <div> через страницу

0

Я разрабатываю веб-приложение, где я пытаюсь имитировать всплывающее окно с использованием тегов для целей стиля. Я сделал это с помощью этого javascript-кода:

<script>
  function handleClick(url){
      document.getElementById("results").style.display = 'block';
      document.getElementById("about").innerHTML='<object type="text/html" data="'+url+'" ></object>';
      }
  function cleanDiv() {
      document.getElementById("results").style.display = 'none';
      document.getElementById("about").innerHTML=' ';
  }
  </script>

связанный с этим html-кодом:

<section class="about" id="results">
    <div align="right"><a href="#" onclick="cleanDiv()">Fechar</a></div>
    <div id="about" algin="center"></div>
  </section>

и стиль находится в моем файле css.

У меня почти все, что я хочу, но я бы хотел, чтобы это "всплывающее окно" не фиксировалось в уникальной позиции на странице, и пользователь мог перемещать его с помощью мыши.

Кто-то знает, как сделать это только с помощью javascript/html/css?

  • 1
    только javascript / html / css? Я думаю, что вы ничего не пропустили ..
  • 0
    Вы должны предоставить ссылку jsFiddle или JSbin, чтобы получить лучшую помощь.
Теги:

2 ответа

0
Лучший ответ

После большего поиска я закончил этот код, с сайта http://waseemblog.com/42/movable-div-using-javascript.html

HTML:

<section class="about" id="results" style="left: 183px; top: 111px;" onMouseDown="dragStart(event, 'results');">
    <div align="right"><a href="#" class="classname" onclick="cleanDiv()">X</a></div>
    <div id="content" align="center"></div>
  </section>

JavaScript:

function getID(id)
{
    return document.getElementById(id);
}

// Global object to hold drag information.
var dragObj = new Object();

function dragStart(event, id) {
  var x, y;
  dragObj.elNode = getID(id);
  // Get cursor position with respect to the page.
  try {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  catch (e) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }
  // Save starting positions of cursor and element.
  dragObj.cursorStartX = x;
  dragObj.cursorStartY = y;
  dragObj.elStartLeft  = parseInt(dragObj.elNode.style.left, 10);
  dragObj.elStartTop   = parseInt(dragObj.elNode.style.top,  10);
  if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
  if (isNaN(dragObj.elStartTop))  dragObj.elStartTop  = 0;
  // Capture mousemove and mouseup events on the page.
  try {
    document.attachEvent("onmousemove", dragGo);
    document.attachEvent("onmouseup",   dragStop);
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  catch (e) {
    document.addEventListener("mousemove", dragGo,   true);
    document.addEventListener("mouseup",   dragStop, true);
    event.preventDefault();
  }
}

function dragGo(event) {
 var x, y;
 // Get cursor position with respect to the page.
 try  {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  catch (e) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }
  // Move drag element by the same amount the cursor has moved.
  var drLeft = (dragObj.elStartLeft + x - dragObj.cursorStartX);
  var drTop = (dragObj.elStartTop  + y - dragObj.cursorStartY);
  if (drLeft > 0)
  {
     dragObj.elNode.style.left = drLeft  + "px";
  }
  else
  {
    dragObj.elNode.style.left = "1px";
  }
  if (drTop > 0)
  {
     dragObj.elNode.style.top  = drTop + "px";
  }
  else
  {
    dragObj.elNode.style.top  = "1px";
  }
  try {
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  catch(e){
    event.preventDefault();
  }
}

function dragStop(event) {
  // Stop capturing mousemove and mouseup events.
  try {
    document.detachEvent("onmousemove", dragGo);
    document.detachEvent("onmouseup",   dragStop);
  }
  catch (e) {
    document.removeEventListener("mousemove", dragGo,   true);
    document.removeEventListener("mouseup",   dragStop, true);
  }
}

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

0

Вы ищете HTML5 draggable атрибут и события. Сделайте элемент перетаскиваемым, установив draggable="true" и ondragstart="dragElem(event)". Затем напишите свой код в function dragElem(ev) { }. См. W3Schools

  • 0
    этот параметр "перетаскиваемый", где я должен его установить? В css? В HTML? если я просто установлю это, мне действительно понадобится функция dragElem? Если да, что я должен обрабатывать в этой функции?
  • 0
    @KleberMota: это атрибут в HTML для элемента, который вы хотите перетащить. Пожалуйста, ознакомьтесь с некоторыми из уроков и попробуйте несколько вещей. Я не буду давать вам точные детали реализации, я просто указываю вам в правильном направлении

Ещё вопросы

Сообщество Overcoder
Наверх
Меню