Как обрабатывать возвышение в Angular Material 18+?

Согласно спецификации материала 3, различные уровни высоты должны обрабатываться цветом, а не тенью. Однако в моем проекте Angular Material 18 все фоны имеют одинаковый цвет/высоту (например, панель инструментов, панель навигации и карты). Как именно это должно работать? Согласно документации (https://material.angular.io/guide/elevation) я должен использовать классы, но в версии 18+ они, похоже, ничего не делают. Любая помощь будет принята с благодарностью.

Обновлено: https://m3.material.io/styles/elevation/overview

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
2
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кажется, это известная P4 ошибка в угловом материале. Это до сих пор не исправлено, было поднято для углового 15.

ошибка (mat-card): mat-elevation-zx больше не работает для mat-card после обновления до версии 15 — проблема на Github

Проголосуйте за эту проблему, чтобы она была исправлена ​​в будущем.


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

Что касается временного решения.

Все, что вам нужно сделать, чтобы реализовать временный обходной путь от пользователя GoodGuyGregory

@for $i from 0 through 24 {
  .mat-mdc-card.mat-elevation-z#{$i} {
    @include mat.elevation($i);
  }
}

Мы воссоздаем классы высот на уровне таблицы стилей angular, чтобы решить проблему приоритета.

Если для других компонентов углового материала, попробуйте приведенное ниже исправление, которое я использую !important, чтобы гарантировать применение переопределения.

@for $i from 0 through 24 {
  .mat-elevation-z#{$i} {
    @include mat.elevation($i) !important;
  }
}

Таким образом, конечный результат будет:

@use '@angular/material' as mat;

$theme: mat.define-theme(
  (
    color: (
      theme-type: light,
      primary: mat.$azure-palette,
      tertiary: mat.$blue-palette,
    ),
  )
);

body {
  @include mat.all-component-themes($theme);
  font-family: Roboto, 'Helvetica Neue', sans-serif;
  margin: 0;
  padding: 30px;
  height: 100%;
}

html {
  height: 100%;
}

@include mat.core();
@include mat.color-variants-backwards-compatibility($theme);

@for $i from 0 through 24 {
  .mat-mdc-card.mat-elevation-z#{$i} {
    @include mat.elevation($i);
  }
}

Демо-версия Stackblitz

Документация по высоте угловых материалов

Спасибо! Кажется, это работает. Единственная проблема в том, что кажется, что тени используются для возвышения. Какой материал 2 способ. Знаете ли вы, как вместо этого я могу использовать цвета (трехсторонний материал)?

henkenstein 20.08.2024 14:55

@henkenstein Глядя на документы, это способ M3, вы указываете только на документы M3.

Naren Murali 20.08.2024 14:57

Я знаю, что так написано на сайте angular, но согласно спецификации это другое (см. m3.material.io/styles/elevation/overview).

henkenstein 20.08.2024 15:01

@henkenstein Невозможно показать высоту, изменив цвет поверхности элемента, они устанавливают тень блока и показывают глубину, так же, как и то, что делает угловой материал. Если вы хотите, вы можете проверить элемент на элементе материала, и вы это сделаете. Посмотрите, как применена тень блока, точно так же, как это делает угловой материал!

Naren Murali 20.08.2024 16:49

@henkenstein проголосуйте за (^) и поставьте зеленую галочку, если ответ помог, спасибо!

Naren Murali 20.08.2024 16:49

Другие вопросы по теме

Похожие вопросы

Как передать элементы действий от дочернего элемента к родительскому?
Angular: прокрутите страницу до раздела загрузки страницы при переходе к определенному фрагменту URL-адреса
Как обмениваться данными между (несколько экземплярами) двух несвязанных компонентов?
Как правильно расположить фиксированную панель навигации при прокрутке к разделам с одинаковым идентификатором в Angular?
Ошибка TS1383: только именованный экспорт может использовать «тип экспорта»
Angular Material 18: как изменить цвет фона?
Почему проблема NullInjectionError не решена путем добавления ProvideHttpClient() в файл app.config Angular 18
Правильно отформатируйте разделитель тысяч без регулярного выражения
CSS и JavaScript не применяются правильно после переноса содержимого HTML в компонент приложения Angular из-за проблем с инкапсуляцией просмотра и порядком загрузки скриптов
Как применить canActivateFn ко всем маршрутам в автономном приложении Angular?