css - 如何正确设置 mat-checkbox 的样式

标签 css angular typescript angular-material2

我正在尝试根据以下要求设置 mat-checkbox (material2) 的样式:

始终可见的黑色边框(无论选中状态如何)(#0000000)

选中后,“勾号”将为白色 (#ffffff),背景为彩色(蓝绿色)(边框仍然可见)

未选中时,复选框的背景(边框内)应为灰白色 (#dddddd)。

到目前为止,我已经能够设置边框颜色,但是当选中时,它消失了,在蓝绿色后面

我可以设置未选中的背景颜色,但是当我这样做时,黑色边框再次消失。如果我删除此设置,边框会出现,但背景颜色是错误的。

我设置的scss属性如下:

::ng-deep .mat-checkbox .mat-checkbox-frame {
    border-color: mat-color($darkPrimary, darker); //black
  }

::ng-deep .mat-checkbox-background {
    background-color: mat-color($darkPrimary, 200); //off-white
}

似乎无论我将背景设置为什么,都会覆盖边框样式。此外,当我更改复选框的状态时,黑色边框会短暂出现,然后再次消失。我如何满足这些要求?

最佳答案

我意识到 Angular 复选框是分层绘制的,最后绘制“刻度”层,位于黑色边框的顶部。

// Background border
.mat-checkbox .mat-checkbox-frame {
    border-color: black;
    background-color: #dddddd
}

.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, .mat-checkbox-checked.mat-accent .mat-checkbox-background {
    margin-top: 1px;
    margin-left: 1px;
    width: 18px;
    height: 18px;
}

通过减小前层的大小并稍微移动它,边框仍然可见。

关于css - 如何正确设置 mat-checkbox 的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51984326/

相关文章:

css - 平稳过渡

css - 在移动设备中弹出键盘时背景图像不完整

angular - 在转换时禁用 mat-stepper 的动画

java - 使用 Bootstrap 在 Spring 元素中不显示图标

Angular5 : where are "converters" ?(即像 JSF)

angular - HostBinding 到匿名 lambda 函数?

typescript - 如何在 Angular2/4/5 中实现自定义异步验证器

reactjs - Typescript 添加 "| null"以返回 Promise.all 类型

javascript - 我应该如何设置这些元素的宽度以使它们完美契合?

html - h1 前空行