Главная » 2012 » Октябрь » 15 » Drag and drop на HTML5 (Скрипты для ucoz)
15.10.2012, 00:05

Drag and drop на HTML5




Уже было много примеров, показывающих, что новая версия HTML, HTML5, вбирает в себя все больше из JS и Flash. Вот вам еще один пример - всем известный эффект "Drag and drop" выполняемый на HTML5. Полностью отказаться от скриптов, однако код стал меньше, по сравнению со схожими примерами. ДЕМО прилагается.
Установка:
1. Создайте элемент <div>, в котором будут располагаться предметы для перетаскивания:
Code
<div id="boxA"
  ondragenter="return dragEnter(event)"
  ondrop="return dragDrop(event)"
  ondragover="return dragOver(event)">

  <div id="drag" draggable="true"
  ondragstart="return dragStart(event)"
  ondragend="return dragEnd(event)">Тащи меня</div>

  <div id="drag2" draggable="true"
  ondragstart="return dragStart(event)"
  ondragend="return dragEnd(event)">Тащи меня </div>

  <div id="drag3" draggable="true"
  ondragstart="return dragStart(event)"
  ondragend="return dragEnd(event)">тащи меня</div>

  </div>

элементы с id drag, drag2, drag3 можно перетаскивать.
2. Создайте зоны, куда можно вставиь эти элементы (у меня их 2):
Code
<div id="boxB"
  ondragenter="return dragEnter(event)"
  ondrop="return dragDrop(event)"
  ondragover="return dragOver(event)">
  </div>
<div id="boxC"
  ondragenter="return dragEnter(event)"
  ondrop="return dragDrop(event)"
  ondragover="return dragOver(event)">
  </div>

3. Перед </head> поставьте код скрипта и стили (стили настройте под себя):
Code
<style type="text/css">
#boxA, #boxB, #boxC {  
  float:left; width:165px; height:165px; padding:10px; margin:10px;  
}

#boxA { background-color: #474747; }
#boxB { background-color: #474747; }
#boxC { background-color: #474747; }

#drag, #drag2, #drag3 {
  width:30px; height:30px; padding:5px; margin:5px;
  -moz-user-select:none;
}
#drag { background-color: #e8e8e8;}
#drag2 { background-color: orange;}
#drag3 { background-color: purple; border:3px brown solid;}

</style>
<script type="text/javascript">
function dragStart(ev) {
  ev.dataTransfer.effectAllowed='move';
  //ev.dataTransfer.dropEffect='move';
  ev.dataTransfer.setData("Text", ev.target.getAttribute('id'));
  ev.dataTransfer.setDragImage(ev.target,0,0);
  return true;
}

function dragEnter(ev) {
  var idelt = ev.dataTransfer.getData("Text");
  return true;
}

function dragOver(ev) {
  var idelt = ev.dataTransfer.getData("Text");
  var id = ev.target.getAttribute('id');
  if( (id =='boxB' || id =='boxA') && (idelt == 'drag' || idelt=='drag2'))
  return false;
  else if( id =='boxC' && idelt == 'drag3')
  return false;
  else
  return true;
}

function dragEnd(ev) {
  ev.dataTransfer.clearData("Text");
  return true
}

function dragDrop(ev) {
  var idelt = ev.dataTransfer.getData("Text");
  ev.target.appendChild(document.getElementById(idelt));
  ev.stopPropagation();
  return false;  
}

</script>

Перевод на русский by sold93 специально для http://infoscript.ru
Материал взят с сайта infoscript.ru
Внимание! Копирование данного материала запрещено без указания ссылки на сайт Infoscript.ru
Источник/Автор: htmldrive.net
Категория: Скрипты uCoz | Просмотров: 1010 | Добавил: sold93 | Рейтинг: 5.0/1 |
Теги: на, Drop, HTML5, Drag, And
Всего комментариев: 7
1 Voker -Infoscript Team-  (15.10.2012 08:35)
Аватар пользователя
ДЕмо вроде не работает.

2 sold93 -Infoscript Team-  (15.10.2012 11:32)
Аватар пользователя
работает.

7 InfoDusha -Infoscript Team-  (15.10.2012 16:31)
Аватар пользователя
в хроме нет sad

+1   Спам
3 Voker -Infoscript Team-  (15.10.2012 13:12)
Аватар пользователя
В опере последней не работает.
в мозиле все гуд.

4 sold93 -Infoscript Team-  (15.10.2012 13:15)
Аватар пользователя
опера все больше и больше превращается в скоростной вариант эксплорера. демо я устанавливал и проверял именно в мозиле.

5 Sini26   (15.10.2012 13:56)
Аватар пользователя
тоже последняя опера тоже не работает, а мозиле работает

6 -=WaMpIr=-   (15.10.2012 14:05)
Аватар пользователя
Ну и до кучи добавлю что в последнем хроме тоже не работает.
P.S. Дааа проблем с совместимостью у HTML 5 будет ещё больше чем у CSS.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]