angular - 调整 mat-option 元素的宽度(更短)
问题描述
我正在尝试在 mat-select 中调整(缩短)mat-options 的大小。不幸的是,我总是得到一个额外的填充区域。没有为此设计的方法吗?有人有经验吗?这是我的 StackBlitz,非常接近:
基本上我需要所有 3 个下拉项在 StackBlitz HERE上实际为 100px 宽。
编辑
我仍然需要帮助
@David 的答案非常接近,没有样式的 cdk-overlay-container 只是有一些问题:host
我无法使用:host
,因为它会在不打算使用时影响屏幕上的其他下拉菜单。
解决方案
可能有更好的方法来做到这一点,但只需使用 CSS,您就可以这样做
::ng-deep .cdk-overlay-pane
{
min-width: auto !important;
}
::ng-deep .cdk-overlay-container
{
display:inline-block;
}
::ng-deep .ng-animating .mat-option {
margin-right: -32px;
}
编辑
确实有一个问题:overlay 容器是材质组件通用的。因此,如果您像上面那样设置样式,CSS 规则将适用于所有选择组件。此外,覆盖容器位于组件本身之外,因此您不能使用顶级选择器来限制规则,例如:host
.
我创建了一个示例,该示例在覆盖层中添加/删除自定义类,以便样式不会泄漏到其他选择组件。
这有点小技巧,它们可能是更好的解决方案(也许如果您创建自己的叠加层)
打开/关闭选择时它仍然无法正常工作
推荐阅读
- javascript - 这是解决阵列分区问题的正确方法吗?
- service - Windows 应用程序和 Windows 服务之间的语言/代码页问题
- python - 编写一个递归算法,显示给定数组的所有子数组(连续元素的有序子集)
- python - 如何从包含科学记数法的字符串创建一个 numpy 数组
- python - 创建 Matplotlib 绘图后,如何更改其样式?
- bitbucket - 如何仅触发 Bitbucket 管道中的部署步骤?
- javascript - 一个类中有多个构造函数。Javascript
- google-chrome - 如何在 Chrome 中测试 puppeteer page.evaluate()
- android - 如何使用 kotlin 读取大文件 JSON?
- git - 验证分支是否已标记为 CHANGELOG 中的最新条目