Material Design Component 4 Web 框架推送

Material Design的Components前篇 组件是 Material Design 区别于 iOS 等其他设计的重要标识,当我们看到 FAB 时我们就知道这是 Material Design;当我们看到底部栏的独特设计时我们也能知道这是 Material Design。想做一款原汁原味的 Material Design 就要了解组件的特征。让我们开始吧! 1. 悬浮球 FAB(Buttons: floating action butto... 阅读详情

MD不用多说了, GUI领域处于统治地位的规范, 上次我们介绍了基于MD实现的web框架mdl, 但是很遗憾mdl的开发团队于多年前放弃这个项目了, 取而代之的是MDC:

Material Design Component

MDC更像是一款ui插件而不是ui框架, 因为mdc里面每一个ui组件都是可以拿出来单独使用的.

在MDC的开发主页上我们可以看到, Google已经贴心的提供了4个端的插件, 分别是Android, IOS, Web以及自家的框架Flutter, 4个项目中Web的star数目是最多的(意料之中), 所以我们web开发者只要关注MDC for Web就好啦:

https://material.io/develop/web/

MDC web是Material Design Lite的继承者,在本文中,我们将介绍如何使用MDC Web的基本设置。

首先声明下MDC的学习成本并不容易, 它本身比较复杂, 但是功能却异常强大?

有两种方法可以包含MDC Web:通过添加几行代码并实例化JavaScript文件或使用MDC Web作为Node模块,使用webpack之类的东西自己捆绑Sass和JavaScript。

我们先来看看添加MDC Web的简单方法。

快速开始

首先,让我们创建一个空白HTML页面,然后创建一个简单的按钮。

<button class=”foo-button mdc-button”>Button</button>


它有一个自定义CSS类。  .foo-button当用户按下或点击按钮时,我们将使用此类来实例化JavaScript并为按钮提供Material Design涟漪效果。

什么都没发生,因为我们还没有添加主CSS文件。您可以通过<link>在HTML文档的头部添加一个指向我们CDN的链接:

<link rel=”stylesheet” href=”https://unpkg.com/material-components-web/dist/material-components-web.min.css">

该按钮现在应该设置样式,但需要JS文件来启用涟漪效果。为此,我们现在需要将JS文件添加到HTMLdoc:

<script src=”https://unpkg.com/material-components-web/dist/material-components-web.min.js"></script>

拼图的最后一部分是实例化按钮。当我们给它一个自定义CSS类时,我们将在调用中引用它。创建JS文件或将其添加到您的HTML文档:

const button = document.querySelector(‘.foo-button’);
mdc.ripple.MDCRipple.attachTo(button);

 

Material Design Icons

MDC还有一个核心成员是字体图标: 

https://material.io/tools/icons/?style=baseline

以前我都是使用fontawesome的, fontawesome有海量的图表但是大部分要付费才能使用(扣码比较累..), 总的来时fontawesome的质量不必MD的icon差, 但是, MDC框架在web领域的垄断地位带动了自己的icon走向主流, 你懂的嘛, 所以fontawesome永远只是一个字体图标, 但MDC自带了字体图标, 我们就默默地抛弃了fontawesome.

要查看一个工作示例,请转到Codepen。我们还有许多工作组件,您可以在我们的网站目录中看到。但是现在让我们稍微定制我们的按钮,但使用MD Icons。首先,我们需要包含图标字体:

<link rel=”stylesheet” href=”https://fonts.googleapis.com/icon?family=Material+Icons">

接下来让我们添加一个带有收藏夹图标的新按钮:

<button class=”bar-button mdc-button”>
<i class=”material-icons mdc-button__icon” aria-hidden=”true”>favorite</i>
    Favorite
</button>

我们还可以通过向它们添加不同的类样式来编辑一些按钮样式。我们有六种不同的样式选项,默认为平面按钮。还有一个凸起的,未提升的,概述的图标。密集的。您可以在此处查看有关按钮的更多文档。

随着我们添加越来越多的按钮,上面的代码会变得非常重复。因此,我们可以通过以下两种方式之一进行重构:通过创建数组然后运行forEach循环或使用名为auto-init的实用程序。

Foreach [ Codepen ]

const buttons = document.querySelectorAll(‘.mdc-button’);
for (const button of buttons) {
   mdc.ripple.MDCRipple.attachTo(button);
}

 

自动初始化[ Codepen ]

MDC所有的html元素都要被js初始化一下才能'注入灵魂', 成为可用的UI元素, 但是一个个元素attachTo一下太麻烦了, MDC提供了一个一键初始化的api:

https://material.io/develop/web/components/auto-init/

如果您正在创建一个基本的静态站点,auto-init是一个很棒的实用工具。您确实失去了对单个元素的控制,因此它仅适用于简单的网站。您需要添加一个data-*属性,然后在JS文件中调用autoInit一次:

<button class=”mdc-button mdc-button — outlined” data-mdc-auto-init=”MDCRipple”>
   Outline
</button>

然后在JS我们添加:

mdc.autoInit();

就好啦.

 

SASS?

MDC对SASS提供了很好的支持, 但是那是对于框架本身的开发人员提供了方便(没错, MDC本质上是其他UI框架的底层组件, 并不专注于开发者'拿来即用', 谷歌很喜欢开发这种'depended-upon'的东西, 从chromium和思源黑体可以看出). 但是我还是喜欢直接拿来直接用, 虽然有时候麻烦了点, 但是官方支持的永不过时, 我喜欢在codepen上找现成的代码拿来用, 但是要自己修改一下, 很方便.

SASS和less一样都是css的预编译语言, 就和目前的typescript一样, 要编译成浏览器原生支持的JavaScript和css才能使用, 我并不是很喜欢这种开发模式, 因为一旦下一代浏览器的标准库支持了sass的语法, sass就过时了. 所以sass本身是个好东西但我不是很愿意去学.......因人而异吧?

 

总结

虽然MDC很有可能成为一个"基础框架"而不是一个适合拿来即用, 容易上手的组件, 但是还是墙裂推荐就把他拿来即用, 因为即使第三方框架更容易上手, 但是学习第三方的时间成本却很大, 而且第三方开发者众多, 很难保证质量, 只有Google自己开发的东西才有保障.

 

特别感谢MDC团队,Lynn Jepson,Patty Rodee,Will Ernest,Mathias Bynens,Jason Miller和Jeffrey Posnick。

Material Components 入门教程:拥抱 Material Design 组件库 Material Design Components(MDC)是Google推出的开源组件库,实现了Material Design规范,支持Android、iOS、Web和Flutter等平台。MDC提供标准化UI组件(如按钮、卡片、输入框等),帮助开发者快速构建美观且一致的用户界面。各平台有专属实现方式,如Android通过Gradle引入,Web支持npm安装。使用MDC能减少重复开发工作,确保设计规范遵循,并自动适配最新设计标准。文中以Android为例,演示了如何创建包含Material组件的表单界 阅读详情

相关推荐

Material Components Material Design组件入门教程

Material Design是Google推出的设计语言,Material Components是其官方UI组件库,可帮助开发者快速实现精美的界面效果。文章介绍了Material Design的核心设计理念,包括材质隐喻、有意义的动效等,并重点讲解了Material Components for Android的使用方法。通过按钮、文本输入框、卡片和底部导航栏等基础组件的代码示例,展示了如何轻松创建符合Material规范的应用界面。该组件库能显著提升开发效率,同时确保应用具备一致性和高质量的交互体验。

D3bugRealm的博客 1336

详解Material Design体系组件

iOS 或 Material Design的设计指南,都是按照组件的属性来系统介绍。 一般把Control翻译成控件,把Component翻译成组件。通俗的解释说法就是组件为多个元素组合而成,控件为单一元素。但是Material Design把我所认为的控件和组件都合为一体,统称为组件。摊手。 先看一张Material Design所有组件的思维导图:

qq2367782640的博客 808

MATLAB R2025a:建模即部署的工程化分水岭

在工业软件工程实践中,‘建模’与‘部署’长期存在割裂——模型仿真精度高,但生成代码无法落地产线。其本质是传统工具链中建模环境与目标平台运行时缺乏统一数值基础与约束机制。MATLAB R2025a通过重构底层代码生成内核、引入部署就绪检查、强化硬件-软件协同验证,首次实现建模过程对嵌入式、Web、Docker等多目标部署的原生适配。该版本不仅提升代码生成一致性与数值鲁棒性,更将DO-178C认证、WebAssembly导出、离线硬件绑定等工业级能力前置到设计阶段。面向自动化控制、电池管理、教学建模等典型场景,

weixin_33910759的博客 423

材料设计组件库:Material Components 实践指南

材料设计组件库:Material Components 实践指南 项目介绍 材料设计组件库(Material Components) 是基于谷歌的材料设计规范构建的一套高质量的UI组件集合。此项目位于 GitHub,为开发者提供了一整套实现材料设计风格的应用界面工具。它涵盖了一系列从基础到高级的UI元素,如按钮、卡片、对话框、导航栏等,旨在帮助开发者迅速搭建符合材料设计原则的应用程序。 项目快速启...

gitblog_00131的博客 1097

AI前端全链路开发:语义锚点驱动的七步工作流

前端开发正从单点AI辅助迈向全链路智能协同,其核心在于建立贯穿需求、UI、逻辑、测试、构建与监控的统一语义体系。不同于泛化的代码补全或设计生成,真正提效的关键是‘语义锚点’——将人类意图结构化为机器可验证的契约(如需求四元组、组件声明、用户行为流),再由AI作为翻译器与执行者实现闭环反馈。这种范式显著降低跨角色理解损耗,提升需求到上线的端到端确定性,并天然支持工程可审计、可迭代、可定制。本文聚焦落地实践,详解如何基于Figma语义标注、结构化提示词、原子化代码注入与Git驱动的AI进化机制,构建可控、可信、

dixi7825的博客 459

Django全栈开发:从模板到Vite+DRF的前端工程化实践

Web开发中,前后端分离与工程化是提升应用可维护性和开发体验的核心趋势。其原理在于通过模块化、组件化将界面逻辑与业务逻辑解耦,利用构建工具优化工作流。这一模式的技术价值在于实现了关注点分离,让开发者能采用各自技术栈的最佳实践,同时通过自动化构建、热更新等提升开发效率。在应用场景上,无论是需要快速迭代的管理后台,还是追求用户体验的复杂单页应用,都能找到合适的架构方案。本文聚焦于Django生态,探讨如何整合Vite等现代前端工具链与Django REST Framework,为后端开发者提供一套平滑过渡到高效

weixin_30527423的博客 338

FanControl 风扇控制实战教程:画出温度转速曲线,一次搞定噪音与高温

FanControl 是一款面向 Windows 的开源风扇控制软件,它接管 CPU、GPU 与机箱风扇的转速,让“温度→转速”完全按你画的曲线走。本文面向觉得风扇“负载一起就猛窜、降温后迟迟不降”的 Windows 10/11 台式机用户,带你走通从环境自查、跑起来、画曲线、精调防抖,到排错速查与维护节奏的完整路线。 ## 动手前,先把三件事核对清楚 先确认当前机器用不用得起来。FanCon

gitblog_00971的博客 856

Claude Code插件开发指南:Skills、MCP与Hooks协同实战

Claude Code插件是将通用AI能力转化为团队专属生产力的关键技术。其核心由三类组件构成:Skills负责高层语义意图理解与策略生成,MCP Servers提供标准化外部数据接入能力,Hooks则实现事件驱动的确定性系统干预。三者并非功能替代关系,而是分层协作的工程范式——Skills定义‘做什么’,MCP解决‘从哪获取数据’,Hooks保障‘如何强制落地’。这种分层设计显著降低Token开销、提升上下文效率,并支撑代码规范固化、安全审计闭环、CI/CD集成等典型工程场景。本文以session-log

weixin_34195142的博客 473

Material Sense与Create React App集成:从零到生产部署全流程

Material Sense是一个基于Material UI设计的React模板项目,专为创建丰富的应用程序而设计。这个开源项目提供了完整的仪表板、向导、图表和卡片等组件,让开发者能够快速构建现代化的Web应用界面。通过Create React App脚手架,Material Sense为React开发者提供了一个完整的起点,包含了生产环境部署所需的所有配置。 ## 📋 Material Se

gitblog_00580的博客 304

从 Hello World 到可运维接口,SAP Cloud Integration 的第一个 Integration Flow 该怎么学

文章摘要:SAP Cloud Integration 的核心在于理解消息在 Integration Flow(iFlow)中的全生命周期处理过程,而非单纯掌握适配器参数。初学者应从简单的 Timer 触发场景入手,逐步掌握消息加工、外部调用(如 OData)和发送(如邮件)等基础能力,再过渡到 HTTPS Sender 等实时接口场景。iFlow 通过中间处理步骤(映射、路由、脚本等)实现系统间协议转换和业务逻辑,其设计需兼顾连接性、安全性和可运维性。开发过程中需优先验证基础能力(部署、监控、日志),再逐步

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1211

从预置集成包到可上线接口,SAP Cloud Integration 内容复用的正确打开方式

本文探讨了SAP Cloud Integration中预置集成内容(Prepackaged Integration Content)的高效利用策略。文章指出,在SAP Integration Suite中,许多业务场景无需从零开发,可直接复用SAP提供的标准集成包(Integration Package),这些包包含iFlow、映射配置、文档等完整组件。作者强调应从"发现-评估-复制-配置"的完整生命周期来管理这些资产,包括在Discover区域筛选合适内容、关注Support信息、复制到Design空间后

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1145

[io PWA] keynote: Launching a Progressive Web App on Google.com

Mainly about Material design (effects / colors / flashy stuff) Components (web components / polymer) Offline / notifications (Service worker / iDB / Firebase) Progressive web app: HTTPS ...

weixin_30718391的博客 79

从 Tenant 到 Integration Flow,读懂 SAP Cloud Integration 云端集成场景的骨架

摘要: SAP云端集成项目常因忽视整体架构而陷入困境。正确的实施应从清晰的架构图入手,将Cloud Integration作为枢纽连接各类系统(如S/4HANA、SuccessFactors等),而非仅关注接口开发。关键点包括:1)集成链路需同步设计流程(iFlow)、安全材料(证书/OAuth等)和运行时监控;2)Tenant作为安全边界需明确环境隔离(DEV/TEST/PROD)和权责划分;3)安全需分层实现——传输层(HTTPS/SFTP)保障通道安全,消息层(签名/PGP)保障内容安全。忽视这些基础

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1787

Dash数据仪表盘实战:从原理到生产部署全解析

Dash 是一个基于 Python 的开源 Web 框架,专为数据科学家快速构建交互式仪表盘而设计。其核心原理是将前端 UI 组件(如下拉框、图表)与后端回调函数通过声明式依赖(Input/Output)绑定,形成响应式数据流引擎,避免传统 Flask+AJAX 的胶水代码和跨团队协作成本。技术价值在于大幅降低交付门槛——无需前端经验即可实现动态筛选、实时联动与深色主题等企业级功能。典型应用场景包括业务决策看板、销售漏斗分析、ERP 系统嵌入式预警模块,以及需 7×24 小时稳定运行的生产环境仪表盘。本文深

weixin_30546189的博客 737

material-components-web-components:材料设计Web组件

材质Web组件 重要说明:Material Web Components尚在开发中,在1.0发行之前可能会有重大更改。 Material Web Components(MWC)是由Google维护的实现的的集合。 成分 成分 状态 问题 <mwc> <mwc> <mwc> <mwc> <mwc> 快速开始 1)安装 从NPM安装组件: npm install @material/mwc-button @webcomponents/webcomponentsjs 2)编写HTML和JavaScript 导入组件JavaScript模块,在HTML中使用该组件,然后使用JavaScript对其进行控制,就像使用诸如<button>类的内置元素一样: <!doctype html > < html

ESXI 8.0虚拟机安装OpenWRT软路由详细教程

OpenWrt 是嵌入式的 Linux 路由器固件,OpenWrt在稳定运行的同时提供了强大的扩展能力,用户可以完全的定制属于自己的路由系统,满足不一样的个性化需求,本文讲解如何使用ESXI安装OpenWRT,打造属于自己的软路由。本次安装使用的是版本。默认登录信息:用户:root密码:password下载固件:https://github.com/haiibo/OpenWrt/releases/tag/X86_64【CPU配置】:4核心。

qq_27121281的博客 3917

旅行行程规划应用HarmonyOS ArkTS API 24自定义组件使用@Component进行装饰,框架会为被装饰的 struct 生成组件注册表项,使其能够在声明式 UI 的嵌套体系中被实例化

在移动互联网与智能穿戴设备高度普及的今天,"习惯养成"已经从一个模糊的自我管理理念,演变为一个可量化、可追踪、可视化的数字化产品赛道。越来越多的人希望借助手中的智能终端,把"早起、冥想、阅读、运动"这些抽象的自律行为,转化为一条条清晰的数据曲线和一张张可触摸的打卡卡片。而鸿蒙生态(HarmonyOS)凭借其跨设备协同、分布式软总线以及声明式 UI 开发框架 ArkUI,为这类注重"轻量化交互 + 即时反馈"的生活方式类应用提供了极为理想的生长土壤。本应用正是一款面向"晨间场景"深度打磨的习惯追踪工具。它聚焦

2301_79516720的博客 164

离散系统傅里叶变换的常用结论证明

本文介绍了离散系统傅里叶变换的三个重要结论:1)时域卷积对应频域相乘(公式1-3);2)时域相乘对应频域卷积(公式4-6);3)帕塞瓦尔定理(公式7)及其广义形式,证明信号能量在变换域保持不变。文末提供了MATLAB卷积运算演示程序,通过动画展示离散信号卷积过程(翻转、平移、相乘、累加),并以方波信号为例给出运行结果图。该程序直观呈现了卷积运算的步骤与结果。

newtton的博客 1306

Plotly Express + Dash 快速搭建交互式数据看板

交互式数据看板是现代数据分析的核心交付形式,其本质是将静态图表升级为支持筛选、联动、钻取的动态Web应用。技术原理上依赖声明式前端框架与Python后端逻辑的松耦合协同,通过回调机制实现状态同步与响应式更新。Plotly Express 提供面向DataFrame的高阶绘图API,大幅降低可视化开发门槛;Dash 则封装了路由、组件通信与服务端渲染,使数据工程师无需前端基础即可构建生产级应用。该方案在内部看板、MVP原型和部门级数据共享等场景中具备显著工程优势,尤其适合Pandas使用者快速落地真实可用的数

weixin_30482181的博客 393

PCIe中ACS知识小记

虚拟机内部的访问数据显而易见是带的GPA地址。而目前几乎所有的PCIe 设备都带ACS control,所以它们可以单独assign给不同的VM,但是随之而来的就是即使两个GPU同时assign给同一个VM,由于ACS的存在,他们之间也不会有真正的物理层面的P2P访问。每一个TLP都自带一个address(寻址类TLP),同时每一个endpoint,PCIe switch都自带一段BIOS配置的地址空间范围,一旦这个TLP的address落入某个设备的地址范围,那么这个TLP就属于这个设备并消费。

Summer的博客 5078

从AMCL到SLAM Toolbox:在Nav2中实现高精度纯定位的实践指南

本文详细介绍了从AMCL迁移到SLAM Toolbox纯定位模式的实践指南,帮助开发者在Nav2中实现高精度定位。通过对比AMCL与SLAM Toolbox的性能差异,提供环境配置、参数调优、Nav2集成等关键步骤,显著提升机器人在动态环境中的定位精度和重定位效率。

weixin_29292535的博客 148

Vue 完整版系统知识文档

《Vue全栈开发实战手册》摘要 本手册系统整合Vue2/Vue3全栈知识体系,涵盖基础语法、组件开发、状态管理、工程化等核心内容,适合从入门到精通的完整学习路径。主要特点: 基础核心 详解MVVM架构和响应式原理(Vue2的Object.defineProperty vs Vue3的Proxy) 完整模板语法规则与16种内置指令解析 组件系统核心:通信机制(8种方案)、插槽、动态组件、递归组件 进阶实战 状态管理:Vuex/Pinia完整解决方案 路由开发:动态路由、权限控制、懒加载 工程化:Webpack

专注 Java 后端开发,分享基础语法、JVM、并发、Spring 全家桶、微服务、分布式、性能优化等实战干货。坚持输出高质量技术笔记,用简单语言讲清复杂原理,助力每一位 Java 开发者稳步进阶。 402

14.建立时间、保持时间以及vivado时序report的参考使用

在设计数字系统时,需要仔细考虑电路元件的选择和布局以及时序设计来满足建立时间和保持时间的要求。建立时间,又称为建立时间窗口或建立期,是指数字信号在触发器的时钟信号前沿到来之前,必须已经稳定存在的时间。在本章节将结婚扫建立时间和保持时间的基本原理,以及如何通过vivado处理建立时间和保持时间。通过使用同步电路,可以更好地控制数据传输的时序并满足建立时间和保持时间的要求。例如,在D触发器中,选择具有适当充电和放电特性的D端口元件可以确保在时钟信号前沿到达前数据已经稳定存在,并在时钟信号前沿到达后保持稳定。

FPGA/MATLAB学习教程/源码/项目合作开发 2989
上一篇: 函数式编程与Filter-MapReduce
下一篇: 10大反直觉的数学结论
xosg
xosg 领域专家: 网络协议与安全技术领域 领域专家: 网络协议与安全技术领域
博客等级 码龄9年 1986粉丝 864原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xosg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值