当前位置: 首页 > news >正文

Material Design

Material Design

参考代码

1. 设计语言

拟真 vs. 扁平

iso7之前,Apple采用的是拟真化设计语言,期望通过模拟现实世界的物体,给用户身临其境的感觉。自metroios7开始的扁平化设计语言则相反,它着意去掉冗余的装饰效果(比如透视、纹理、渐变等等能做出3D效果的元素),让“信息”本身重新作为核心被凸显出来。

Material Design

如果说拟真代表设计语言的一个极端,而扁平代表设计语言的另一个极端,那么Material Design则居于两者之间更偏右的位置。

Material Design中,屏幕里看上去平整的一个 App 界面,事实上不同控件之间都拥有着层级关系。不同控件之间的层级关系会使用阴影作为表示,而阴影的深浅,代表的正是这个控件在 Z 轴的高度:

2. 材料/Material

Material Design 里的材料Material实际上是一种虚构出来的材料,:厚度无限薄(1dp),面积 无限大,能变换造型,也能按照规律移动 —— 你可以把它当做一张纸(事实上,Material Design 曾一度传说要改名为Quantum Paper - 量子纸)。

虽然每一块 Material 都是扁的,但他们所处的环境,其实是一个 3D 空间,这意味着所有处于 Material Design 设置的这个三维环境里的控件,都拥有 XYZ 三个维度,Z轴垂直于屏幕,使用阴影表现材料的高度,阴影越重,Z值越高,距离用户越近。

因此,Material Design 并不是单纯的扁平化,它在保留了扁的控件的同时,采用了立体的虚拟空间, 简言之,Material Design的核心是:扁而不平。

Material Design Lite

MDL中定义了一组样式类mdl-shadow--Ndp,用于声明材料的阴影,N的有效取值为:2/3/4/6/8/16

为元素应用阴影样式类很简单:

<!--为元素声明2dp的阴影-->
<any class="mdl-shadow--2dp">...</any>

3. 色彩/Color

Material Design中的色彩灵感来自于现代建筑、道路标识、路面标记及运动场等 大胆运用色调、高光和阴影,充满动感的场景。

Material Design使用19个调色板(red、pink、purple等)用来约束设计中色彩的使用。 在每个调色板中,色调为500的颜色为基准色,其他颜色是基准色在不同色调(50-900, A100-700) 下的表现。

Material Design Lite

MDL中,我们可以使用样式类mdl-color--{palette}-{hue}来设置背景色,使用样式类 mdl-color-text--{palette}-{hue}来设置前景色:

<div class="mdl-color--red mdl-color-text--grey-50">
    this is a gray text on red background.
</div>

4. 色彩运用

Material Design给出了一些色彩运用在通常条件下的约束:

1. 最多用两个调色板

在一个界面中最多使用两个调色板,从主调色板选择最多三个色调,从辅调色板选择一个强调色。下面的示例选择indigo调色板中的三个色调(100、500和700),从pink调色板中选择色调A200作为强调色:

2. 为文本、图标和分割线应用透明度

通过为文本设置透明度来表达文本的相对重要性:

对于深色背景的浅色文字,最重要的文本使用87%的透明度,次重要的文本使用54%的透明度。提示性文本,例如输入框、标签、被禁止的文字等使用26%的透明度

对于浅色背景的深色文字,最重要的文本使用100%的透明度,次重要的文本使用70%的透明度,其他文本使用30%的透明度

3. 工具栏和状态栏

工具栏大色块应当使用调色板中色调为500的颜色为基准色。状态栏应当选择 调色板中比基准色略深的色调为700的颜色。

4. 使用强调色

在大色块上绝对不要使用强调色,对动作按钮、开关或滑动条之类的组件应当使用强调色

5. 图标/Icon

Google提供了适用于Material Design的图标字体,我们可以直接在前端样式表中使用@font-face引用这些字体。

face用来指定要显示的图标,也可以 使用其对应的数字编码:

<i class="material-icons">&#xE87C;</i>

6. 排版/Typography

Material Design提供了11种规格的文字样式供不同场景下排版使用:

MDL中,使用样式类mdl-typography--{name}声明文本的排版样式:

<h1 class="mdl-typography--title">Hello,Material Design</h1>
<p class="mdl-typography--body-2">this is a demo</p>

相关文章:

  • c++ Map使用
  • 打造终端下mutt收发邮件环境(fbterm,fetchmail,msmtp,procmail,mutt)
  • hosts文件位置
  • jvm调优——eclipse示例
  • 解决boost::asio的WinSock.h has already been included
  • zuul入门(4)zuul的注解@EnableZuulServer和@EnableZuulProxy
  • 《 民办非企业单位许可业务目标文档》
  • Bootstrap图像
  • 将php分页类YII绑定框架,就需要改变风格的基础
  • 我们为什么要了解一下智能家居的技术标准
  • Netflix已经全部迁移到云端
  • grep 信息提取
  • 利用大数据加强医疗保障
  • spring mvc controller间跳转 重定向 传参
  • Centos下MySQL使用总结
  • @jsonView过滤属性
  • 【React系列】如何构建React应用程序
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 【刷算法】从上往下打印二叉树
  • CSS 提示工具(Tooltip)
  • JSONP原理
  • Puppeteer:浏览器控制器
  • React系列之 Redux 架构模式
  • webpack4 一点通
  • 程序员最讨厌的9句话,你可有补充?
  • 蓝海存储开关机注意事项总结
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 软件开发学习的5大技巧,你知道吗?
  • 为视图添加丝滑的水波纹
  • 应用生命周期终极 DevOps 工具包
  • 智能网联汽车信息安全
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​520就是要宠粉,你的心头书我买单
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (16)Reactor的测试——响应式Spring的道法术器
  • (二)hibernate配置管理
  • (二)学习JVM —— 垃圾回收机制
  • (分布式缓存)Redis分片集群
  • (十)c52学习之旅-定时器实验
  • (推荐)叮当——中文语音对话机器人
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)树状数组
  • (转)四层和七层负载均衡的区别
  • (转载)Google Chrome调试JS
  • .jks文件(JAVA KeyStore)
  • .net Application的目录
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET开发人员必知的八个网站
  • ??myeclipse+tomcat
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • [20180224]expdp query 写法问题.txt
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured