Angular Material - Mat-Dialog - изменение эффекта размытия/затемнения фона

Привет, мое любимое сообщество,

Использование angular с угловым материалом.

С конфигурацией по умолчанию, когда вы открываете диалоговое окно материала, фон немного затемняется. Теперь я хотел бы, чтобы вместо этого был размытый фон. Я пытался поиграть со стилями css, но не смог изменить фон окна (не смог получить правильный селектор внутри шаблона компонента).

Я просмотрел документацию, но там ничего нет. Я могу еще немного поиграть со стилями, так как я уверен, что есть какой-то хитрый способ, но, учитывая, что эффект затемнения уже есть из коробки, я бы предположил, что функция тем также должна быть доступна из коробки. Что ты думаешь?

Angular Material - Mat-Dialog - изменение эффекта размытия/затемнения фона

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
7
0
23 604
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

Я думаю, вы пропустили свойство MatDialogConfig — фоновый класс в документации.

Check this StackBlitz DEMO for a simple example

Из этой ДЕМО:

диалог-обзор-example.ts:

openDialog(): void {
  const dialogRef = this.dialog.open(DialogOverviewExampleDialog, {
    width: '250px',
    data: {name: this.name, animal: this.animal},
    backdropClass: 'backdropBackground' // This is the "wanted" line
  });

  dialogRef.afterClosed().subscribe(result => {
    console.info('The dialog was closed');
    this.animal = result;
  });
}

стили.css:

.backdropBackground {
  /* your css needs */
}

Спасибо @benschabatnoam, это именно то, что я искал. Я не знаю, как я мог пропустить это в документации, это прямо вверху.

qubits 12.03.2019 08:31

мы можем использовать этот класс для размытия фона с помощью непрозрачности

Darshan theerth 21.09.2020 15:03

@Darshantheerth уверен, что можете, я обновил образец stackblitz, чтобы показать вам, как использовать правильный CSS

benshabatnoam 22.09.2020 19:02

Данный ответ @benshabatnoam абсолютно правильный, но в документации также есть еще одна возможность полностью отключить фон.

hasBackdrop

Вот пример:

https://stackblitz.com/edit/angular-ei9hdv

Вы можете добиться хорошего эффекта, комбинируя непрозрачность и размытие. Делайте так:

Добавьте backdropClass к параметрам диалога:

backdropClass: "bdrop"

И эти правила для вашей таблицы стилей:

.bdrop {
    background-color: #bbbbbbf2;
    backdrop-filter: blur(4px);
}

Демо: https://angular-blurred-dialog-backdrop-zdyvpc.stackblitz.io/

Также вы можете просто переопределить класс .mat-dialog-container {} в своем styles.scss

.mat-dialog-container {
  box-shadow: 0px 11px 15px -7px rgb(0 0 0 / 20%), 0px 24px 38px 3px rgb(0 0 0 / 14%), 0px 9px 46px 8px rgb(0 0 0 / 12%);
  background: #fff;
  color: black;
}

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