首页 > 其他分享 >全新 UI 震撼来袭!ng-matero v18 正式发布!

全新 UI 震撼来袭!ng-matero v18 正式发布!

时间:2024-07-02 22:43:58浏览次数:19  
标签:v18 主题 mat Material matero ng theme

前言

断断续续折腾了近两周,ng-matero v18 终于发布了。其中最大的亮点是启用 Material 3 主题以及全新的 UI 设计。特别说明,这是 ng-matero 发布五年以来首次 UI 大改版!本文重点聊一下 Material 3 的使用方式以及 v18 的几个小变化。

仓库:https://github.com/ng-matero/ng-matero
预览:https://ng-matero.github.io/ng-matero/

如何使用 Material 3 主题

为了适配 M3,Angular Material 从 v16 开始对主题系统进行了大刀阔斧的改动。v16 将所有主题样式全部拆分到 CSS token 中;v17 在 Material 实验库中增加 M3 的 CSS token,提供实验性支持;v18 正式发布 M3 主题,所有 M2 主题配置都增加 m2- 前缀。

这些变化在用户层面是无感知的,使用 ng update 自动升级时,原有配置都会自动添加 m2- 前缀。使用 M3 主题的方式如下:

@use '@angular/material' as mat;

@include mat.core();

$my-theme: mat.define-theme((
  color: (
    theme-type: light,
    primary: mat.$violet-palette,
  ),
));

html {
  @include mat.all-component-themes($my-theme);
}

如果使用了 Material 的扩展组件库,则必须使用 mat.private-deep-merge-all 额外处理一下主题配置的合并。

@use '@angular/material' as mat;
@use '@ng-matero/extensions' as mtx;

...

$my-theme: mat.private-deep-merge-all(
  mat.define-theme($my-config),
  mtx.define-theme($my-config)
);

html {
  @include mat.all-component-themes($my-theme);
  @include mtx.all-component-themes($my-theme);
}

讲几句题外话,增加 M3 主题之后,Angular Material 的主题系统变得更加复杂,想要扩展 Material 的组件的难度也加大了。通过 define-theme 生成的配置项结构如下:

$theme: (
  _mat-theming-internals-do-not-access: (
    theme-version: 1,
    theme-type: light,
    palettes: (...),
    color-tokens: (...),
    typography-tokens: (...)
    ...
  )
)

所以,Material 扩展库的主题配置也必须使用 _mat-theming-internals-do-not-access 作为 key 才能融合到已有的主题系统中。如果有时间的话,我会专门写文章介绍 Angular Material 的主题系统。

如何自定义 Material 3 主题

在 Material 3 中,增加了一个 color roles 的概念(什么是 color roles?),主题定制就是更改这些颜色变量。

在 Angular Material 中,所有 color roles 都有对应的 CSS token,但是默认情况下,Angular Material 的组件都是从主题配置的调色盘中取色的,这些 CSS token 并不会暴露出来。如果想使用自定义主题,必须用下面的方式开启:

$my-material-app-theme: mat.define-theme(
  (
    color: (
      theme-type: light,
      primary: mat.$azure-palette,
      tertiary: mat.$blue-palette,
      use-system-variables: true, // 

标签:v18,主题,mat,Material,matero,ng,theme
From: https://www.cnblogs.com/nzbin/p/18264665

相关文章

  • Spring AI使用
    一、背景2024年5月30日发布了SpringAI1.0.0Milestone1,代表spring项目中引入包括LLM之类的AI类进入stable状态。jdk要求java17以上体现出AI项目的未来趋势,更对企业开发环境升级提出了要求。聊天模型:包括OpenAI、AzureOpenAI、AmazonBedrock、Cohere’sCommand、AI2......
  • 【力扣 - 每日一题】3115. 质数的最大距离(一次遍历、头尾遍历、空间换时间、埃式筛、
    原题链接题目描述给你一个整数数组nums。返回两个(不一定不同的)质数在nums中下标的最大距离。示例1:输入:nums=[4,2,9,5,3]输出:3解释:nums[1]、nums[3]和nums[4]是质数。因此答案是|4-1|=3。示例2:输入:nums=[4,8,2,8]输出:0解释:nums[2]是质......
  • golang 构建标签(go:build)条件编译
     //go:build是Go语言(golang)中的一种构建标签(buildtag),用于控制源代码文件在特定条件下是否被编译。这个注释标记允许你在同一个包内编写针对不同平台、操作系统或编译条件的代码。当gobuild或gotest等命令执行时,它们会检查这些标签来决定哪些文件应该包含在构建过程中......
  • SpringMVC和Servlet域对象
    SpringMVC和Servlet域对象1.Servlet域对象介绍1.1三大域对象Servlet有三个域对象分别是请求域(request)、会话域(seesion)和应用域(application)。域对象与数据的共享密不可分。通过方法可以向域对象中存储key:value键值对形式的数据。三个域对象都有以下通用方法,通过这些方法来达......
  • 区分公有地址和私有地址, golang实现
     区分公有地址(PublicIPAddresses)和私有地址(PrivateIPAddresses)主要依据它们的分配、使用范围以及是否能在全球互联网上直接路由。 以下是一些关键区别:  分配和管理: 公有地址:由互联网地址分配机构(InternetAssignedNumbersAuthority,IANA)管理......
  • Django框架之Cookie和Session概念,Django操作cookie,Django操作Session,CBV添加装饰器
    ⅠDjango框架之Cookie和Session概念【一】Cookie与Session的发展史Cookie和Session是用来在Web应用程序中跟踪用户会话数据的两种常用技术。【1】Cookie的发展史1994年,网景通信公司推出了第一个浏览器Cookie技术。Cookie是存储在用户计算机上的小型文本文件,用于跟踪用户......
  • 仿论坛项目--初识Spring Boot
    1.技术准备技术架构•SpringBoot•Spring、SpringMVC、MyBatis•Redis、Kafka、Elasticsearch•SpringSecurity、SpringActuator开发环境•构建工具:ApacheMaven•集成开发工具:IntelliJIDEA•数据库:MySQL、Redis•应用服务器:ApacheTomcat•版本......
  • Django 多对多关系
    多对多关系作用Django中,多对多关系模型的作用主要是为了表示两个模型之间的多对多关系。具体来说,多对多关系允许一个模型的实例与另一个模型的多个实例相关联,反之亦然。这在很多实际应用场景中非常有用,比如:博客和标签:一篇博客文章可以有多个标签,一个标签也可以属于多篇博客......
  • SpringBoot的重要考点--自动配置
    SpringBoot的自动配置是其核心特性之一,它允许开发者快速启动和运行Spring应用,而无需编写大量的样板代码。SpringBoot的自动配置主要通过以下几个方式实现:@EnableAutoConfiguration:这个注解是SpringBoot自动配置的入口,它告诉SpringBoot根据类路径中的jar包和配置文件来......
  • Nginx proxy manager反向代理docker hub
    1.域名解析用作反向代理的域名要提前解析,如果使用外国的DNS域名提供商的话,最好提前一天解析好。2.配置NPM2.1.Details选项卡2.2.SSL选项卡2.3.Advanced选项卡location/{#Dockerhub的官方镜像仓库proxy_passhttps://regis......