为什么我的 Angular 6 个按钮没有波动?
Why aren't my Angular 6 buttons rippling?
最近我一直在编写应用程序的前端代码。我一直在使用 Angular 6 来构建它,但我注意到我的按钮有一个小偏差。当您将鼠标悬停在它们上方时,它们会变暗,但当您单击它们时,它们不会产生任何连锁反应。这是我的 app.module.ts.
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule} from '@angular/platform-browser/animations';
import { NgModule } from '@angular/core';
import {RouterModule} from '@angular/router';
import {Routes} from '@angular/router';
import { AppComponent } from './app.component';
import {
MatToolbarModule, MatButtonModule, MatInputModule, MatIconModule, MatSelectModule, MatTableModule, MatGridListModule,
MatCardModule, MatMenuModule, MatFormFieldModule, MatOptionModule
} from '@angular/material';
import { PlaceholderComponent } from './placeholder/placeholder.component';
import { LoginComponent } from './login/login.component';
import { UserComponent } from './user/user.component';
import {HttpClientModule } from '@angular/common/http';
import { RegisterComponent } from './register/register.component';
import {FormsModule} from '@angular/forms';
import {ReactiveFormsModule} from '@angular/forms';
import { LayoutModule } from '@angular/cdk/layout';
import 'hammerjs';
const routes: Routes = [
{path: 'placeholder', component: PlaceholderComponent},
{path: 'register', component: RegisterComponent},
];
@NgModule({
declarations: [
AppComponent,
PlaceholderComponent,
RegisterComponent,
LoginComponent,
UserComponent,
RegisterComponent,
],
imports: [
BrowserModule,
BrowserAnimationsModule,
MatCardModule,
MatToolbarModule,
MatButtonModule,
MatInputModule,
MatSelectModule,
MatTableModule,
MatIconModule,
MatFormFieldModule,
HttpClientModule,
FormsModule,
ReactiveFormsModule,
RouterModule.forRoot(routes ),
MatGridListModule,
MatCardModule,
MatMenuModule,
LayoutModule,
MatOptionModule
],
exports: [
MatButtonModule,
MatCardModule,
MatMenuModule,
MatIconModule,
MatSelectModule,
MatInputModule,
MatToolbarModule,
MatTableModule,
MatSelectModule,
BrowserAnimationsModule,
MatFormFieldModule,
MatOptionModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
我的app.component.css
@import '~@angular/material/prebuilt-themes/deeppurple-amber.css';
.divider {
width: 50px;
height: auto;
display: inline-block;
}
.mat-card {
text-align: -webkit-center;
}
.demo-toolbar {
display: flex;
align-items: center;
width: 100%;
}
.demo-form {
min-width: 150px;
max-width: 500px;
width: 100%;
}
.demo-full-width {
width: 100%;
}
body {
margin: 0;
font-family: Roboto, sans-serif;
}
mat-card {
max-width: 80%;
margin: 2em auto;
text-align: center;
}
mat-toolbar-row {
justify-content: space-between;
}
.done {
position: fixed;
bottom: 20px;
right: 20px;
color: white;
}
.content-center {
text-align: -webkit-center;
}
这是我的 app.component.html。
<mat-toolbar color="primary">
<span> A store</span>
<span class="demo-toolbar"></span>
<button mat-button color="accent">Register</button>
<span class="divider"></span>
<button mat-button >Login</button>
<span class="divider"></span>
<button mat-button>See your profile now!</button>
</mat-toolbar>
<mat-card>
<span>
This is a shop.
Login or register above!
</span>
</mat-card>
<div>
<router-outlet></router-outlet>
</div>
<!doctype html>
<html lang="en">
<head>
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<meta charset="utf-8">
<title>ClothAppFrontEnd</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body class="mat-app-background">
<app-root></app-root>
</body>
</html>
My Angular site
index.html
不幸的是,我看不出有什么问题。我已经导入了主题,并且在我的 index.html 中链接了来自 Google 的 Material 图标。感激地接受帮助。
你好。这是 StackBlitz 中的 MCV 示例。
https://stackblitz.com/edit/angular-xiapvj
那是 Angular Material 个按钮的 :hover
操作,mat-button
。参见https://material.angular.io/components/button/overview上的官方mat-button
示例,如果将光标悬停在按钮上,<span>
标签下的<button>
标签中会有一个<div class="mat-button-ripple mat-ripple" matripple=""></div>
。 mat-button-ripple
造成了 :hover
效果。
了解了波纹的原因后,您可以尝试多种方法来覆盖样式。一种极端的方法是使用 ::ng-deep
组合器覆盖特定页面上的 mat-button-ripple
。
7 月 31 日的编辑:
我犯了一个错误。这是造成这种效果的另一个因素 <div class="mat-button-focus-overlay"></div>
。 .mat-button-focus-overlay
的样式是background-color: rgba(255,215,64,.12);
要使用 ::ng-deep
组合器修复样式,请将此样式添加到组件样式文件 app.component.css
。
::ng-deep .mat-button.mat-accent .mat-button-focus-overlay,
.mat-icon-button.mat-accent .mat-button-focus-overlay,
.mat-stroked-button.mat-accent .mat-button-focus-overlay {
background-color: transparent;
}
对于所有疲倦的访客来说,这是我没有注意到的偷偷摸摸的疏忽。我只是错过了在我的 styles.css class 中导入我的主题,我今天将上传我的 MCV 示例。时刻警惕小疏忽!
styles.css(之前)
(它是空的。)
styles.css(之后)
@import '~@angular/material/prebuilt-themes/deeppurple-amber.css';
最近我一直在编写应用程序的前端代码。我一直在使用 Angular 6 来构建它,但我注意到我的按钮有一个小偏差。当您将鼠标悬停在它们上方时,它们会变暗,但当您单击它们时,它们不会产生任何连锁反应。这是我的 app.module.ts.
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule} from '@angular/platform-browser/animations';
import { NgModule } from '@angular/core';
import {RouterModule} from '@angular/router';
import {Routes} from '@angular/router';
import { AppComponent } from './app.component';
import {
MatToolbarModule, MatButtonModule, MatInputModule, MatIconModule, MatSelectModule, MatTableModule, MatGridListModule,
MatCardModule, MatMenuModule, MatFormFieldModule, MatOptionModule
} from '@angular/material';
import { PlaceholderComponent } from './placeholder/placeholder.component';
import { LoginComponent } from './login/login.component';
import { UserComponent } from './user/user.component';
import {HttpClientModule } from '@angular/common/http';
import { RegisterComponent } from './register/register.component';
import {FormsModule} from '@angular/forms';
import {ReactiveFormsModule} from '@angular/forms';
import { LayoutModule } from '@angular/cdk/layout';
import 'hammerjs';
const routes: Routes = [
{path: 'placeholder', component: PlaceholderComponent},
{path: 'register', component: RegisterComponent},
];
@NgModule({
declarations: [
AppComponent,
PlaceholderComponent,
RegisterComponent,
LoginComponent,
UserComponent,
RegisterComponent,
],
imports: [
BrowserModule,
BrowserAnimationsModule,
MatCardModule,
MatToolbarModule,
MatButtonModule,
MatInputModule,
MatSelectModule,
MatTableModule,
MatIconModule,
MatFormFieldModule,
HttpClientModule,
FormsModule,
ReactiveFormsModule,
RouterModule.forRoot(routes ),
MatGridListModule,
MatCardModule,
MatMenuModule,
LayoutModule,
MatOptionModule
],
exports: [
MatButtonModule,
MatCardModule,
MatMenuModule,
MatIconModule,
MatSelectModule,
MatInputModule,
MatToolbarModule,
MatTableModule,
MatSelectModule,
BrowserAnimationsModule,
MatFormFieldModule,
MatOptionModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
我的app.component.css
@import '~@angular/material/prebuilt-themes/deeppurple-amber.css';
.divider {
width: 50px;
height: auto;
display: inline-block;
}
.mat-card {
text-align: -webkit-center;
}
.demo-toolbar {
display: flex;
align-items: center;
width: 100%;
}
.demo-form {
min-width: 150px;
max-width: 500px;
width: 100%;
}
.demo-full-width {
width: 100%;
}
body {
margin: 0;
font-family: Roboto, sans-serif;
}
mat-card {
max-width: 80%;
margin: 2em auto;
text-align: center;
}
mat-toolbar-row {
justify-content: space-between;
}
.done {
position: fixed;
bottom: 20px;
right: 20px;
color: white;
}
.content-center {
text-align: -webkit-center;
}
这是我的 app.component.html。
<mat-toolbar color="primary">
<span> A store</span>
<span class="demo-toolbar"></span>
<button mat-button color="accent">Register</button>
<span class="divider"></span>
<button mat-button >Login</button>
<span class="divider"></span>
<button mat-button>See your profile now!</button>
</mat-toolbar>
<mat-card>
<span>
This is a shop.
Login or register above!
</span>
</mat-card>
<div>
<router-outlet></router-outlet>
</div>
<!doctype html>
<html lang="en">
<head>
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<meta charset="utf-8">
<title>ClothAppFrontEnd</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body class="mat-app-background">
<app-root></app-root>
</body>
</html>
My Angular site index.html 不幸的是,我看不出有什么问题。我已经导入了主题,并且在我的 index.html 中链接了来自 Google 的 Material 图标。感激地接受帮助。
你好。这是 StackBlitz 中的 MCV 示例。 https://stackblitz.com/edit/angular-xiapvj
那是 Angular Material 个按钮的 :hover
操作,mat-button
。参见https://material.angular.io/components/button/overview上的官方mat-button
示例,如果将光标悬停在按钮上,<span>
标签下的<button>
标签中会有一个<div class="mat-button-ripple mat-ripple" matripple=""></div>
。 mat-button-ripple
造成了 :hover
效果。
了解了波纹的原因后,您可以尝试多种方法来覆盖样式。一种极端的方法是使用 ::ng-deep
组合器覆盖特定页面上的 mat-button-ripple
。
7 月 31 日的编辑:
我犯了一个错误。这是造成这种效果的另一个因素 <div class="mat-button-focus-overlay"></div>
。 .mat-button-focus-overlay
的样式是background-color: rgba(255,215,64,.12);
要使用 ::ng-deep
组合器修复样式,请将此样式添加到组件样式文件 app.component.css
。
::ng-deep .mat-button.mat-accent .mat-button-focus-overlay,
.mat-icon-button.mat-accent .mat-button-focus-overlay,
.mat-stroked-button.mat-accent .mat-button-focus-overlay {
background-color: transparent;
}
对于所有疲倦的访客来说,这是我没有注意到的偷偷摸摸的疏忽。我只是错过了在我的 styles.css class 中导入我的主题,我今天将上传我的 MCV 示例。时刻警惕小疏忽!
styles.css(之前) (它是空的。)
styles.css(之后)
@import '~@angular/material/prebuilt-themes/deeppurple-amber.css';