В графических интерфейсах пользователя компьютера перетаскивание — это жест указательного устройства , при котором пользователь выбирает виртуальный объект, «схватывая» его и перетаскивая в другое место или на другой виртуальный объект. В общем, его можно использовать для вызова многих видов действий или создания различных типов ассоциаций между двумя абстрактными объектами .
Как функция, поддержка перетаскивания не встречается во всем программном обеспечении , хотя иногда это быстрый и простой в освоении метод. Однако пользователям не всегда ясно, что элемент можно перетаскивать и отпускать, или какая команда выполняется при перетаскивании, что может снизить удобство использования. [1]
Основная последовательность перетаскивания следующая:
Перетаскивание требует больше физических усилий, чем перемещение того же указывающего устройства без удержания кнопок. Из-за этого пользователь не может двигаться так же быстро и точно во время перетаскивания (см. закон Фиттса ). Однако операции перетаскивания имеют преимущество в том, что они вдумчиво объединяют два операнда (объект для перетаскивания и место размещения) в одно действие. [2] Длительное перетаскивание (как в графическом дизайне) может напрягать руку, управляющую мышью.
Проблема дизайна возникает, когда одна и та же кнопка выбирает и перетаскивает элементы. Неточное движение может привести к попытке выбора объекта для регистрации в качестве движения перетаскивания.
Другая проблема заключается в том, что цель перетаскивания может быть скрыта под другими объектами. Пользователю пришлось бы остановить перетаскивание, сделать видимыми и источник, и цель и начать заново. В классической Mac OS панель меню в верхней части экрана служила универсальной целью «отмены перетаскивания». Эта проблема была решена в Mac OS X с введением Exposé .
Перетаскивание, в то время называвшееся щелчком и перетаскиванием , использовалось в оригинальном Macintosh для управления файлами (например, для копирования их между дисками [3] или папками [4] ). В System 7 была добавлена возможность открывать документ в приложении, перетаскивая значок документа на значок приложения.
Apple добавила «Macintosh Drag and Drop» в System 7.5 , расширив «щелчок и перетаскивание» до обычных операций буфера обмена, таких как копирование или перемещение текстового содержимого внутри документа. Содержимое также можно было перетаскивать в файловую систему для создания «файла вырезки», который затем можно было сохранять и использовать повторно. Файлы также можно было перетаскивать в окна приложений, например, чтобы вложить документ в электронное письмо или добавить изображение в документ текстового процессора.
На протяжении большей части своей истории Mac OS использовала однокнопочную мышь , при этом кнопка покрывала большую часть верхней поверхности мыши. Это может смягчить эргономические проблемы удержания кнопки нажатой во время перетаскивания.
Workplace Shell OS /2 широко использует перетаскивание с помощью вторичной кнопки мыши , оставляя основную для выбора и щелчка. Его использование, как и других расширенных функций Common User Access , отличает собственные приложения OS/2 от платформенно-независимых портов.
Рабочий проект спецификации HTML5 включает поддержку перетаскивания. [5] HTML5 поддерживает различные виды функций перетаскивания, включая:
В зависимости от необходимого действия можно использовать один из вышеперечисленных типов. Обратите внимание, что когда элемент HTML перетаскивается для перемещения его текущей позиции, его идентификатор отправляется родительскому элементу назначения; поэтому он отправляет текст и может рассматриваться как первая группа.
Веб-приложение электронной почты Gmail от Google поддерживает функцию перетаскивания изображений и вложений в новейшем браузере Google Chrome и Safari (5.x) от Apple . Google Images позволяет пользователям перетаскивать файлы изображений в браузер для выполнения обратного поиска изображений .
Интерфейсы с сенсорным экраном также поддерживают функцию перетаскивания или, точнее, долгое нажатие с последующим перетаскиванием, например, на домашних экранах iPhone или Android .
В iOS 11 реализована функция перетаскивания, которая позволяет пользователю касаться элементов (и нажимать другими пальцами, чтобы перетаскивать больше) в приложении или между приложениями на iPad . [6] На iPhone эта функция доступна только в том же приложении, в котором пользователь начал перетаскивание. [7]
Перетаскивание считается важным подходом к построению программ во многих системах разработки конечных пользователей . В отличие от более традиционных текстовых языков программирования, многие языки программирования конечных пользователей основаны на визуальных компонентах, таких как плитки или значки, которыми конечные пользователи манипулируют с помощью интерфейсов перетаскивания. AgentSheets , [8] среда программирования для детей, представила современное понятие программирования блоков перетаскивания, предоставляя 4 основных возможности: 1) блоки, которые могут компоноваться конечным пользователем, 2) блоки могут редактироваться конечным пользователем, 3) блоки могут быть вложенными для представления древовидных структур, 4) блоки расположены геометрически для определения синтаксиса. Перетаскивание также присутствует во многих программах редактирования шейдеров для графических инструментов, таких как Blender . [9] Перетаскивание также присутствует в некоторых движках видеоигр, включая Unreal Engine , GameMaker Studio , Construct 2 и, с расширением, Unity .
Типичным примером является перетаскивание значка на виртуальном рабочем столе на специальный значок корзины для удаления файла .
Дополнительные примеры включают в себя: