[Перевод] Вышел Chrome 118

Эта статья — перевод оригинальной статьи «New in Chrome 118».

Также я веду телеграм канал «Frontend по-флотски», где рассказываю про интересные вещи из мира разработки интерфейсов.

CSS @scope.

Правило @scope at-rule позволяет разработчикам распространять правила стилей на заданный корень описания и стилизовать элементы в соответствии с близостью к этому корню.

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

без @scope, применяемым стилем является последний объявленный

.pink-theme a { color: hotpink; }
.lightpink-theme a { color: lightpink; }

aea7383bc3d900c898b7942ba3265334.png

С помощью @scope можно иметь вложенные элементы, при этом применяется стиль ближайшего предка.

@scope (.pink-theme) {
    a {
        color: hotpink;
    }
}

@scope (.lightpink-theme){
    a {
        color: lightpink;
    }
}

9a1188e3e0403d57c14ce13a1264cf56.png

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

Без @scope

I'm the main title

I'm the main title, but somewhere else

.first-container__main-title {
  color: grey;
}

.second-container__main-title {
  color: mediumturquoise;
}

С @scope

I'm the main title

I'm the main title, but somewhere else

@scope(.first-container){
  .main-title {
   color: grey;
  }
}
@scope(.second-container){
  .main-title {
   color: mediumturquoise;
  }
}

С помощью @scope можно также стилизовать компонент, не стилизуя некоторые вложенные в него элементы. Таким образом, можно создать «дыры», к которым не будет применяться стиль, заданный в области видимости.

Как в следующем примере, мы можем применить стиль к тексту и исключить элементы управления, или наоборот.

b821ae64113ecd92762bbd1a40485df9.png

Drink water

hydration is important

not in scope

Exercise

move it move it

@scope (.component) to (.click-here, .link-here) {
  div {
    color: purple;
    text-align: center;
    font-family: sans-serif;
  }
}

Более подробную информацию можно найти в документации по @scope.

scripting и мультимедийные функции prefers-reduced-transparency

Мы используем медиазапросы для создания пользовательского опыта, который адаптируется к предпочтениям пользователя и условиям устройства. В этой версии Chrome добавлены два новых значения, которые могут быть использованы для адаптации пользовательского опыта: scripting и prefers-reduced-transparency.

Мы можем считать само собой разумеющимся наличие скриптов при работе в вебе, однако они не всегда включены. Теперь с помощью функции scripting медиазапросов можно определить наличие скриптов и применить определенные стили для каждого случая. Доступные значения: enabled, initial-only или none

@media (scripting: none) {
  .script-none {
    color: red;
  }
}

Еще одно значение, которое можно проверить с помощью медиазапросов, — prefers-reduced-transparency, позволяющее разработчикам адаптировать веб-контент к выбранным пользователем предпочтениям по уменьшению прозрачности в ОС, например к настройке Reduce transparency в macOS. Возможные варианты: reduce или no-preference.

.translucent {
  opacity: 0.4;
}

@media (prefers-reduced-transparency) {
  .translucent {
    opacity: 0.8;
  }
}

А проверить, как это выглядит, можно с помощью DevTools:

Для получения дополнительной информации ознакомьтесь с документацией по scripting и prefers-reduced-transparency.

Улучшения панели source в DevTools

В панели Sources в DevTools реализованы следующие улучшения: функция workspace улучшила согласованность, в частности, панель Sources > Filesystem переименована в Workspace вместе с другими текстами пользовательского интерфейса, Sources > Workspace также позволяет синхронизировать изменения, сделанные в DevTools, непосредственно с исходными файлами.

Кроме того, теперь можно изменять порядок расположения панелей в левой части панели Sources путем перетаскивания, а панель Sources теперь может красиво выводить inline JavaScript в следующих типах сценариев: module, importmap, speculationrules и подсвечивать синтаксис скриптов типа importmap и speculationrules, которые содержат JSON.

dda4012804b34a79d78230931f523741.png

Подробнее об обновлениях Chrome 118 DevTools читайте в разделе «Что нового в DevTools».

И ещё!

Конечно, есть и ещё.

© Habrahabr.ru