CSS 变量
Ionic 组件使用 CSS 变量 构建,便于自定义应用。CSS 变量允许在一个地方存储值,然后在多个其他地方引用。它们还使得在运行时动态更改 CSS 成为可能(以前需要 CSS 预处理器)。CSS 变量使得覆盖 Ionic 组件以匹配品牌或主题变得比以往更容易。
设置值
全局变量
CSS 变量可以在应用的 :root 选择器中全局设置。它们也可以仅针对特定模式应用。有关 Ionic 提供的全局变量的更多信息,请参阅 Ionic Variables。
使用 Ionic CLI 启动 Angular 项目时,会创建 src/theme/variables.scss 文件,您可以在其中覆盖默认的 Ionic 变量。
/* 为所有模式设置变量 */
:root {
/* 设置整个应用的背景 */
--ion-background-color: #ff3700;
/* 设置整个应用的字体族 */
--ion-font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Roboto', sans-serif;
}
/* 仅在 iOS 模式下设置整个应用的文本颜色 */
.ios {
--ion-text-color: #000;
}
/* 仅在 Material Design 模式下设置整个应用的文本颜色 */
.md {
--ion-text-color: #222;
}
组件变量
要为特定组件设置 CSS 变量,请将变量添加到其选择器中。有关 Ionic 提供的组件级变量的更多信息,请参阅 Ionic Variables。
/* 设置所有 ion-button 元素的颜色 */
ion-button {
--color: #222;
}
/* 设置带有 .fancy-button 类的 ion-button 的背景 */
.fancy-button {
--background: #00ff00;
}
通过 JavaScript 设置变量
CSS 变量也可以通过 JavaScript 使用 setProperty() 更改:
const el = document.querySelector('.fancy-button');
el.style.setProperty('--background', '#36454f');
获取值
使用 CSS
var() CSS 函数 可用于获取 CSS 变量的值,并根据需要设置任意数量的回退值。在下面的示例中,--background 属性将设置为 --charcoal 变量的值(如果已定义),如果未定义则使用 #36454f。
.fancy-button {
--background: var(--charcoal, #36454f);
}
使用 JavaScript
CSS 变量的值可以在 JavaScript 中使用 getPropertyValue() 读取:
const el = document.querySelector('.fancy-button');
const color = el.style.getPropertyValue('--charcoal');
Ionic 变量
组件变量
Ionic 提供了组件级别的变量,例如 --background 和 --color。要查看组件接受的自定义属性列表,请查看 其 API 参考 中的 CSS Custom Properties 部分。例如,请参阅 Button CSS Custom Properties。
全局变量
Ionic 提供了一些全局变量,以便更容易地为整个应用设置主题。有关更多信息,请参阅 Colors、Themes 和 Advanced Theming。