如何更改 Angular Material select 中的滚动条样式?

Posted

技术标签:

【中文标题】如何更改 Angular Material select 中的滚动条样式?【英文标题】:How to change the scrollbar styles in Angular Material select? 【发布时间】:2019-01-07 16:29:25 【问题描述】:

我们需要帮助来从 Angular Material 更改 Select 组件中的滚动条。

实现了以下演示。

https://stackblitz.com/angular/bxbvndrpogl?file=app%2Fselect-reset-example.ts

但是,我需要帮助来更改滚动条的宽度和样式。

Example

【问题讨论】:

【参考方案1】:

通常自定义滚动的方式是:

/* width */
::-webkit-scrollbar 
    width: 20px;


/* Track */
::-webkit-scrollbar-track 
    box-shadow: inset 0 0 5px grey; 
    border-radius: 10px;


/* Handle */
::-webkit-scrollbar-thumb 
    background: red; 
    border-radius: 10px;


/* Handle on hover */
::-webkit-scrollbar-thumb:hover 
    background: #b30000; 

您不能直接从开发工具中检查滚动,但是如果您检查具有overflow 属性和scroll; 值的div,您可以看到它的样式。

【讨论】:

它适用于 chrome,但不适用于 Firefox 和 Edge,因为我升级到 Angular + Material 6。有什么想法吗?谢谢 因为它是用于 chrome 的。 -_- 希望你注意到-webkit- 前缀。 ^_^ 美丽。非常感谢。 只有当我把它写在根 css 文件中时它才有效。在组件 css 文件中写入时它不起作用。我可以在开发工具中看到 css。有什么想法吗? 完美。有人给这家伙一枚奖章。【参考方案2】:

我希望我没有迟到,我在原生滚动条上遇到了类似的问题。

我解决这个问题的方法是使用Simple bar 库然后我会做指令并且只包装

 <mat-select placeholder="State">
    <div appSimpleBar>
       <mat-option>None</mat-option>
       <mat-option *ngFor="let state of states" [value]="state">state</mat-option>
    </div>
  </mat-select>

这将起到隐藏本机滚动条的作用

【讨论】:

很抱歉,请问您在哪里有演示?我无法让它在 Angular 中工作。 这里是示例 stackblitz.com/edit/angular-t2czkp,但有时它在 stackblitz 上工作,有时不是。但我在多个项目中使用它并且运行良好【参考方案3】:

改变它对我有用的颜色和宽度 -

::-webkit-scrollbar 
    width: 4px;
    overflow-y: scroll;
    background: grey;
    box-shadow: inset 0 0 4px #707070;


::-webkit-scrollbar-thumb 
    background: blue;
    border-radius: 10px;

【讨论】:

这对我有用,我在“webkit-scrollbar”中使用“display:none”来完全隐藏滚动条。所以滚动条不再可见,滚动工作完美。【参考方案4】:

因为,当您使用 Angular 时,一个通用属性将在 DOM 中呈现,例如 ng-content,它会覆盖您用 CSS 编写的类属性,所以试试这段代码,这将消除在应用程序中使用的原生 Angular 样式。

转到组件,

import ViewEncapsulation from '@angular/core';

然后

@Component(
.....
.....
encapsulation: ViewEncapsulation.None
)

然后您的样式将被浏览器采用。

【讨论】:

以上是关于如何更改 Angular Material select 中的滚动条样式?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular Material Design 中更改 Sidenav 的宽度?

如何更改 Angular Material2 中主调色板的字体颜色?

如何更改 Angular Material mat-slide-toggle 属性?

如何更改 Angular Material 上 mat-icon 的大小? [复制]

Angular 2 Material Input 动态更改占位符

Angular 6 Material mat-select 更改方法已删除