Как правильно исполнить Drop

Отличия от HTML5 Drag’n’Drop

В современном стандарте HTML5 есть поддержка Drag’n’Drop при помощи специальных событий.

Эти события поддерживаются всеми современными браузерами, и у них есть свои интересные особенности, например, можно перетащить файл в браузер, так что JS получит доступ к его содержимому. Они заслуживают отдельного рассмотрения.

Но в плане именно Drag’n’Drop у них есть существенные ограничения. Например, нельзя организовать перенос «только по горизонтали» или «только по вертикали». Также нельзя ограничить перенос внутри заданной зоны. Есть и другие интерфейсные задачи, которые такими встроенными событиями нереализуемы.

Поэтому здесь мы будем рассматривать Drag’n’Drop при помощи событий мыши.

Рассматриваемые приёмы, вообще говоря, применяются не только в Drag’n’Drop, но и для любых интерфейсных взаимодействий вида «захватить – потянуть – отпустить».

Алгоритм Drag’n’Drop

Основной алгоритм Drag’n’Drop выглядит так:

  1. Отслеживаем нажатие кнопки мыши на переносимом элементе при помощи события .
  2. При нажатии – подготовить элемент к перемещению.
  3. Далее отслеживаем движение мыши через и передвигаем переносимый элемент на новые координаты путём смены и .
  4. При отпускании кнопки мыши, то есть наступлении события – остановить перенос элемента и произвести все действия, связанные с окончанием Drag’n’Drop.

В следующем примере эти шаги реализованы для переноса мяча:

Если запустить этот код, то мы заметим нечто странное. При начале переноса мяч «раздваивается» и переносится не сам мяч, а его «клон».

Это можно увидеть в действии внутри ифрейма:

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

Это потому, что браузер имеет свой собственный Drag’n’Drop, который автоматически запускается и вступает в конфликт с нашим. Это происходит именно для картинок и некоторых других элементов.

Его нужно отключить:

Теперь всё будет в порядке.

В действии (внутри ифрейма):

Ещё одна особенность правильного Drag’n’Drop – событие отслеживается на , а не на .

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

Однако, на самом деле мышь во время переноса не всегда над мячом.

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

Вот почему мы должны отслеживать на всём .

Правила применения дроп-сетов

Предлагаем вам несколько полезных советов, с помощью которых можно добиться интенсивности использования дроп-сетов:

Минимум отдыха

Между сменой веса обычно проходит от нуля до десяти секунд. Даже делая тяжелые дроп-сеты, необходимо отдыхать очень короткое время. Сокращение промежутков времени между изменениями веса позволяет дроп-сеты сделать более эффективными и интенсивными.

Подготовьте оборудование

Для быстрого перехода от большого веса к уменьшенному необходимо правильно подготовить все оборудование для упражнения. Например, штангу надо нагружать не большими дисками, а меньшими, весом по 5 или по 10 килограммов. Собираясь делать с гантелями тройные топ-сеты, все три пары гантелей надо подготовить и выложить заранее.

Снижайте вес дважды

Можно снижать вес столько раз, сколько вам захочется, но существует точка «убывающей отдачи», и если вы ее достигнете, продолжать повторения будет просто неэффективно. Поэтому из всех видов дроп-сетов наиболее распространены тройные, где работа ведется с тремя разными весами.

Держитесь в диапазоне от 6 до 12 повторений

Работа в диапазоне от 6 до 12 повторений в бодибилдинге является наиболее продуктивной, поэтому от этого правила не следует отступать и при выполнении дроп-сетов. Работая с целью поддержания силы и ее развития, идеальным окажется диапазон от четырех повторений до шести. При желании получить чистый прирост объема мышц, лучше придерживаться количества повторений от восьми до двенадцати. Для рельефности и детализации мышц можно поднимать планку до 15-20 повторений, особенно во время последнего дроп-сета.

Используйте максимальный вес

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

Умеренно используйте дроп-сеты

Поскольку дроп-сеты являются в бодибилдинге одной из наиболее интенсивных техник, применение их требует осторожности и здравого смысла. Используя их все время, вы быстро перетренируетесь и доведете себя до полного изнеможения

Лучший график использования дроп-сетов – 3:1, то есть после выполнения в упражнении трех обычных подходов можно за ними выполнить один дроп-сет. Обычный последний поход может быть при этом заменен на дроп-сет. В каждом из упражнений делать дроп-сеты совершенно не обязательно: на группу мышц достаточно лишь одного. Можно выбрать из группы одно упражнение, лучше всего, конечно, базовое, и превратите последний подход в дроп-сет.

Выводы

Вы можете использовать в своей тренировочной программе десятки особо эффективных методов, но если в нее входит хотя бы одна техника, связанная с применением дроп-сетов, этого непременно окажется достаточным для того, чтобы вызвать серьезный рост мышц и добиться его за очень короткий промежуток времени. Можно не просто воспользоваться проверенным Арнольдом методом, предусматривающим при «подъемах на бицепс» сбрасывание со штанги дисков, а испытать некоторые из разнообразных новейших методик. Результат вас наверняка удивит и порадует.

Ну и в заключение посмотрите, как работает Рич Пана на тренировках с дроп-сетами:

Цели переноса (droppable)

В предыдущих примерах мяч можно было бросить просто где угодно в пределах окна. В реальности мы обычно берём один элемент и перетаскиваем в другой. Например, «файл» в «папку» или что-то ещё.

Абстрактно говоря, мы берём перетаскиваемый (draggable) элемент и помещаем его в другой элемент «цель переноса» (droppable).

Нам нужно знать:

  • куда пользователь положил элемент в конце переноса, чтобы обработать его окончание
  • и, желательно, над какой потенциальной целью (элемент, куда можно положить, например, изображение папки) он находится в процессе переноса, чтобы подсветить её.

Решение довольно интересное и немного хитрое, давайте рассмотрим его.

Какой может быть первая мысль? Возможно, установить обработчики событий на элемент – потенциальную цель переноса?

Но это не работает.

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

Структура песни The Chemical Brothers — Go

«Go» — первый сингл восьмого студийного альбома The Chemical Brothers «Born In The Echoes». Отличная аранжировка, совмещающая элементы популярной и электронной музыки, сочный вокал Q-Tip (настоящее имя — Камаль ибн Джон Фарид) и яркие мелодии превратили песню в один из сильнейших хитов 2015 года. Дополнительной популярности песне придал видеоклип, снятый французом Мишелем Гондри.

Песня написана в тональности Ре минор, темп — 120 ударов в минуту, размер — 4/4.

0:00. Вступление

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

В самом конце вступления в песне появляется голос Q-Tip, проговаривающий фразу «Can’t think. Can’t sleep. Can’t breathe».

0:32. Куплет 1

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

На протяжении 16 тактов куплета аранжировка постепенно наращивает напряжение, приводя слушателя к припеву.

1:04. Припев 1 и постхорус

Припев начинается с напева на сильную долю, который подчеркивается ярким синтезаторным хуком. Длительность самого припева — 8 тактов.

В конце припева The Chemical Brothers использовали прием, аналогичный тому, что мы видели в битловской «Back in the U.S.S.R.» — использование короткого постхоруса с повторением последней строчки припева («We’re only here to make you…»).

Выкрик «Go!» дает начало следующей секции песни — трехтактовому постхорусу, плавно ведущему нас к следующему куплету. Таким образом, в сумме припев составляет 11 тактов.

1:26. Куплет 2

Следующие 27 тактов полностью идентичны первой половине композиции. Второй куплет повторяет структуру первого, затем плавно переходит во второй припев и оканчивается коротким постхорусом.

2:20. Проигрыш

Очередной выкрик «Go!» после второго постхоруса приводит нас в новую часть композиции — проигрыш. Длительность проигрыша — восемь тактов.

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

2:44. Билд-ап

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

3:00. Дроп

В дропе напряжение музыки спадает. С музыкальной точки зрения, перед слушателями появляется еще один инструментальный куплет длительностью 8 тактов. Разница заключается только в отсутствии вокала.

3:16. Концовка

Песня завершается еще одним припевом и трехтактовым постхорусом: те же инструменты, те же мелодические линии и ходы.

Итоговая структура песни The Chemical Brothers — Go

Часть песниДлина
Вступление 18 тактов
Вступление 28 тактов
Куплет 116 тактов
Припев 18 тактов
Постхорус 13 тактов
Куплет 216 тактов
Припев 28 такта
Постхорус 23 такта
Проигрыш8 тактов
Билд-ап8 тактов
Дроп
(инструментальный куплет)
8 тактов
Концовка
(припев + постхорус)
11 тактов

Заключение

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

Типовая аранжировка — это не всегда вред для песни, ведь иногда простота и предсказуемость идут только на пользу. Тем не менее, не бойтесь нарушать правила и выходить за рамки принятых норм — никогда не знаешь, к какому результату это приведет.

Существует огромное количество отличных песен с типовыми и нестандартными аранжировками, но справедливо и обратное правило

Всегда думайте о том, как сделать интереснее и лучше саму песню, а уж какая у нее будет структура и аранжировка — не так и важно

Правильное позиционирование

В примерах выше мяч позиционируется в центре под курсором мыши:

Если поставить ровно в , то мячик прилипнет верхним-левым углом к курсору мыши. Будет некрасиво. Поэтому мы сдвигаем его на половину высоты/ширины, чтобы был центром под мышью. Уже лучше.

Но не идеально. В частности, в самом начале переноса, особенно если мячик «взят» за край – он резко «прыгает» центром под курсор мыши.

Для правильного переноса необходимо, чтобы изначальный сдвиг курсора относительно элемента сохранялся.

Где захватили, за ту «часть элемента» и переносим:

  1. Когда человек нажимает на мячик – курсор сдвинут относительно левого-верхнего угла мяча на расстояние, которое мы обозначим . И нужно при переносе сохранить этот сдвиг.

    Получить значения легко: достаточно вычесть из координат курсора левую-верхнюю границу мячика, полученную при помощи функции .

    При Drag’n’Drop мы везде используем координаты относительно документа, так как они подходят в большем количестве ситуаций.

    Конечно же, не проблема перейти к координатам относительно окна, если это понадобится. Достаточно использовать , для определения координат и .

  2. Далее при переносе мяча мы располагаем его с учётом сдвига, то есть вот так:

Итоговый код с правильным позиционированием:

В действии (внутри ифрейма):

Различие особенно заметно, если захватить мяч за правый-нижний угол. В предыдущем примере мячик «прыгнет» серединой под курсор, в этом – будет плавно переноситься с текущей позиции.

Как работают мышцы при выполнении дроп-сета

Представьте себе, что вы поднимаете на бицепс 40-килограммовую штангу. Десятый повтор уже трудно выполнять, 11-й дался очень тяжело, а 12-й довел вас до предела. 13-й выполнить уже просто невозможно, хоть застрелись. Вы доработались до «честного» отказа. Но если о штанги снять 15-20 процентов, вы сможете сделать еще несколько повторений.

Рассмотрим, что происходит немного подробнее. Если после 12 повторений вы достигли мышечного отказа, это еще не абсолютный отказ. Его можно назвать позитивным, и мышцы готовы продолжать подход, если вес будет уменьшен. Дело в том, что обычный, до отказа выполняемый подход не задействует все мышечные волокна нагружаемой группы мышц. Используется только требуемое количество волокон, которые поднимают нужное количество раз определенный вес.

Когда вы уменьшаете вес и продолжаете выполнять упражнение, то при этом привлекаете к работе все большее количество резервных волокон мышц. Благодаря дроп-сетам активизируются «неподатливые» мышечные волокна, которые начинают расти, чего при выполнении обычного подхода из 6-12 повторений добиться практически невозможно.

Доказано, что ведение дневника тренировок позволяет достичь поставленные цели в 2-3 раза быстее. Специалистами iq-body.ru разработан удобный дневник тренировок и питания формата всё-в-одном. Доступная цена, функциональный дизайн. Купите дневник тренировок и получайте от тренировок больше удовольствия! Посмотреть на дневник тренировок

Итого

Мы рассмотрели «минимальный каркас» .

Его компоненты:

  1. События → → .
  2. Передвижение с учётом изначального сдвига .
  3. Отмена действия браузера по событию .

На этой основе можно сделать очень многое.

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

Это и многое другое мы рассмотрим в статье про Drag’n’Drop объектов.

Поделитесь в социальных сетях:vKontakteFacebookTwitter
Напишите комментарий