打开MASA Blazor的正确姿势3.3:组件样式
一、关于组件样式的理解
1、框架和组件
前面我们已经说过,现代前端技术,无论是在框架层面(Blazor、Vue、React等),还是组件层面(Bootstrap、MASA Blazor、ElementUI、AntDesign等),本质上都是对HTML、CSS和JS的组合和封装。框架层面,主要解决HTML和JS的问题;而组件层面,在框架基础上,主要解决CSS样式问题(以上说法可能不全面,但大体是这个意思)。
2、组件样式
每套组件,都会在自己的审美标准上,定义一套CSS样式。这套样式的使用主要通过两种方式:一是组件商在定义组件时自己使用,并选择性的以组件属性的方式,暴露部分可定制的样式出来,使我们可以通过组件属性的方式,便捷的定制组件样式;二是我们也可以直接通过HTML原生元素的class属性,直接使用这套CSS样式。
3、快速掌握MASA Blazor组件样式的方法
如上所述,快速掌握一套新的组件样式的方式,一是掌握样式表中定义的常用样式,这些样式,我们可以直接在HTML原生标签上直接使用;二是掌握组件属性中,常用的样式属性。我觉得通过这两个方式,大概能快速掌握组件样式定义的80%左右范围。
4、补充:MASA Blazor中的Class和Style属性
在MASA Blazor的官方组件中,一般都有Class和Style属性(首字母大写),使用方法虽然和HTML元素的class/style差不多,但两者并不是同一个东西。官方组件中定义的Class/Style,本质上是组件内部通过[Parameter]标注的属性参数(此处指类的属性),接收到父组件传过来的Class/Style值后,在组件的内部使用。这个样式值可能使用在组件内部的div标签上,也可能用在p标签上,甚至是用在其它的官方自定义组件上。
二、掌握MASA Blazor样式表中的常用样式(class/Class中使用)
1、布局:MASA Blazor定义了两套布局样式,Flex弹性布局和Grid网格布局,这部分在后续章节单独说明。
2、颜色:MASA Blazor遵循MaterialDesign风格,定义了一套颜色样式,可用于定义背景颜色和文字颜色。
//基本用法:
<div class = "red"></div> //HTML原生标签上,定义红色背景
<div class = "red lighten-2"></div> //HTML原生标签上,定义红色背景亮两度
<span class = "red--text text--darken-1"></span> //HTML原生标签上,定义红色文本加深一度
<MCard Class="red green--text"></MCard> //MASA Blazor组件标签上,定义红色背景、绿色广西
<MButton Color="primary"></Button> //MASA Blazor组件标签上,定义预设主题色
-
20个色系:
.red红色.pink粉色.purple紫色.deep-purple深紫色.indigo蓝紫色.blue蓝色.light亮蓝色.cyan青色.teal蓝绿色.green绿色.light-green亮绿色.lime柠檬色.yellow黄色.amber琥珀色.orange橙色.deep-orange深橙色.brown棕色.blue-grey蓝灰色.grey灰色.black黑色
-
色系标准色基础上,加深或减淡:
.lighten1~5减淡5个等级.darken1~4加深4个等级.accent1~4突出4个等级(主要用于文字)
-
预制主题色:
.primary主色.secondary黑暗.accent着重.info信息.success成功.warning警告.error出错.none高亮
3、文字
-
大小(支持响应式):
.text-h1h1标题.text-h2h2标题.text-h3h3标题.text-h4h4标题.text-h5h5标题.text-h6h6标题.text-subtitle-1副标题1.text-subtitle-2副标题2.text-body-1正文1.text-body-2正文2.text-button大写加大.text-overline大写加宽.text-caption加细
-
装饰线:
.text-decoration-none无装饰线.text-decoration-line-through删除线.text-decoration-overline上划线.text-decoration-underline下划线
-
加粗变细:
.font-weight-black加黑加粗.font-weight-bold明显加粗.font-weight-medium普通加粗.font-weight-regular正常.font-weight-light减淡.font-weight-thin变细.font-italic斜体
-
透明度:
.text--primary在深色主题中为100%透明度,在亮色主题中为87%透明度.text--secondary在深色主题中为70%透明度,在亮色主题中为60%透明度.text--disabled在深色主题中为50%透明度,在亮色主题中为38%透明度
-
对齐(支持响应式):
.text-left左对齐.text-center居中.text-right右对齐.text-justify两端对齐,改变字与字之间的间距使得每行对齐
-
大小字转换:
.text-lowercase转为小写.text-uppercase转为大写.text-capitalize转为首字母大写
-
其它:
.text-truncate文本截断,需要在block或inline-block容器中.text-no-wrap防止文本换行
4、间距
- 外边距:
.m {l|r|t|b|x|y|a}-{0~16|n1~n16|auto}:- 如
.ml-4左外边距4个单位,1个单位等于4个像素 - 如
.mx-n2左右水平方向外边距负2个单位 - 如
.ma-6四边的外边距6个单位 - 如
.mx-auto水平居中
- 如
- 内边距:
.p {l|r|t|b|x|y|a}-{0~16|n1~n16|auto}:- 内边距,使用方法和外边距一样
5、边框半径
- 所有边角:
.rounded-{0|sm|md|lg|xl|pill|circle}无圆角、小圆角、中圆角、大圆角、加大圆角、药丸、圆形- 如
.round-md或.round:中圆角 - 如
.round-circle:圆形
- 如
- 指定边角:
.rounded-{r|l|t|b|tl|tr|br|bl}-{0|sm|md|lg|xl|pill|circle}指定边角- 如
.round-l-sm左上和左下小圆角 - 如
.round-tl-sm左上小圆角
- 如
6、溢出:当子元素超过父元素容器的边界时,设置子元素的溢出效果
.overflow-auto自动添加滚动条.overflow-hidden隐藏子元素的溢出内容.overflow-visible显示子元素的溢出内容.overflow-{x|y}-{auto|hidden|visible}指定X轴或Y轴的溢出效果
7、浮动(支持响应式):
.float-left向左浮动.float-right向右浮动.float-start向起点浮动.float-end向终点浮动.float-none无浮动
三、MASA Blazor组件属性中常用样式属性(属性中使用)
1、Class和Style样式:<div Class="red">...
- 等效于class和style,虽然两者不是同一个东西
2、阴影(海拔):<div Elevation="10">...
- 值取0~24,值越大,阴影越大,离用户视觉越近。
3、边框大小类:
Dense:布尔值,降低组件高度,更加紧凑Prominent:布尔值,增加组件高度,突出显示Outlined:布尔值,背影透明薄边框Rounded:布尔值,圆角Shaped:布尔值,左上角和右下角圆角Tile:布尔值,方形Fab:布尔值,圆形Border:枚举值,边框。Borders.Right/Borders.Left/Borders.Top/Borders.BottomHeight:数值,高度Weight:数值,宽度MaxHeight/MinHeight:数值,最高/最小高度MaxWidth/MinWidth:数值,最大/最小宽度
4、主题:
Light:布尔值,亮色主题Dark:布尔值,深色主题Color:颜色,十六进制或rgb()或rgbaTextColor:文本颜色,十六进制或rgb()或rgba
5、绝对定位:
Absolute:布尔值,开启绝对定位Left:布尔值,与Absolute结合使用,靠左Right:布尔值,与Absolute结合使用,靠右Top:布尔值,与Absolute结合使用,靠上Bottom:布尔值,与Absolute结合使用,靠下
6、过渡动画:<MMenu Transition="slide-x-transition">...
fab-transition:旋转过渡fade-transition:淡入淡出scale-transition:尺寸渐变伸缩scroll-x-transition:自左向右滚动scroll-x-reverse-transition:自右向左滚动scroll-y-transition:自上而下滚动scroll-y-reverse-transition:自下而上滚动slide-x-transition:自左向右滑入slide-x-reverse-transition:自右向左滑入slide-y-transition:自上而下滑入slide-y-reverse-transition:自下而上滑入<ExpandTransition><MCard Show=true...></MCard></ExpandTransition>:特殊,是一个包裹组件,子元素隐藏显示时,延Y轴放大<ExpandXTransition><MCard Show=true...></MCard></ExpandTransition>:特殊,是一个包裹组件,子元素隐藏显示时,延X轴放大
7、补充说明:①以上属性,并不是所有组件都适用。汇总的目的,是熟悉这些常用属性,这样在查询或使用一个组件时,大多数属性都已经熟悉,这样能够大大提高效率;②如果熟悉CSS,会感觉组件库的样式定义,比较凌乱,也会受限,如果无法满足要求,完全可以使用HTML和CSS手动定义组件。

浙公网安备 33010602011771号