Новые сокращения логических свойств и новые свойства вставки для Chromium.
Начиная с Chromium 69 (3 сентября 2018 г.),
логические свойства и значения помогли
разработчики сохраняют контроль над своими международными макетами с помощью логических, скорее
чем физические стили, стили направления и размеры. В Chromium 87 сокращения и
поставлены смещения, чтобы облегчить запись этих логических свойств и значений.
Это перехватывает Chromium до Firefox, в котором есть поддержка сокращений
с 66.
Safari уже подготовила их в своем техническом превью.
Если вы уже знакомы с логическими свойствами, встроенными и блочными осями, не
хотите освежиться, можете пропустить вперед. В противном случае, вот краткое напоминание.
В английском языке буквы и слова располагаются слева направо, а абзацы располагаются сверху вниз.
В традиционном китайском языке буквы и слова идут сверху вниз, а абзацы располагаются друг над другом.
справа налево. Только в этих двух случаях, если мы напишем CSS, который помещает «верхнее поле» в абзац,
мы правильно разделяем только 1 языковой стиль. Если страница переведена на традиционный
Китайский вместо английского, поля могут не иметь смысла в новом режиме вертикального письма.
Поэтому физическая сторона коробки не очень полезна в международном масштабе. Так начинается
процесс поддержки нескольких языков; изучение физических и логических сторон коробочной модели.
Ключевой термин:
Логическое свойство — это свойство, которое ссылается на сторону, угол или ось блочной модели в контексте.
соответствующего языкового направления. Это похоже на упоминание чьей-то сильной руки,
вместо того, чтобы предполагать, что это их правая рука. «Правая» — это ссылка на физическую руку, «сильная» —
логическая ссылка на руку, контекстуальная для человека .
Вы когда-нибудь изучали элемент p в Chrome DevTools? Если да, то у вас может быть
заметил, что стили пользовательского агента по умолчанию
не физические, а логические.
p { маржа-блок-начало : 1em ; край блока-поля : 1em ; начало встроенного поля : 0px ; margin-inline-end : 0px ; }
CSS из таблицы стилей пользовательского агента Chromium
Поля не сверху и не снизу, как может подумать английский читатель.
Это блок-старт и блок-конец ! Эти логические свойства сродни английскому читателю.
сверху и снизу, но также сродни японскому читателю справа и слева. Написано один раз, работает везде.
Нормальный поток — это когда веб-страница намеренно является частью этой разнонаправленности.
Когда содержимое страницы обновляется в соответствии с изменением направления документа, макет и его
элементы рассматриваются в потоке. Узнать больше о «входящем» и «выходящем» из потока
на MDN или в
Спецификация модуля отображения CSS. Хотя логические свойства
не обязаны находиться в потоке, они берут на себя большую часть тяжелой работы по мере изменения направления.
Поток подразумевает направление, в котором буквы, слова и контент должны двигаться.
Это приводит нас к блочным и встроенным логическим направлениям.
Направление блока — это направление, в котором следуют новые блоки содержимого, например, спрашивая себя:
«где поставить следующий абзац?». Вы можете думать об этом как о «блоке содержимого» или «блоке текста».
Каждый язык расставляет свои блоки и упорядочивает их
их соответствующая блок-ось . начало блока — это сторона, на которой абзац размещается первым,
в то время как конец блока — это побочный поток новых абзацев.
Ключевой термин:
Направление блока определяется свойством writing-mode . Например, горизонтальный-tb
(начальное значение) имеет вертикальную ось блока, которая течет сверху вниз ( tb ). Прочие ценности
имеют горизонтальную ось блока, которая может перемещаться слева направо (как в vertical-lr ) или
справа налево (как в vertical-rl ).
В традиционном японском почерке, например, направление блока идет справа налево:
Строковое направление — это направление, в котором идут буквы и слова. Рассмотрим направление
ваша рука и рука путешествуют, когда вы пишете; они движутся вдоль продольной оси . inline-start — это сторона, с которой вы начинаете писать, а inline-end — это сторона
где запись заканчивается или заворачивается. На видео выше, линейная ось расположена сверху вниз,
но в этом следующем видео прямая ось проходит справа налево.
Ключевой термин:
Внутреннее направление определяется как режимом записи так и направлением . Например,
он течет слева направо с горизонтальным tb и ltr справа налево с горизонтальным tb
и rtl сверху вниз с vertical-lr и ltr и снизу вверх с vertical-rl и RTL .
Бытие относительно потока
означает, что стили, написанные для одного языка, будут контекстными и соответственно
применяется на других языках. Контент будет течь в соответствии с языком, на котором оно доставляется.
Новые сокращения #
Некоторые из следующих сокращений не являются новыми функциями для браузера, а проще
способы написания стилей, используя возможность устанавливать значения в обоих блоках
или встроенные края сразу. Вставка - * логические свойства действительно привносят новые возможности,
поскольку не было длинных способов указать абсолютные позиции с логическими свойствами
перед этим. Вставки и сокращения (хе-хе) так хорошо сочетаются друг с другом, я собираюсь
сразу расскажу вам обо всех новых функциях логических свойств, появившихся в Chromium 87.
Сокращение маржи #
Никаких новых возможностей не добавлено, но есть несколько очень удобных сокращений: margin-block и встроенное поле .
Внимание:
Если между указанными выше элементами нет пробелов, то сокращенная запись margin-block не поддерживается в вашем браузере.
блок поля : 2ch ; блок поля : 2-канальный 2-канальный ;
Нет сокращений для «сверху и снизу» или «слева и справа»… до сих пор!
Вы, вероятно, ссылаетесь на все 4 стороны, используя сокращение margin: 10px; и теперь вы
можно легко сослаться на 2 дополняющие друг друга стороны, используя сокращение логических свойств.
Физические свойства вверху справа внизу и слева можно записать
как значения для свойства вставки . Любое значение позиции может быть выгодно
установка сторон со вставкой.
.cover { позиция : абсолютный ; верхний : 0 ; ] справа : 0 ; внизу : 0 ; ] слева : 0 ; вставка : 0 ; }
Физическая рука
положение : абсолютное ; верхнее : 1px ; справа : 2px ; снизу : 3px ; слева : 4px ;
Это должно сразу выглядеть удобно! Врезка — сокращение физических сторон,
и работает так же, как поля и отступы.
Новые функции #
Каким бы увлекательным ни было стенографирование физических сторон, есть еще больше из
логические особенности, привнесенные дополнительными вставками сокращениями. Эти сокращения приносят
удобство разработки для разработчиков (они короче для набора), но также увеличивают
потенциальный охват для макета, потому что они относятся к потоку.
Физическая рука
положение : абсолютное ; верхнее : 10px ; низ : 10px ;
Логическая стенография
положение : абсолютное ; вставка-блок : 10px ;
Физическая рука
положение : абсолютное ; левое : 10px ; справа : 20px ;
Логическая стенография
положение : абсолютное ; вставка-встроенный : 10px 20px ;
Дополнительная литература и полный список стенографических и стенографических вставок.
доступно на MDN.
Пограничные сокращения #
Border, а также его вложенные свойства color style и width ) получили
также новые логические сокращения.
Физическая рука
верхний цвет границы : горячий розовый ; нижний цвет границы : hotpink ;
Логическая стенография
цвет рамки : горячий розовый ; цвет рамки : хотпинк, хотпинк ;
Физическая рука
граница в левом стиле : пунктирная ; граница в правом стиле : штриховой ;
Логическая стенография
пограничный встроенный стиль : штриховой ; пограничный встроенный стиль : штриховая пунктирная ;
Физическая рука
ширина границы слева : 1px ; ширина границы справа : 1px ;
Дополнительная литература и полный список стенографических и полных изображений границ.
доступно на MDN.
Логическое свойство пример №
Давайте соберем все это вместе на небольшом примере. Логические свойства можно разметить
изображение с подписью для различных направлений письма и документа.
Или попробуйте!
Вам не нужно много делать, чтобы карта могла реагировать на международный уровень с помощью
и несколько логических свойств. Если вам интересно, как все это на международном уровне
внимательный CSS работает вместе, я надеюсь, что это небольшое содержательное введение.
Полифиллинг и кроссбраузерная поддержка #
Инструменты Cascade или build — это жизнеспособные варианты, позволяющие использовать как старые, так и новые браузеры,
правильно разнесены с обновленными логическими свойствами. Для резервных вариантов Cascade следуйте физическому свойству
с логическим, и браузер будет использовать "последнее" свойство, найденное во время style
резолюция.
p { крайний верх : 1ch ; нижний край : 2-канальный ;
крайний блок : 1-кан. 2 канала ; }
Но это не совсем полное решение для всех. Вот запасной вариант, написанный от руки
который использует псевдоселектор : lang () для таргетинга на определенные языки, настраивает
их физический интервал соответствующим образом, а затем в конце предлагает логический
интервал для поддерживаемых браузеров:
p { верхний край : 1ch ; нижняя граница : 2ch ; }
: lang (ja) { p { верхний край : 0 ; нижнее поле : 0 ;
Sass, PostCSS,
Emotion и другие имеют автоматизированный сборщик и / или сборку
предложения времени, которые имеют широкий спектр запасных вариантов или решений. Проверьте каждый
чтобы увидеть, какой из них соответствует вашей цепочке инструментов и общей стратегии сайта.
Что дальше #
Больше CSS будет предлагать логические свойства, но это еще не сделано! Не хватает одного большого
набор сокращений, и решение этой проблемы Github все еще не решено.
В проекте есть временное решение. Что, если вы хотите стилизовать все
логические стороны коробки с сокращением?
Текущий проект предложения будет означать, что вы должны писать логический в каждом
сокращение, чтобы применить логический эквивалент, который не звучит
очень СУХОЙ для некоторых.
Есть и другие предложения по его изменению на уровне блока или страницы,
но это может привести к утечке логического использования в стили, все еще принимающие физические стороны.
html { поточный режим : физический ; поточный режим : логический ; }
Это непросто! Отдайте свой голос, выскажите свое мнение, мы хотим услышать ваше мнение.
Хотите больше узнать или изучить логические свойства? Вот подробная ссылка,
вместе с руководствами и примерами на MDN 🤓