Отличия от HTML5 Drag’n’Drop
В современном стандарте HTML5 есть поддержка Drag’n’Drop при помощи специальных событий.
Эти события поддерживаются всеми современными браузерами, и у них есть свои интересные особенности, например, можно перетащить файл в браузер, так что JS получит доступ к его содержимому. Они заслуживают отдельного рассмотрения.
Но в плане именно Drag’n’Drop у них есть существенные ограничения. Например, нельзя организовать перенос «только по горизонтали» или «только по вертикали». Также нельзя ограничить перенос внутри заданной зоны. Есть и другие интерфейсные задачи, которые такими встроенными событиями нереализуемы.
Поэтому здесь мы будем рассматривать Drag’n’Drop при помощи событий мыши.
Рассматриваемые приёмы, вообще говоря, применяются не только в Drag’n’Drop, но и для любых интерфейсных взаимодействий вида «захватить – потянуть – отпустить».
Алгоритм Drag’n’Drop
Основной алгоритм Drag’n’Drop выглядит так:
- Отслеживаем нажатие кнопки мыши на переносимом элементе при помощи события .
- При нажатии – подготовить элемент к перемещению.
- Далее отслеживаем движение мыши через и передвигаем переносимый элемент на новые координаты путём смены и .
- При отпускании кнопки мыши, то есть наступлении события – остановить перенос элемента и произвести все действия, связанные с окончанием 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
Часть песни | Длина |
---|---|
Вступление 1 | 8 тактов |
Вступление 2 | 8 тактов |
Куплет 1 | 16 тактов |
Припев 1 | 8 тактов |
Постхорус 1 | 3 тактов |
Куплет 2 | 16 тактов |
Припев 2 | 8 такта |
Постхорус 2 | 3 такта |
Проигрыш | 8 тактов |
Билд-ап | 8 тактов |
Дроп (инструментальный куплет) | 8 тактов |
Концовка (припев + постхорус) | 11 тактов |
Заключение
Популярные и электронные песни строятся по определенным правилам, которые делают звучание композиций привычным для слушателя. Эти правила применяются уже не одно десятилетие, а ломать то, что и так работает — дело неблагодарное и даже глупое.
Типовая аранжировка — это не всегда вред для песни, ведь иногда простота и предсказуемость идут только на пользу. Тем не менее, не бойтесь нарушать правила и выходить за рамки принятых норм — никогда не знаешь, к какому результату это приведет.
Существует огромное количество отличных песен с типовыми и нестандартными аранжировками, но справедливо и обратное правило
Всегда думайте о том, как сделать интереснее и лучше саму песню, а уж какая у нее будет структура и аранжировка — не так и важно
Правильное позиционирование
В примерах выше мяч позиционируется в центре под курсором мыши:
Если поставить ровно в , то мячик прилипнет верхним-левым углом к курсору мыши. Будет некрасиво. Поэтому мы сдвигаем его на половину высоты/ширины, чтобы был центром под мышью. Уже лучше.
Но не идеально. В частности, в самом начале переноса, особенно если мячик «взят» за край – он резко «прыгает» центром под курсор мыши.
Для правильного переноса необходимо, чтобы изначальный сдвиг курсора относительно элемента сохранялся.
Где захватили, за ту «часть элемента» и переносим:
Когда человек нажимает на мячик – курсор сдвинут относительно левого-верхнего угла мяча на расстояние, которое мы обозначим . И нужно при переносе сохранить этот сдвиг.
Получить значения легко: достаточно вычесть из координат курсора левую-верхнюю границу мячика, полученную при помощи функции .
При Drag’n’Drop мы везде используем координаты относительно документа, так как они подходят в большем количестве ситуаций.
Конечно же, не проблема перейти к координатам относительно окна, если это понадобится. Достаточно использовать , для определения координат и .
Далее при переносе мяча мы располагаем его с учётом сдвига, то есть вот так:
Итоговый код с правильным позиционированием:
В действии (внутри ифрейма):
Различие особенно заметно, если захватить мяч за правый-нижний угол. В предыдущем примере мячик «прыгнет» серединой под курсор, в этом – будет плавно переноситься с текущей позиции.
Как работают мышцы при выполнении дроп-сета
Представьте себе, что вы поднимаете на бицепс 40-килограммовую штангу. Десятый повтор уже трудно выполнять, 11-й дался очень тяжело, а 12-й довел вас до предела. 13-й выполнить уже просто невозможно, хоть застрелись. Вы доработались до «честного» отказа. Но если о штанги снять 15-20 процентов, вы сможете сделать еще несколько повторений.
Рассмотрим, что происходит немного подробнее. Если после 12 повторений вы достигли мышечного отказа, это еще не абсолютный отказ. Его можно назвать позитивным, и мышцы готовы продолжать подход, если вес будет уменьшен. Дело в том, что обычный, до отказа выполняемый подход не задействует все мышечные волокна нагружаемой группы мышц. Используется только требуемое количество волокон, которые поднимают нужное количество раз определенный вес.
Когда вы уменьшаете вес и продолжаете выполнять упражнение, то при этом привлекаете к работе все большее количество резервных волокон мышц. Благодаря дроп-сетам активизируются «неподатливые» мышечные волокна, которые начинают расти, чего при выполнении обычного подхода из 6-12 повторений добиться практически невозможно.
Доказано, что ведение дневника тренировок позволяет достичь поставленные цели в 2-3 раза быстее. Специалистами iq-body.ru разработан удобный дневник тренировок и питания формата всё-в-одном. Доступная цена, функциональный дизайн. Купите дневник тренировок и получайте от тренировок больше удовольствия! Посмотреть на дневник тренировок
Итого
Мы рассмотрели «минимальный каркас» .
Его компоненты:
- События → → .
- Передвижение с учётом изначального сдвига .
- Отмена действия браузера по событию .
На этой основе можно сделать очень многое.
- При можно обработать окончание переноса, произвести изменения в данных, если они нужны.
- Во время самого переноса можно подсвечивать элементы, над которыми проходит элемент.
- При обработке событий и можно использовать делегирование, так что одного обработчика достаточно для управления переносом в зоне с сотнями элементов.
Это и многое другое мы рассмотрим в статье про Drag’n’Drop объектов.