Как плагин Emmet помогает ускорить работу с программным кодом / Хабр
Frontend-разработчик Евгений Самойлов рассказывает, как сократить время написания рутинной разметки за счет преобразования простых аббревиатур в полноценные блоки кода.
Что такое Emmet
Emmet — ранее известный как Zen Coding — набор плагинов для текстовых редакторов, которые помогают ускорить написание кода HTML и CSS. Проект начал Вадим Макеев в 2008 году, а с 2009 года и по настоящее время его активно разрабатывает Сергей Чикуёнок и сообщество пользователей Zen Coding.
Писать HTML-код и вводить множество тегов, кавычек и скобок — долго и утомительно. С плагином Emmet эта работа становится гораздо проще — он преобразует простые аббревиатуры в полноценные блоки кода. То есть, вместо того, чтобы набирать руками HTML- и CSS-код полностью, прописываете сокращенные аббревиатуры, нажимаете TAB и код целиком разворачивается.
Работа Emmet похожа на функцию автозамены — того самого Т9 в смартфоне — только более функциональную, за счет использования специального синтаксиса для сокращений. Просто вводите сокращение, псевдоним или несколько первых символов названия тега или свойства, нажимаете TAB и Emmet самостоятельно дописывает остальное.
В статье покажем основные фишки и аббревиатуры этого плагина, которые чаще всего использую при написании программного кода. Материал будет полезен разработчикам, которые пишут много кода, но пока не используют в работе Emmet.
Как установить Emmet
Начать пользоваться плагином легко — скачайте его с официального сайта Emmet, установите в свой редактор кода, и пусть начнётся магия. Во многих редакторах это дополнение есть в коробочной версии — например, большинство команд у нас в компании пользуется VS Code, в котором Emmet уже встроен по-умолчанию. Если вы пишете код, то уже наверняка пользовались Emmet — хотя могли и не знать, что это именно он.
Разработчики нашей компании постоянно пользуются этим плагином в работе, но пока готовили материал для статьи, углубились в документацию по Emmet и узнали много нового. На самом деле, чаще всего используют малую часть его возможностей — в основном только то, что постоянно требуется при работе над проектами. Есть очень много фишек, которые могут быть полезны под разные задачи, но в целом их редко применяют.
Создаем «скелет» HTML-документа в два клика
Начнем знакомить вас с возможностями Emmet — для затравочки создадим «скелет» HTML-документа. Вообще, это достаточно большой кусок кода, но чтобы его написать с помощью плагина, достаточно поставить знак «!», нажать кнопку TAB и он развернется в код для стартовой страницы. На скрине видно подсвеченные элементы — это название языка, размеры и другие значения, по которым можно двигаться с помощью TAB и менять на свои.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> </body> </html>
Набрали знак «!» и нажали TAB — получили «скелет» для стартовой страницы.
Синтаксис сокращений
В этом и есть принцип работы Emmet — пишем простые сокращения, нажимаем TAB и они разворачиваются в сложные фрагменты кода. Покажем на примере тега div: чтобы его развернуть, пишем div, нажимаем TAB и разворачивается тег <div><div>. Аббревиатур очень много, но когда начнете пользоваться Emmet, быстро запомните те, которые нужны в работе постоянно. А остальные будете смотреть в документации к плагину по мере необходимости.
Здесь нет определенного набора тегов — каждый разработчик может написать любое слово и преобразовать его в тег, который ему будет удобно использовать. Если написать test и нажать TAB — получится тег: <test><test>. Таких тегов может быть сколько угодно — все зависит от ваших задач и фантазии.
Можно использовать имена элементов, такие как div
для создания HTML-тегов.
<div></div>
У Emmet нет предопределенного набора имен тегов, можно написать любое слово и преобразовать его в тег, например test
:
<test></test>
Простые сокращения разворачиваются в сложные фрагменты кода. Любое слово можно преобразовать в тег.
Операторы вложенности
Задать положение элементов внутри генерируемого дерева — должны ли они быть внутри или рядом с элементом контекста — помогают операторы вложенности. Их четыре: «дочерние элементы», «соседние элементы», «группировка» и «поместить выше».
Дочерние элементы
Для вложения элементов друг в друга используют дочерние элементы, которые обозначают оператором «>» — знак «больше». Для примера, возьмем такое сокращение: div>ul>li, то есть — div, в который вложен список ul и элементы списка li. Нажимаем TAB и разворачиваем большой кусок кода.
Используется оператор >
для вложения элементов друг в друга:
div>ul>li
<div> <ul> <li></li> </ul> </div>
Оператор «>» используют для обозначения вложенности элементов друг в друга. Пишем в несколько раз меньше текста и получаем полноценный кусок кода.
Соседние элементы
Элементы, которые находятся друг под другом называют соседними и обозначают оператором «+» — знак «плюс».
Допустим, требуется написать типовой макет страницы, где есть:header — «шапка» сайта;
main — основной контент;
sidebar — боковая панель сайта;
footer — «подвал» сайта.
Пишем: header+main+sidebar+footer, нажимаем TAB и получаем каждый тег друг под другом.
Для размещения элементов рядом друг с другом, на одном уровне, используется оператор+
:
header+main+aside+footer
<header></header> <main></main> <aside></aside> <footer></footer>
Для обозначения соседних элементов используют оператор «+». Emmet разворачивает небольшой текст в несколько тегов друг под другом.
Группировка
С помощью круглых скобок «()» можем группировать элементы с разным уровнем вложенности. Допустим, хотим создать страницу с header и footer, а между ними поместить основной контент и боковую панель сайта с соседними операторами вложенности. » поднимают p на один уровень с div.
По правде говоря, мы не используем в работе с кодом операторы «группировка» и «поднять вверх» и даже не видим для себя вариантов их применения — они слишком сложные в понимании и использовании. Будет проще и быстрее прописать несколько раз понемногу — ввести название тега, нажать TAB — и он развернётся, а внутри этого куска кода написать еще сколько нужно тегов. Но возможно кто-то найдет применение этим операторам в своих проектах.
Умножение
Более функциональный оператор — «умножение», который обозначается звездочкой «*». Он помогает задать, сколько раз должен выводиться элемент. Например, если нужно развернуть список ul и сделать в нем несколько элементов li — прописываем оператор «умножение», указываем сколько штук нам надо и Emmet автоматически прописывает нам этот код. Будет столько элементов li, сколько указали.
С помощью оператора можно задать, сколько раз должен выводиться элемент:
ul>li*3
<ul> <li></li> <li></li> <li></li> </ul>
Оператор «*» разворачивает код и прописывает три элемента li.
Комбинирование
Можно комбинировать разных операторов — использовать одновременно вложенные и соседние элементы. Допустим, нужно обернуть разметку страницы из предыдущего примера в какой-то wrapper, который будет ограничивать ширину экрана. Тогда добавляем div и вкладываем в него элементы из предыдущего примера: div>header+main+sidebar+footer. Жмем TAB и получаем разметку с разными операторами.
div>header+main+aside+footer
<div> <header></header> <main></main> <aside></aside> <footer></footer> </div>
Emmet помогает комбинировать вложенные и соседние элементы.
Операторы атрибутов
Быстро добавить к сгенерированному элементу атрибут помогут специальные операторы:
ID и Class
В Emmet синтаксис для описания элементов похож на CSS-селекторы, в которых обращаемся к элементу по id или классу. Здесь тот же принцип: пишем тег, у него пишем class — через точку, или id — через решетку, и наш тег развернется с соответствующим классом.
Синтаксис Emmet для описания элементов похож на CSS-селекторы
В CSS используется обозначения elem#id
и elem.class
, чтобы добраться до элементов с указанными атрибутами id
или class
. В Emmet вы можете использовать тот же синтаксис для добавления этих атрибутов к указанному элементу
div.wrapper
<div></div>
Пишем тег div, через точку прописываем class wrapper, и Emmet разворачивает тег с соответствующим классом.
Можно писать несколько классов подряд через точку, чтобы сделать нужное количество классов. Также можно комбинировать id и class.
Можно комбинировать
div#id-wrap.wrapper
<div></div>
Пишем и id, и class — разворачиваем тег с обоими атрибутами.
Перед class и id не обязательно ставить тег. Если напишем операторы атрибутов без тега — он по-умолчанию развернет тег div.
Не обязательно указывать тэг
#id-wrap.wrapper
<div></div>
Пишем id и class без тега — Emmet по-умолчанию развернет тег div.
Emmet — умный плагин. Посмотрим, что будет, если вложить элемент из предыдущего примера в строчный элемент span. Поначалу кажется, что как и в предыдущем примере должен развернуться тег div, но Emmet понимает контекст и развернет его в span. Плагин понимает даже больше — если бы вместо span был, к примеру, ul, то «ребенок» был бы li.
span>#id-wrap.wrapper
<span> <span></span></span>
Emmet понимает контекст и разворачивает кусок кода с тегом span.
Настраиваемые атрибуты
Если хотим добавить какие-то настраиваемые атрибуты к элементу, используем оператор [attr] — как в CSS. Например, чтобы указать тип кнопки disabled — «неактивна» — пишем в квадратных скобках эти атрибуты и Emmet развернет аббревиатуры в нужный код.
Можно использовать [attr]
нотацию (как в CSS) для добавления настраиваемых атрибутов к элементу:
button[type="button" disabled]
<button type="button" disabled></button>
Пишем в квадратных скобках нужные атрибуты и плагин разворачивает их в код.
Нумерация позиций
В примере про умножение показывали, как с помощью знака «*» развернуть несколько элементов. Теперь посмотрим, как каждый класс обозначить цифрой — к примеру, от одного до трех. Для этого пишем знак доллара «$».
С помощью оператора умнжения *
можно повторить элементы, оператор $ поможет пронумеровать их
ul>li.item$*3
<ul> <li></li> <li></li> <li></li> </ul>
Пишем знак «
Чтобы сделать нумерацию списка в обратную сторону, используем модификатор собаки — «@» с минусом «-».
С помощью модификатора @
можно изменить направление нумерации или изметить началное значение нумерации.
ul>li.item$@-*3
<ul> <li></li> <li></li> <li></li> </ul>
Модификатор «@» с минусом «-» изменил направление нумерации в обратную сторону — от трех до одного.
Также с помощью оператора собаки «@» можно указать, чтобы нумерация начиналась не с единицы, а с какой-то другой цифры. Тогда пишем «$», «@» и цифру, с которой хотим начать нумерацию — например, «тройку». Так, нумерация будет идти в последовательности: 3-4-5 и так далее. Поставим перед «тройкой» минус и нумерация пойдет в обратной последовательности с той цифры, которую мы указали: 3-2-1.
Добавляем текст
Фигурные скобки «{}» помогут добавить в код нужный нам текст. Для этого пишем тег, добавляем фигурные скобки и внутри скобок прописываем свой текст. Нажимаем TAB и получаем текст, который «обернут» в указанный перед фигурными скобками тег.
Для добавления текста к элементу можно использовать фигурные скобки {}
p{Здесь какой-то текст}
<p>Здесь какой-то текст</p>
Текст внутри фигурных скобок Emmet разворачивает в текст, «обернутый» в указанный перед скобками тег.
«Рыба» текста — Lorem Ipsum
Разработчикам часто бывает нужно проверить верстку на переполнение или использовать рандомный текст для каких-то других задач. Часто для этого используют специальные сервисы, которые генерируют подобные тексты. Но Emmet помогает не отвлекаться на переключение между вкладками браузера и сделать «рыбу» текста с помощью ввода простой аббревиатуры: lorem. В переводе с греческого, Lorem Ipsum означает «все буквы».
Когда нужно заполнить какой-то элемент кода текстом — пишем сокращение lorem, нажимаем TAB и Emmet разворачивает его в текст из 30 слов.
Текст для наполнения (рыба) lorem
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloremque ducimus expedita quia quo ratione sapiente sed. Ad aut consequatur dolorum ea eius esse ex laborum molestiae quaerat, reiciendis repudiandae vitae.
Пишем lorem, нажимаем TAB и получаем текст из 30 слов.
Если требуется сгенерировать текст определенной длины — после слова lorem пишем цифру, которая обозначает нужное количество слов. Аббревиатура развернется в текст заданного размера. Например, чтобы получить текст из десяти слов — пишем lorem10.
lorem10
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cumque, modi?
Добавляем после аббревиатуры lorem цифру «10» и получаем текст из десяти слов.
Сокращения
В разделе про синтаксис сокращений упоминали, что в Emmet нет предопределенного набора имен тегов — можно взять любой текст и плагин развернет его в закрывающий и открывающий тег, а в дальнейшем будет использовать этот текст в качестве тега.
У Emmet нет предопределенного набора имен тегов, можно написать любое слово и преобразовать его в тег, например test
:
<test></test>
Любой текст Emmet может преобразовать в тег.
Правда, несколько элементов, для которых уже предопределенно, как они будут разворачиваться — например, изображение. Если напишем img и нажмём TAB — получим кусок кода с уже встроенными элементами, которые можем заполнить под свои задачи.
img
<img src="" alt="">
Аббревиатуру img Emmet разворачивает в код со встроенными элементами, которые можем заполнять.
Псевдонимы
Названия некоторых тегов очень длинные. Сократить их написание помогают псевдонимы названий тегов. Например, чтобы не писать длинное слово blockquote, используем псевдоним bq, который разворачивается в полноценный тег.
Псевдонимы названий тегов
bq
<blockquote></blockquote>
Псевдонимы помогают сократить время на написание длинных имен тегов.
Пишем свои псевдонимы и сокращения
Такие сокращения можно задавать самостоятельно. Допустим, мы не хотим писать слово section полностью, а хотим, чтобы это было сокращение вида sc. Но в Emmet изначально этого не прописано, поэтому если без настроек просто напишем sc и нажмем TAB — развернется код, который нам не подходит.
sc
> section
<sc></sc>
Если без предварительных настроек написать сокращение — получим совсем не тот результат.
Разберем, как задать нужное сокращение на примере редакторов VC Code и WebStorm.
Настройки для VS Code
В любом месте у себя на компьютере создайте файл snippets.json;
Перейдите в настройки VS Code: File > Preferences > Settings — или просто нажмите «Ctrl+,»;
В поиске вбейте текст «Emmet Extensions Path», чтобы открылась вкладка Settings;
Во вкладке как на рисунке ниже впишите в Settings Item путь к файлу snippets.json, который создали ранее и нажмите OK;
5. Зайдите в файл snippets.json и напишите соответствующий код: для HTML, и новый snippet. В качестве ключа укажите сокращение, которое хотите добавить в Emmet — например, sc. А в качестве значения — то, что должны получить — в нашем случае это section.
{ "html": { "snippets": { "sc": "section" } } }
Пример кода, который нужно прописать в файле snippets.json, чтобы задать свое сокращение в VS Code для работы с Emmet.
Разворачиваем конструкции любой сложности
В такие сокращения можно вшивать не просто теги, но и конструкции любой сложности HTML-разметки. То есть, написать какой-то большой кусок кода с большой вложенностью, дать ей название, в JSON это все описать. И при вводе сокращения, которое настроили, Emmet развернет большой кусок кода, сгенерированного заранее. Это полезно, если есть какой-то элемент, который часто пишете, вам это надоедает и занимает слишком много времени — можно настроить Emmet так, чтобы он выдавал нужный вам большой кусок кода при вводе короткого сокращения.
Настройки для WebStorm
Зайдите в настройки WebStorm: File > Settings (или просто нажмите Ctrl+Alt+S) > Editor > Live Templates;
В окне настроек задайте параметры своего сокращения: в аббревиатуры впишите значение, в Template Text — то, что хотите получить на выходе и сохраните изменения;
3. Теперь, когда в WebStorm напишете сокращение и нажмете TAB — развернется тег или кусок кода, который заложили в это сокращение.
sc
<section></section>
После настроек в WebStorm, Emmet разворачивает сокращения в заданные теги или куски кода.
Работаем с BEM
Emmet поддерживает BEM. Для примера возьмем классическую конструкцию: .block>.block__el.block__el—-mod. При нажатии TAB разворачивается нужный нам код. Чтобы написать такую конструкцию, придется каждый раз повторять название блока и два раза — название элемента.
.block>.block__el.block__el--mod
<div> <div></div> </div>
Классическая конструкция: блок, в который вложен какой-то элемент с определенным модификатором.
Писать такой код долго, но на помощь опять приходит Emmet. Плагин поддерживает BEM, поэтому можно опустить название блока элемента и опустить сам элемент, а писать сразу его модификатор. Писать такой код становится намного быстрее и проще.
На скрине ниже два варианта написания: первый — для WebStorm, а второй — для VS Code. Разработчики вносят в Emmet свои правила и немного модифицируют его, поэтому в разных визуальных редакторах плагин работает по-своему.
. block>.__el--mod — вариант записи для WebStorm
.block>.-el_mod — вариант записи для VS Code
<div> <div></div> </div>
Поддержка BEM помогает с помощью Emmet работать с кодом еще быстрее.
Настраиваем BEM в VS Code
Зайдите в настройки: File > Preferences > Settings — или просто нажмите «Ctrl+,»;
Найдите в поиске syntaxProfiles;
В открывшемся окне перейдите в настройки JSON. Здесь хранятся вообще все настройки VS Code;
4. Впишите в настройках JSON соответствующий код: укажите, что в HTML поддерживаем BEM, пропишите, как хотите, чтобы отображался элемент и как хотите, чтобы отображался модификатор. Например, если по BEM «Яндекса» модификатор отображается одним нижним подчеркиванием, а мы привыкли к двойному тире — это можно поменять как будет удобно.
{ "emmet.syntaxProfiles": { "html": { "filters": "bem" } }, "emmet. preferences": { "bem.elementSeparator": "__", "bem.modifierSeparator": "--", "bem.element": "__" // not work issues } }
Настраиваем BEM в WebStorm
1. Перейдите в настройки WebStorm: File > Settings (или просто нажмите Ctrl+Alt+S) > Editor > Emmet > HTML;
2. В окне настроек укажите, что будет разделителем для элемента и модификатора и сокращение для элемента. Например, можем задать такие настройки, чтобы при вводе знака тире «-» срабатывала замена на два нижних подчеркивания «__».
Работаем в CSS
Emmet поддерживается также в CSS, поэтому когда пишем сокращения в CSS и нажимаем TAB — плагин разворачивает аббревиатуру в кусок кода. Например, если пишем fz и нажимаем TAB, Emmet развернет его в front-size.
Где посмотреть все сокращения Emmet
Все сокращения можно посмотреть в Шпаргалке на сайте Emmet — их тут очень много. Аббревиатуры, которые часто используете, быстро запомните, потому что это постоянно нужно в работе и будете «на автомате» их применять. А то, что редко используете — скорее всего вам и не нужно запоминать, ведь проще набрать руками, без использования Emmet.
На официальном сайте плагина Emmet.io можно посмотреть все сокращения.
Где потренироваться использовать Emmet
Освоить плагин будет еще проще, если сначала набить руку в специальном тренажере. Там можно выполнить небольшие задания различной сложности, чтобы понять принцип работы Emmet и привыкнуть к использованию сокращений и аббревиатур.
Чтобы изучить Emmet, потребуется время, но ничего сложного нет — там достаточно простые правила и привычный синтаксис. Зато когда начнете применять это дополнение при написании кода — потраченное на освоение плагина время окупится стократ. Сбережете действительно много времени и нервов, а верстка станет намного эффективнее.
Плагин Emmet для быстрой работы с HTML
Frontend-разработчик AFFINAGE Евгений Самойлов рассказывает, как сократить время написания рутинной разметки за счет преобразования простых аббревиатур в полноценные блоки кода.
Евгений Самойлов
Frontend-разработчик AFFINAGE
Что такое Emmet
Emmet — ранее известный как Zen Coding — набор плагинов для текстовых редакторов, которые помогают ускорить написание кода HTML и CSS. Проект начал Вадим Макеев в 2008 году, а с 2009 года и по настоящее время его активно разрабатывает Сергей Чикуёнок и сообщество пользователей Zen Coding.
Писать HTML-код и вводить множество тегов, кавычек и скобок — долго и утомительно. С плагином Emmet эта работа становится гораздо проще — он преобразует простые аббревиатуры в полноценные блоки кода. То есть, вместо того, чтобы набирать руками HTML- и CSS-код полностью, прописываете сокращенные аббревиатуры, нажимаете TAB и код целиком разворачивается.
Работа Emmet похожа на функцию автозамены — того самого Т9 в смартфоне — только более функциональную, за счет использования специального синтаксиса для сокращений. Просто вводите сокращение, псевдоним или несколько первых символов названия тега или свойства, нажимаете TAB и Emmet самостоятельно дописывает остальное.
В статье покажем основные фишки и аббревиатуры этого плагина, которые чаще всего использую при написании программного кода. Материал будет полезен разработчикам, которые пишут много кода, но пока не используют в работе Emmet.
Как установить Emmet
Начать пользоваться плагином легко — скачайте его с официального сайта Emmet, установите в свой редактор кода, и пусть начнётся магия. Во многих редакторах это дополнение есть в коробочной версии — например, большинство команд у нас в компании пользуется VS Code, в котором Emmet уже встроен по-умолчанию. Если вы пишете код, то уже наверняка пользовались Emmet — хотя могли и не знать, что это именно он.
Разработчики нашей компании постоянно пользуются этим плагином в работе, но пока готовили материал для статьи, углубились в документацию по Emmet и узнали много нового. На самом деле, чаще всего используют малую часть его возможностей — в основном только то, что постоянно требуется при работе над проектами. Есть очень много фишек, которые могут быть полезны под разные задачи, но в целом их редко применяют.
Создаем «скелет» HTML-документа в два клика
Начнем знакомить вас с возможностями Emmet — для затравочки создадим «скелет» HTML-документа. Вообще, это достаточно большой кусок кода, но чтобы его написать с помощью плагина, достаточно поставить знак «!», нажать кнопку TAB и он развернется в код для стартовой страницы. На скрине видно подсвеченные элементы — это название языка, размеры и другие значения, по которым можно двигаться с помощью TAB и менять на свои.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> </body> </html>
Набрали знак «!» и нажали TAB — получили «скелет» для стартовой страницы. Подсвеченные значения можно менять под задачи своего проекта.
Синтаксис сокращений
В этом и есть принцип работы Emmet — пишем простые сокращения, нажимаем TAB и они разворачиваются в сложные фрагменты кода. Покажем на примере тега div: чтобы его развернуть, пишем div, нажимаем TAB и разворачивается тег <div><div>. Аббревиатур очень много, но когда начнете пользоваться Emmet, быстро запомните те, которые нужны в работе постоянно. А остальные будете смотреть в документации к плагину по мере необходимости.
Здесь нет определенного набора тегов — каждый разработчик может написать любое слово и преобразовать его в тег, который ему будет удобно использовать. Если написать test и нажать TAB — получится тег: <test><test>. Таких тегов может быть сколько угодно — все зависит от ваших задач и фантазии.
Можно использовать имена элементов, такие как div
для создания HTML-тегов.
<div></div>
У Emmet нет предопределенного набора имен тегов, можно написать любое слово и преобразовать его в тег, например test
:
<test></test>
Простые сокращения разворачиваются в сложные фрагменты кода. Любое слово можно преобразовать в тег.
Операторы вложенности
Задать положение элементов внутри генерируемого дерева — должны ли они быть внутри или рядом с элементом контекста — помогают операторы вложенности. Их четыре: «дочерние элементы», «соседние элементы», «группировка» и «поместить выше».
Дочерние элементыДля вложения элементов друг в друга используют дочерние элементы, которые обозначают оператором «>» — знак «больше». Для примера, возьмем такое сокращение: div>ul>li, то есть — div, в который вложен список ul и элементы списка li. Нажимаем TAB и разворачиваем большой кусок кода.
Используется оператор >
для вложения элементов друг в друга:
div
<div> <ul> <li></li> </ul> </div>
Оператор «>» используют для обозначения вложенности элементов друг в друга. Пишем в несколько раз меньше текста и получаем полноценный кусок кода.
Соседние элементыЭлементы, которые находятся друг под другом называют соседними и обозначают оператором «+» — знак «плюс». Допустим, требуется написать типовой макет страницы, где есть:
- header — «шапка» сайта;
- main — основной контент;
- sidebar — боковая панель сайта;
- footer — «подвал» сайта.
Пишем: header+main+sidebar+footer, нажимаем TAB и получаем каждый тег друг под другом.
Для размещения элементов рядом друг с другом, на одном уровне, используется оператор+
:
header+main+aside+footer
<header></header> <main></main> <aside></aside> <footer></footer>
Для обозначения соседних элементов используют оператор «+». Emmet разворачивает небольшой текст в несколько тегов друг под другом.
ГруппировкаС помощью круглых скобок «()» можем группировать элементы с разным уровнем вложенности. » поднимают p на один уровень с div.
По правде говоря, мы не используем в работе с кодом операторы «группировка» и «поднять вверх» и даже не видим для себя вариантов их применения — они слишком сложные в понимании и использовании. Будет проще и быстрее прописать несколько раз понемногу — ввести название тега, нажать TAB — и он развернётся, а внутри этого куска кода написать еще сколько нужно тегов. Но возможно кто-то найдет применение этим операторам в своих проектах.
УмножениеБолее функциональный оператор — «умножение», который обозначается звездочкой «*». Он помогает задать, сколько раз должен выводиться элемент. Например, если нужно развернуть список ul и сделать в нем несколько элементов li — прописываем оператор «умножение», указываем сколько штук нам надо и Emmet автоматически прописывает нам этот код. Будет столько элементов li, сколько указали.
С помощью оператора *
можно задать, сколько раз должен выводиться элемент:
ul>li*3
<ul> <li></li> <li></li> <li></li> </ul>
Оператор «*» разворачивает код и прописывает три элемента li.
КомбинированиеМожно комбинировать разных операторов — использовать одновременно вложенные и соседние элементы. Допустим, нужно обернуть разметку страницы из предыдущего примера в какой-то wrapper, который будет ограничивать ширину экрана. Тогда добавляем div и вкладываем в него элементы из предыдущего примера: div>header+main+sidebar+footer. Жмем TAB и получаем разметку с разными операторами.
div>header+main+aside+footer
<div> <header></header> <main></main> <aside></aside> <footer></footer> </div>
Emmet помогает комбинировать вложенные и соседние элементы.
Операторы атрибутов
Быстро добавить к сгенерированному элементу атрибут помогут специальные операторы:
- ID и Class;
- настраиваемые атрибуты — [attr];
- нумерация позиций — $.
В Emmet синтаксис для описания элементов похож на CSS-селекторы, в которых обращаемся к элементу по id или классу. Здесь тот же принцип: пишем тег, у него пишем class — через точку, или id — через решетку, и наш тег развернется с соответствующим классом.
Синтаксис Emmet для описания элементов похож на CSS-селекторы
В CSS используется обозначения elem#id
и elem.class
, чтобы добраться до элементов с указанными атрибутами id
или class
. В Emmet вы можете использовать тот же синтаксис для добавления этих атрибутов к указанному элементу
div.wrapper
<div></div>
Пишем тег div, через точку прописываем class wrapper, и Emmet разворачивает тег с соответствующим классом.
Можно писать несколько классов подряд через точку, чтобы сделать нужное количество классов. Также можно комбинировать id и class.
Можно комбинировать
div#id-wrap.wrapper
<div></div>
Пишем и id, и class — разворачиваем тег с обоими атрибутами.
Перед class и id не обязательно ставить тег. Если напишем операторы атрибутов без тега — он по-умолчанию развернет тег div.
Не обязательно указывать тэг
#id-wrap.wrapper
<div></div>
Пишем id и class без тега — Emmet по-умолчанию развернет тег div.
Emmet — умный плагин. Посмотрим, что будет, если вложить элемент из предыдущего примера в строчный элемент span. Поначалу кажется, что как и в предыдущем примере должен развернуться тег div, но Emmet понимает контекст и развернет его в span. Плагин понимает даже больше — если бы вместо span был, к примеру, ul, то «ребенок» был бы li.
span>#id-wrap.wrapper
<span> <span></span></span>
Emmet понимает контекст и разворачивает кусок кода с тегом span.
Настраиваемые атрибутыЕсли хотим добавить какие-то настраиваемые атрибуты к элементу, используем оператор [attr] — как в CSS. Например, чтобы указать тип кнопки disabled — «неактивна» — пишем в квадратных скобках эти атрибуты и Emmet развернет аббревиатуры в нужный код.
Можно использовать [attr]
нотацию (как в CSS) для добавления настраиваемых атрибутов к элементу:
button[type="button" disabled]
<button type="button" disabled></button>
Пишем в квадратных скобках нужные атрибуты и плагин разворачивает их в код.
Нумерация позиций
В примере про умножение показывали, как с помощью знака «*» развернуть несколько элементов. Теперь посмотрим, как каждый класс обозначить цифрой — к примеру, от одного до трех. Для этого пишем знак доллара «$» и умножаем на три. Так, к каждому классу добавилась цифра.
С помощью оператора умнжения *
можно повторить элементы,
оператор $
поможет пронумеровать их
ul>li.item$*3
<ul> <li></li> <li></li> <li></li> </ul>
Пишем знак «$» и умножаем «*» на три — к каждому классу добавляем цифра от одного до трех.
Чтобы сделать нумерацию списка в обратную сторону, используем модификатор собаки — «@» с минусом «-».
С помощью модификатора @
можно изменить направление нумерации или изметить началное значение нумерации.
ul>li.item$@-*3
<ul> <li></li> <li></li> <li></li> </ul>
Модификатор «@» с минусом «-» изменил направление нумерации в обратную сторону — от трех до одного.
Также с помощью оператора собаки «@» можно указать, чтобы нумерация начиналась не с единицы, а с какой-то другой цифры. Тогда пишем «$», «@» и цифру, с которой хотим начать нумерацию — например, «тройку». Так, нумерация будет идти в последовательности: 3-4-5 и так далее. Поставим перед «тройкой» минус и нумерация пойдет в обратной последовательности с той цифры, которую мы указали: 3-2-1.
Добавляем текстФигурные скобки «{}» помогут добавить в код нужный нам текст. Для этого пишем тег, добавляем фигурные скобки и внутри скобок прописываем свой текст. Нажимаем TAB и получаем текст, который «обернут» в указанный перед фигурными скобками тег.
Для добавления текста к элементу можно использовать фигурные скобки {}
p{Здесь какой-то текст}
<p>Здесь какой-то текст</p>
Текст внутри фигурных скобок Emmet разворачивает в текст, «обернутый» в указанный перед скобками тег.
«Рыба» текста — Lorem IpsumРазработчикам часто бывает нужно проверить верстку на переполнение или использовать рандомный текст для каких-то других задач. Часто для этого используют специальные сервисы, которые генерируют подобные тексты. Но Emmet помогает не отвлекаться на переключение между вкладками браузера и сделать «рыбу» текста с помощью ввода простой аббревиатуры: lorem. В переводе с греческого, Lorem Ipsum означает «все буквы».
Когда нужно заполнить какой-то элемент кода текстом — пишем сокращение lorem, нажимаем TAB и Emmet разворачивает его в текст из 30 слов.
Текст для наполнения (рыба) lorem
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloremque ducimus expedita quia quo ratione sapiente sed. Ad aut consequatur dolorum ea eius esse ex laborum molestiae quaerat, reiciendis repudiandae vitae.
Пишем lorem, нажимаем TAB и получаем текст из 30 слов.
Если требуется сгенерировать текст определенной длины — после слова lorem пишем цифру, которая обозначает нужное количество слов. Аббревиатура развернется в текст заданного размера. Например, чтобы получить текст из десяти слов — пишем lorem10.
lorem10
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cumque, modi?
Добавляем после аббревиатуры lorem цифру «10» и получаем текст из десяти слов.
СокращенияВ разделе про синтаксис сокращений упоминали, что в Emmet нет предопределенного набора имен тегов — можно взять любой текст и плагин развернет его в закрывающий и открывающий тег, а в дальнейшем будет использовать этот текст в качестве тега.
У Emmet нет предопределенного набора имен тегов, можно написать любое слово и преобразовать его в тег, например test
:
<test></test>
Любой текст Emmet может преобразовать в тег.
Правда, несколько элементов, для которых уже предопределенно, как они будут разворачиваться — например, изображение. Если напишем img и нажмём TAB — получим кусок кода с уже встроенными элементами, которые можем заполнить под свои задачи.
img
<img src="" alt="">
Аббревиатуру img Emmet разворачивает в код со встроенными элементами, которые можем заполнять.
ПсевдонимыНазвания некоторых тегов очень длинные. Сократить их написание помогают псевдонимы названий тегов. Например, чтобы не писать длинное слово blockquote, используем псевдоним bq, который разворачивается в полноценный тег.
Псевдонимы названий тегов
bq
<blockquote></blockquote>
Псевдонимы помогают сократить время на написание длинных имен тегов.
Пишем свои псевдонимы и сокращенияТакие сокращения можно задавать самостоятельно. Допустим, мы не хотим писать слово section полностью, а хотим, чтобы это было сокращение вида sc. Но в Emmet изначально этого не прописано, поэтому если без настроек просто напишем sc и нажмем TAB — развернется код, который нам не подходит.
sc
> section
<sc></sc>
Если без предварительных настроек написать сокращение — получим совсем не тот результат.
Разберем, как задать нужное сокращение на примере редакторов VC Code и WebStorm.
Настройки для VS Code- В любом месте у себя на компьютере создайте файл snippets.json;
- Перейдите в настройки VS Code: File > Preferences > Settings — или просто нажмите «Ctrl+,»;
- В поиске вбейте текст «Emmet Extensions Path», чтобы открылась вкладка Settings;
- Во вкладке как на рисунке ниже впишите в Settings Item путь к файлу snippets. json, который создали ранее и нажмите OK;
5. Зайдите в файл snippets.json и напишите соответствующий код: для HTML, и новый snippet. В качестве ключа укажите сокращение, которое хотите добавить в Emmet — например, sc. А в качестве значения — то, что должны получить — в нашем случае это section.
{ "html": { "snippets": { "sc": "section" } } }
Пример кода, который нужно прописать в файле snippets.json, чтобы задать свое сокращение в VS Code для работы с Emmet.
Разворачиваем конструкции любой сложности
В такие сокращения можно вшивать не просто теги, но и конструкции любой сложности HTML-разметки. То есть, написать какой-то большой кусок кода с большой вложенностью, дать ей название, в JSON это все описать. И при вводе сокращения, которое настроили, Emmet развернет большой кусок кода, сгенерированного заранее. Это полезно, если есть какой-то элемент, который часто пишете, вам это надоедает и занимает слишком много времени — можно настроить Emmet так, чтобы он выдавал нужный вам большой кусок кода при вводе короткого сокращения.
Настройки для WebStorm
- Зайдите в настройки WebStorm: File > Settings (или просто нажмите Ctrl+Alt+S) > Editor > Live Templates;
- В окне настроек задайте параметры своего сокращения: в аббревиатуры впишите значение, в Template Text — то, что хотите получить на выходе и сохраните изменения;
3. Теперь, когда в WebStorm напишете сокращение и нажмете TAB — развернется тег или кусок кода, который заложили в это сокращение.
sc
<section></section>
После настроек в WebStorm, Emmet разворачивает сокращения в заданные теги или куски кода.
Работаем с BEM
Emmet поддерживает BEM. Для примера возьмем классическую конструкцию: .block>.block__el.block__el—-mod. При нажатии TAB разворачивается нужный нам код. Чтобы написать такую конструкцию, придется каждый раз повторять название блока и два раза — название элемента.
.block>.block__el.block__el--mod
<div> <div></div> </div>
Классическая конструкция: блок, в который вложен какой-то элемент с определенным модификатором.
Писать такой код долго, но на помощь опять приходит Emmet. Плагин поддерживает BEM, поэтому можно опустить название блока элемента и опустить сам элемент, а писать сразу его модификатор. Писать такой код становится намного быстрее и проще.
На скрине ниже два варианта написания: первый — для WebStorm, а второй — для VS Code. Разработчики вносят в Emmet свои правила и немного модифицируют его, поэтому в разных визуальных редакторах плагин работает по-своему.
.block>.__el--mod — вариант записи для WebStorm
.block>.-el_mod — вариант записи для VS Code
<div> <div></div> </div>
Поддержка BEM помогает с помощью Emmet работать с кодом еще быстрее.
Настраиваем BEM в VS Code- Зайдите в настройки: File > Preferences > Settings — или просто нажмите «Ctrl+,»;
- Найдите в поиске syntaxProfiles;
- В открывшемся окне перейдите в настройки JSON. Здесь хранятся вообще все настройки VS Code;
4. Впишите в настройках JSON соответствующий код: укажите, что в HTML поддерживаем BEM, пропишите, как хотите, чтобы отображался элемент и как хотите, чтобы отображался модификатор. Например, если по BEM «Яндекса» модификатор отображается одним нижним подчеркиванием, а мы привыкли к двойному тире — это можно поменять как будет удобно.
{ "emmet.syntaxProfiles": { "html": { "filters": "bem" } }, "emmet.preferences": { "bem.elementSeparator": "__", "bem.modifierSeparator": "--", "bem.element": "__" // not work issues } }Настраиваем BEM в WebStorm
1. Перейдите в настройки WebStorm: File > Settings (или просто нажмите Ctrl+Alt+S) > Editor > Emmet > HTML;
2. В окне настроек укажите, что будет разделителем для элемента и модификатора и сокращение для элемента. Например, можем задать такие настройки, чтобы при вводе знака тире «-» срабатывала замена на два нижних подчеркивания «__».
Работаем в CSS
Emmet поддерживается также в CSS, поэтому когда пишем сокращения в CSS и нажимаем TAB — плагин разворачивает аббревиатуру в кусок кода. Например, если пишем fz и нажимаем TAB, Emmet развернет его в front-size.
Где посмотреть все сокращения Emmet
Все сокращения можно посмотреть в Шпаргалке на сайте Emmet — их тут очень много. Аббревиатуры, которые часто используете, быстро запомните, потому что это постоянно нужно в работе и будете «на автомате» их применять. А то, что редко используете — скорее всего вам и не нужно запоминать, ведь проще набрать руками, без использования Emmet.
На официальном сайте плагина Emmet.io можно посмотреть все сокращения.
Где потренироваться использовать Emmet
Освоить плагин будет еще проще, если сначала набить руку в специальном тренажере. Там можно выполнить небольшие задания различной сложности, чтобы понять принцип работы Emmet и привыкнуть к использованию сокращений и аббревиатур.
Чтобы изучить Emmet, потребуется время, но ничего сложного нет — там достаточно простые правила и привычный синтаксис. Зато когда начнете применять это дополнение при написании кода — потраченное на освоение плагина время окупится стократ. Сбережете действительно много времени и нервов, а верстка станет намного эффективнее.
Фильм «Тилль» и почему история Эммета Тилла вездесуща навестить семью.
Находясь там, мальчик, Эммет Тилль, был похищен, избит, изуродован, застрелен, а затем брошен в реку после того, как он якобы нарушил одно из многочисленных правил общества Джима Кроу. Мальчик был красивым, харизматичным, ребенком, который ценил хорошую шутку. Он был единственным и любимым ребенком своей матери. Новости о пропавшем мальчике поначалу публиковались в газетах черных и южных штатов. Но когда его тело было найдено, различие между человеком, покинувшим Чикаго, и телом вернулось к его матери — телу, которым она решила поделиться с миром с помощью фотографий, опубликованных в Black 9.Журнал 0005 Jet — придал этой истории силу, которая захватила национальную аудиторию и помогла активизировать важные элементы движения за гражданские права, которое изменило 20-й век.
Теперь, спустя 67 лет после преступления, история Эммета Тилля, хотя и так и не исчезла полностью из общественного сознания, снова повсюду.
«Я думаю, что отчасти это чистое совпадение», — говорит Дэвис Хоук, профессор риторики Университета штата Флорида, изучавший дело Тилля и его влияние на общественное мнение; он также является сотрудником архива Эммета Тилля, расположенного в библиотеке штата Флорида. «В какой-то момент в бункере было семь фильмов или сериалов. Но другая часть этого, вероятно, не случайна. Может быть, это мир после Джорджа Флойда, в котором мы живем, где есть просто признание того, что нам нужно показывать больше таких историй, делать больше, заботиться».
Президент США Джо Байден подписывает Закон Эммета Тилля против линчевания в Розовом саду Белого дома в Вашингтоне, округ Колумбия, 29 марта 2022 года. из мини-сериала ABC Women of the Movement с Эдриенн Уоррен в роли Мейми Тилль-Мобли, матери Эммета. В марте в Гринвуде, штат Миссисипи, официальные лица одобрили планы по вводу в эксплуатацию и установке бронзовой статуи Тилля, которая будет установлена примерно в 10 милях от магазина, где, как говорят, Тилль имел какое-то краткое общение с местной белой женщиной, что привело к его линчевание. Позже в марте президент Джо Байден подписал Закон Эммета Тилля о борьбе с линчеванием. Новое расследование этого дела также продолжается: в июне Amsterdam News , принадлежащая чернокожим газета из Нью-Йорка, сообщила, что команда, в которую входил документалист, снявший в 2005 году фильм Нерассказанная история Эммета Луиса Тилля , нашла так и не исполненный ордер на арест белой женщины в магазин, Кэролин Брайант Донэм. (Она жива и проживает в Кентукки; согласно ордеру, ее не могли найти на момент его выдачи в 1955 году.)
А в эту пятницу вышел ограниченный прокат художественного фильма Till, , который выходит в широкий прокат 28 октября.
«Некоторые люди уже говорили мне: «О, с Эмметом это перебор», — говорит Девери Андерсон, автор книги 2015 года Emmett Till: The Murder That Shocked. Мир и движение за гражданские права , на котором основана большая часть январского мини-сериала. «Кто-то сказал мне: «Нам нужна статуя? Потому что в Самнере (Миссисипи) есть памятник Эммету Тиллю, а у нас есть мемориальные доски и дорога, названная в его честь. Тебе тоже нужна статуя?» И я сказал, что это не излишество при любом напряжении воображения. Потребовалось много времени, чтобы заставить людей слушать и проснуться в той мере, в какой они есть».
Подробнее: До и акт свидетеля черной травмы на экране в 2022 году
Это не значит, что вдруг все хотят работать над проектами Эммета Тилла. Дело в том, что люди пытались делать это постоянно на протяжении многих лет. Сейчас часть блокпостов снята.
Рассказчики в течение многих лет брали отрывки из истории Тилля и включали их в свои повествования, говорит Кит Бошам, который был соавтором сценария и продюсером Till , художественный фильм, а также режиссер документального фильма 2005 года, над которым он тесно сотрудничал с Тилль-Мобли до ее смерти в 2003 году. Например, по его словам, были извлечены темы и элементы To Kill A Mockingbird . от убийства Тилля, и Тилль-Мобли сказала ему, что ее разговоры о деле со Стивеном Спилбергом помогли вдохновить на некоторые темы в ET, , которые режиссер описал как «историю меньшинства, которая представляет каждое меньшинство в этой стране. ” Но попытки рассказать историю более прямо, как правило, наталкивались на большие препятствия.
«Наши истории, как чернокожих, по-прежнему считаются спорными во многих отношениях», — говорит Бошам, отмечая, что другие небелые американцы тоже регулярно сталкиваются с чем-то подобным.
Подробнее: Как убийство Эммета Тилля изменило мир
Мейми Тилль-Мобли пыталась снять фильм о деле ее сына в конце 1950-х годов, как обнаружил Хоук в своем исследовании. И действительно, печально известная статья журнала Look за январь 1956 года, в которой двое мужчин были оправданы в похищении и убийстве Тилля в возрасте 19 лет.55 признался (в ходе во многом ложного описания того, что произошло) в том, что сделал это, также имел голливудскую предысторию: репортер заплатил мужчинам 4000 долларов, чтобы получить юридическое разрешение, необходимое для фильма, который он планировал снять о Тилля. убийство, нашел Хоук. Тилль-Мобли удалось остановить проект. Род Серлинг, знаменитый создатель «Сумеречная зона », попытался рассказать историю в двух эпизодах шоу. Но сеть вынудила его обвинить детали сказки, во многом до неузнаваемости. Он также хотел снять фильм. 1960-е и 1970-е годы также принесли серию региональных театральных постановок, инсценировавших историю Тилля. А Бошан, режиссер-документалист, сам пытался рассказать историю Тилля ранее, в крупной кабельной сети в 1990-х годах. Этот проект был заморожен, а позже превратился в документальный фильм, выпущенный на больших экранах в некоторых городах и на DVD.
«Мы противостоим сотням и сотням лет расизма», — говорит Андерсон, писатель и исследователь. «Это немного злит меня, потому что в белых историях было слишком много убийств, белые историки рассказывают историю с точки зрения белых. Если вы хотите поговорить об излишестве, я мог бы указать на миллион областей, где мы пожертвовали знанием нашей реальной истории».
Подробнее: Когда одна мать бросила вызов Америке: фото, изменившее движение за гражданские права
Политическая ситуация была в основном параллельной. По словам основного законодательного спонсора закона, до того, как в этом году был принят закон Тилля о борьбе с линчеванием, аналогичные законопроекты ранее вносились сотни раз с 1900 года, но не были приняты Конгрессом.
Но его прохождение и все другие свидетельства непреходящей силы ужасающей картины того, что было сделано с Эмметом Тиллем, не означает, что Соединенные Штаты свернули на какой-то угол в борьбе с расовым насилием.
Закон Эммета Тилля был принят более чем через шесть десятилетий после этого преступления.
Примерно за два года после убийства Джорджа Флойда законопроект, названный в его честь и содержащий меры по привлечению к ответственности полиции, неоднократно терпел неудачу.
Свяжитесь с нами по телефону по адресу [email protected].
Подлинная история «Тилля» | Кем была Мэми Тилль-Мобли, мать Эммета Тилля? | История
Эллен Векслер
Ассистент редактора, Гуманитарные науки
Мейми Тилль-Мобли никогда не хотела, чтобы ее сын отправился в Мани, штат Миссисипи.
На самом деле, она много раз говорила «нет». Это было летом 1955 года, и Эммету — она звала его Бобо — только что исполнилось 14. Его двоюродные братья скоро отправятся на юг, чтобы провести неделю со своим дядей. Он тоже хотел уйти.
В конце концов Мейми уступила, но ее разрешение было сделано с оговорками. Она сказала ему, что в Миссисипи есть определенные негласные правила, правила, которых не существовало в Чикаго, где он вырос. Ему нужно будет постоянно следовать за ними. Например: он не должен разговаривать с белыми людьми, если с ним не разговаривают. Если к нему идет белая женщина, он должен опустить голову и никогда не смотреть ей в глаза.
«Все, во что Эммет верил всю свою жизнь, нужно было забыть, пока он готовился к путешествию», — написала Мейми позже в своей автобиографии «Смерть невиновности: история преступления на почве ненависти, изменившего Америку ». Ее сын выслушал ее меры предосторожности и согласился следовать им. И все же он подумал, что она, должно быть, преувеличивает.
Эммет Тилль и его мать Мейми Тилль-Мобли дома в Чикаго. Фото из файла Chicago Tribune / Служба новостей Tribune через Getty Images«О, мама, — вспомнила она его слова, — не может быть все так плохо».
«Бо, это еще хуже».
Опасения Мами были вполне обоснованы. Между 1877 и 1950 годами, как задокументировано Инициативой равного правосудия (EJI), подавляющее большинство из более чем 4000 линчеваний имело место на юге Америки. В других местах линчевания происходили в меньшем количестве; В Иллинойсе, где жил Эммет, их было 56. Но даже по сравнению с другими южными штатами Миссисипи был чем-то вроде столицы преступлений на почве ненависти. За тот же период там линчевали более 600 чернокожих жертв — самое большое число среди всех штатов страны.
Тем не менее, Мейми изо всех сил пыталась донести эти опасности до своего сына.
«В конце концов, — писала она, — как можно дать ускоренный курс ненависти мальчику, который когда-либо знал только любовь?»
Вскоре после прибытия Эммета в Миссисипи белая женщина по имени Кэролин Брайант обвинила его в том, что он насвистывал ей в продуктовом магазине. Ее муж и зять, Рой Брайант и Дж.В. Милам, соответственно, похитил Эммета из дома его двоюродного деда, избил его, убил и бросил тело в реку Таллахатчи. 23 сентября 1955, присяжные, полностью белые и состоявшие только из мужчин, оправдали убийц после совещаний, длившихся всего 67 минут. В январе 1956 года в интервью журналу Look оба мужчины признались в преступлении, уже не опасаясь судебного преследования.
Мейми Тилль-Мобли получает по заслугам
В последующие годы убийство Эммета стало одним из важнейших событий движения за гражданские права. Жестокое убийство подробно описано в книгах по истории; многие американцы знают имя Эммета. И в основном из-за Мами.
До , новый фильм режиссера Чинонье Чукву, рассказывает историю Эммета, но в основе повествования лежит Мейми, мать, которая отказалась молча нести бремя смерти своего сына, вместо этого борясь за то, чтобы мир столкнуться с его невыразимой жестокостью.
com/embed/rkQi6GBwmSA» frameborder=»0″ allowfullscreen=»»>«Я знал, что мне нужно было рассказать эту историю через эмоциональное путешествие Мейми», — сказал Чакву на июльской пресс-конференции. «Мы должны сосредоточиться на Мейми и ее отношениях с Эмметом. Как только все были на борту, я отправился в очень интенсивное исследовательское путешествие».
До напрямую не изображает убийство Эммета. Вместо этого фильм фокусируется на активности его матери. Как говорит Лонни Банч, секретарь Смитсоновского института: «Она осветила темную сторону Америки и осветила ее таким образом, чтобы требовать перемен, требовать, чтобы Америка была страной, которая живет в соответствии с заявленными идеалами. Многое из того, что произошло с 1960-х годов, можно проследить благодаря таким людям, как Мейми Тилль, пожертвовавшим всем ради общего блага».
В отличие от Эммета, его мать понимала американский Юг. Родившаяся Мейми Картан в 1921 году, она провела свое детство в Уэббе, штат Миссисипи, всего в двух милях от Самнера, где более 30 лет спустя состоялся суд над ее сыном. Когда ей было два года, ее семья переехала в Чикаго. Они были среди шести миллионов чернокожих американцев, покинувших Юг между 1910-ми и 1970-ми годами во время массового движения, известного сейчас как Великая миграция. Выросшая в Чикаго, Мейми воочию наблюдала, как все больше членов семьи медленно переезжали на север и приспосабливались к новому образу жизни. Мейми была прилежной, став четвертой чернокожей ученицей, окончившей среднюю школу сообщества Арго. Лето она проводила в гостях у семьи в Миссисипи.
Даниэль Дэдвайлер (слева) в роли Мейми Тилль-Мобли в фильме «–». Фотографии ОрионаМейми вышла замуж за Луи Тилля осенью 1940 года и следующим летом родила Эммета. Вскоре пара рассталась. Будучи матерью-одиночкой, Мейми много работала, а Эммет брал на себя все домашние дела — уборку, готовку, стирку. Как позже написала Мейми, у ее сына «развилось чувство достоинства, гордости, уверенности в себе».
Вот как Тилль тоже изображает его: мальчика уверенного в себе, харизматичного, прямолинейного и забавного, умеющего снимать напряжение, если настроение становится слишком напряженным. В ранней сцене Эммет (Джалин Холл) разговаривает с Мейми (Даниэль Дэдвайлер) в своей детской спальне. На обоях повторяются изображения самолетов, поездов и лодок. «Будь маленьким там [в Миссисипи]», — говорит она ему. Он сверкает улыбкой, предполагая, что преувеличенно приседает. «Так?»
Позже Мейми снова появляется в спальне Эммета, оплакивая своего сына. После этого момента ее история о том, как она просит мир оплакивать ее вместе с ней.
«Мейми Тилль не позволила своему сыну умереть напрасно, — говорит Тафени Инглиш, директор Мемориального центра гражданских прав Южного юридического центра по борьбе с бедностью. «Ее храбрость гарантировала, что мы никогда не забудем Эммета, и в то же время дала нам силы продолжать бороться за справедливость для него и многих других».
Выбор, вдохновивший движение за гражданские права
За несколько дней до подтверждения смерти Эммета Мейми знала только то, что ее сын пропал. Собравшись в доме матери Мейми в Чикаго, семья не могла связаться ни с кем в Миссисипи. Вместо этого они позвонили в чикагские газеты. Как вспоминала Мейми в своей автобиографии, в дом приходили репортеры, и она рассказала им все, что знала. Ей хотелось, чтобы ее собственная мать знала, что сказать. Однако, глядя на нее, Мейми «начала понимать, что уже потеряла надежду. Мама жила в Миссисипи. Мама знала, что это значит, когда белые люди приходят посреди ночи в Миссисипи».
Мейми продолжала звонить. Через семейные связи она организовала встречу с Чикагским NAACP 29 августа. После этого история быстро распространилась. Вскоре к поискам сына присоединились мэр Чикаго и губернатор Иллинойса. Вернувшись в дом ее матери, семья добавила вторую телефонную линию.
Мейми Тилль-Мобли плачет, когда тело ее убитого 14-летнего сына Эммета Луи Тилла прибывает на вокзал Чикаго. Беттманн / Getty Images31 августа тело Эммета было найдено в реке Таллахатчи.
«Мама сломалась», — написала Мейми. «Я начал делать заметки».
Так же, как она боролась за местонахождение Эммета, она боролась на каждом шагу после его смерти. В Миссисипи копали могилу, поэтому Мейми боролась за то, чтобы вернуть его тело в Чикаго. Ей даже пришлось бороться, чтобы увидеть тело; Без ее ведома офис местного шерифа вернул гроб только при условии, что его никогда не откроют.
По своему обыкновению, Мейми настаивала на том, чтобы смотреть на жестокость, а не отворачиваться от нее. Но причина, по которой ее историю помнят, причина, по которой имя Эммета стало вдохновляющей силой, заключалась в ее настойчивости в том, чтобы все остальные тоже смотрели на жестокость в лоб.
3 сентября Мейми устроила похороны Эммета в открытом гробу. Она надела костюм, который купила ему на Рождество, но в остальном попросила не подкрашивать его внешний вид. Она выбрала несколько фотографий Эммета, чтобы поместить их в открытый гроб, все с того самого Рождества. Вопреки властям Миссисипи, его изуродованное тело видели не только близкие родственники, но и все, кто хотел увидеть, что с ним сделали.
«[Люди] не смогли бы визуализировать то, что произошло, если бы им не позволили увидеть результаты того, что произошло», — писала Мейми. «Они должны были увидеть то, что видел я. Весь народ должен был засвидетельствовать это».
Десятки тысяч людей смотрели на тело Эммета Тилля перед панихидой 3 сентября 1955 года. Фото Беттманн / Getty ImagesДесятки тысяч людей пришли посмотреть на тело Эммета в церкви Бога Робертс Темпл в Чикаго. На кадрах того дня толпа возле церкви спокойна и торжественна. Но внутри, когда люди проходят мимо гроба, накрытого листом стекла, их реакции интуитивны. Некоторые теряют сознание. Значительное число настолько напугано, что им нужна помощь, чтобы выйти из здания.
С самого начала Мейми знала, что историю Эммета нужно рассказать за пределами Чикаго. Известно, что она позволила сфотографировать его тело журналу Jet , одному из крупнейших изданий, посвященных жизни чернокожих в Америке. Подпись под одной фотографией, опубликованной Jet , гласила: «Изуродованное лицо жертвы не было заретушировано гробовщиком по просьбе матери. Она сказала, что хочет, чтобы «весь мир» стал свидетелем зверства».
«Изображения были очень, очень сложными», — сказал Брайан Стивенсон, исполнительный директор EJI.0053 Time Magazine в 2016 году. «Это был вид изображения, который вы обычно не видели. Вы, конечно, не видели его за пределами зоны боевых действий, и вы, конечно, не видели его с детьми».
После того, как Jet напечатал фотографии, последовало еще несколько публикаций. Как и на просмотре в открытом гробу, Мейми предоставила несколько снимков Эммета, улыбающегося на Рождество, что резко контрастирует с изображениями его изуродованного лица.
Мейми Тилль-Мобли скорбит во время похорон своего единственного сына Эммета Тилля. Семейные документы Эбботта Сенгстаке / Роберт Эббот Сенгстаке / Getty ImagesНасилие, примененное к Эммету, было внутренне шокирующим, но не уникальным. Дэйв Телль, эксперт по коммуникативным исследованиям в Канзасском университете и автор книги «Вспоминая Эммета до », отмечает, что тем летом в Миссисипи линчевали двух других чернокожих жертв — Джорджа Ли и Ламара Смита, — но их истории часто упускают из виду. Мейми позаботилась о том, чтобы Эммета не было.
«Я часто говорю студентам, что Мейми была настоящим героем этой истории, — говорит Телль. «Именно ее настойчивость в открытом гробу — и фотография тела в гробу Дэвида Джексона — превратили убийство из еще одного забытого линчевания в Миссисипи в 1919 году.55 … к искре движения за гражданские права».
Болезненное наследие матери
Через несколько недель после похорон Мейми отправилась в Миссисипи, чтобы дать показания против убийц Эммета, вопреки желанию собственной матери. Двоюродный дед Эммета, Мозес Райт, также дал показания, опознав Брайанта и Милам как мужчин, которые постучали в его дверь посреди ночи.
После того, как присяжные вынесли вердикт, Райт, больше не в безопасности в Миссисипи, переехал в Чикаго. Мейми с помощью NAACP путешествовала по стране, рассказывая толпам сторонников о своем сыне. После этих выступлений NAACP получила приток новых членов и пожертвований.
«Мейми открыла этот гроб и открыла нам глаза», — говорит Кристофер Бенсон, журналист, написавший в 2003 году автобиографию Мейми. «Мы больше никогда не сможем уклониться от своей ответственности. Все должны были нести ответственность: все, кто совершал акты расового насилия, все, кто поддерживал это, чтобы это произошло. Она позаботилась о том, чтобы для всей нации больше не могло быть ни одного невинного наблюдателя».
Двоюродный дед Эммета Тилля свидетельствует против людей, убивших его племянника. Фото Беттманн / Getty Images1 декабря 1955 года Роза Паркс отказалась уступить свое место в автобусе в Монтгомери, штат Алабама. Позже она сказала Мейми, что думала об Эммете. Несколько дней спустя Мартин Лютер Кинг-младший помог организовать бойкот автобусов в Монтгомери.
Все это время Мейми развивала параллельное местное наследие. В 1956 году она поступила в Чикагский педагогический колледж, который в конечном итоге окончила с отличием, а в начале 1970-х годов получила степень магистра в области управления и контроля в Университете Лойолы. Более двух десятилетий она работала учителем начальных классов.
На национальном уровне Мейми никогда не переставала рассказывать историю Эммета. «Люди говорили мне позволить этой штуке умереть, даже члены моей семьи, — сказала она Ассошиэйтед Пресс в 2002 году. — Но люди должны знать об этом».
Наследие Мейми продолжает звучать. В марте президент Джо Байден подписал Закон Эммета Тилля о борьбе с линчеванием, официально признав линчевание федеральным преступлением на почве ненависти.
Банч, который ранее был директором-основателем Смитсоновского национального музея афроамериканской истории и культуры (NMAAHC), впервые встретил Мейми в начале 2000-х годов. Она пришла к нему в офис на обед, который должен был длиться около часа. Вместо этого, вспоминает он, «она провела семь часов, рассказывая мне все, что произошло с того момента, как она поцеловала сына на прощание, до момента, когда она его похоронила. Это была одна из самых трогательных и мощных вещей, которые я когда-либо испытывал в своей жизни».
Изрешеченный пулями знак на месте, где полиция обнаружила тело Эммета Тилля. Анна Манимейкер / Getty ImagesВ 2007 году на берегу реки Таллахатчи установили табличку, увековечивающую память о мальчике, вытащенном из ее вод более 50 лет назад. В 2008 году маркер был украден. Его замена, хранящаяся в коллекции Национального музея американской истории Смитсоновского института, была пробита 317 пулями. Третий знак появился в 2018 году, но его снова обстреляли всего через 35 дней. Четвертая замена, для которой Телль написал слова, пуленепробиваемая.
«Пулевые отверстия, которые заполняют эти знаки, являются простыми, аффективно заряженными напоминаниями о том, что мы еще не оставили позади расизм, который стоил Тиллу жизни», — написал Телль для New York Times в 2019 году .
За последние десятилетия официальные лица предприняли несколько попыток возобновить дело об убийстве Эммета, но ни одна из них не увенчалась успехом. Во время одной из таких попыток официальные лица эксгумировали его тело, чтобы подтвердить его личность, а затем перезахоронили его в новом гробу.