หลังจากการวิจัยบางส่วนฉันได้ข้อสรุปนี้ซึ่งสามารถแก้ไขได้สำหรับฉันหวังว่ามันจะช่วยคุณได้
ขั้นตอนที่ 1: สร้างจานสีของคุณเองจากสีของแบรนด์
พบเว็บไซต์ที่ยอดเยี่ยมนี้ที่คุณใส่สีของแบรนด์และสร้างจานสีที่สมบูรณ์พร้อมเฉดสีที่แตกต่างกันของสีแบรนด์นั้น: http://mcg.mbitson.com
ฉันใช้เครื่องมือนี้สำหรับทั้งprimary
สีของฉัน(ซึ่งเป็นสีแบรนด์ของฉัน) และaccent
สี
ขั้นตอนที่ 2: สร้างจานสีในไฟล์ธีมที่คุณกำหนดเอง
นี่คือคำแนะนำในการสร้าง.scss
ไฟล์ดังกล่าว: https://github.com/angular/material2/blob/master/guides/theming.md
@import '~@angular/material/theming';
// Be sure that you only ever include 'mat-core' mixin once!
// it should not be included for each theme.
@include mat-core();
// define a real custom palette (using http://mcg.mbitson.com)
$bv-brand: (
50: #ffffff,
100: #dde6f3,
200: #b4c9e4,
300: #7fa3d1,
400: #6992c9,
500: #5282c1,
600: #4072b4,
700: #38649d,
800: #305687,
900: #284770,
A100: #ffffff,
A200: #dde6f3,
A400: #6992c9,
A700: #38649d,
contrast: (
50: $black-87-opacity,
100: $black-87-opacity,
200: $black-87-opacity,
300: $black-87-opacity,
400: $black-87-opacity,
500: white,
600: white,
700: white,
800: white,
900: white,
A100: $black-87-opacity,
A200: $black-87-opacity,
A400: $black-87-opacity,
A700: white,
)
);
$bv-orange: (
50: #ffffff,
100: #fff7f4,
200: #fecdbd,
300: #fc9977,
400: #fc8259,
500: #fb6c3b,
600: #fa551d,
700: #f44205,
800: #d63a04,
900: #b83204,
A100: #ffffff,
A200: #fff7f4,
A400: #fc8259,
A700: #f44205,
contrast: (
50: $black-87-opacity,
100: $black-87-opacity,
200: $black-87-opacity,
300: $black-87-opacity,
400: $black-87-opacity,
500: white,
600: white,
700: white,
800: white,
900: white,
A100: $black-87-opacity,
A200: $black-87-opacity,
A400: $black-87-opacity,
A700: white,
)
);
// mandatory stuff for theming
$bv-palette-primary: mat-palette($bv-brand);
$bv-palette-accent: mat-palette($bv-orange);
// include the custom theme components into a theme object
$bv-theme: mat-light-theme($bv-palette-primary, $bv-palette-accent);
// include the custom theme object into the angular material theme
@include angular-material-theme($bv-theme);
คำอธิบายบางส่วนเกี่ยวกับรหัสด้านบน
ตัวเลขทางด้านซ้ายตั้งค่า "ระดับ" ของความสว่าง ค่าเริ่มต้นคือ 500 (ซึ่งเป็นเฉดสีที่แท้จริงของสีแบรนด์ / สีที่เน้นเสียงของฉัน) #5282c1
ดังนั้นในตัวอย่างนี้สีแบรนด์ของฉันคือ ส่วนที่เหลือเป็นเฉดสีอื่น ๆ (โดยตัวเลขที่ต่ำกว่าหมายถึงเฉดสีที่สว่างกว่าและตัวเลขที่สูงกว่าหมายถึงเฉดสีที่เข้มกว่า) AXXX
มีเฉดสีที่แตกต่างกัน ไม่แน่ใจ (ยัง) ว่าใช้งานอยู่ที่ไหน อีกครั้งตัวเลขที่ต่ำกว่าหมายถึงตัวเลขที่สว่างและสูงกว่าหมายถึงมืด
contrast
ชุดสีตัวอักษรมากกว่าผู้สีพื้นหลัง มันยากมาก (หรือเป็นไปไม่ได้เลย) ในการคำนวณผ่าน CSS โดยที่แบบอักษรควรจะสว่าง (สีขาว) หรือสีเข้ม (สีดำที่มีความทึบ 0.87) ดังนั้นจึงสามารถอ่านได้ง่ายแม้กระทั่งกับคนตาบอดสี ดังนั้นจึงตั้งค่าด้วยตนเองและฮาร์ดโค้ดลงในนิยามจานสี คุณได้รับสิ่งนี้จากตัวสร้างจานสีที่ฉันเชื่อมโยงไว้ด้านบน (แม้ว่าจะถูกส่งออกในรูปแบบ Material1 แบบเก่าและคุณจะต้องแปลงสิ่งนี้เป็นรูปแบบ Material2 ด้วยตนเองเช่นที่ฉันโพสต์ไว้ที่นี่)
กำหนดธีมเพื่อใช้จานสีของแบรนด์เป็นprimary
สีและสิ่งที่คุณมีเพื่อเน้นเป็นaccent
สีของคุณ
ขั้นตอนที่ 3: ใช้ธีมตลอดทั้งแอปทุกที่ที่คุณทำได้
องค์ประกอบบางอย่างสามารถใช้ชุดรูปแบบสีเช่น<md-toolbar>
, <md-input>
, <md-button>
, <md-select>
และอื่น ๆ พวกเขาจะใช้primary
โดยค่าเริ่มต้นดังนั้นโปรดตั้งค่าจานสีของแบรนด์เป็นหลัก หากคุณต้องการเปลี่ยนสีให้ใช้color
คำสั่ง (เป็นคำสั่งเชิงมุมหรือไม่)
ตัวอย่างเช่น:
<button mat-raised-button color="accent" type="submit">Login</button>