角度主题

2024-02-11

我希望在我的 Angular (5) web 应用程序中实现一个主题。我没有将 Angular Material 用于所有内容(即我只使用输入字段和某些组件)

我正在寻找一个可以在运行时使用/控制/更改的主题解决方案,而不必重新编译我的应用程序。

我使用 SCSS/Sass。

我目前所做的:(在一个非常基本的例子中)

变量.scss

$color-1: #fff;
$color-2: #000;

测试组件/测试组件.scss

@import "../variables.scss";

.test {
    color: $color-1;
    border: 1px solid $color-2;
}

自从我开始开发我的应用程序以来,我只是将值分配给 SCSS 变量并使用它们,但接下来我想实现一个不错的主题解决方案,我可以在运行时控制主题,因为变量仅设置为编译时间。

我研究过的其他事情:

我碰到本文 https://medium.com/@dmitriy.borodiy/easy-color-theming-with-scss-bc38fd5734d1这似乎是一个不错的实现想法,但是在组件级别,我不完全确定它的效果如何,因为深度嵌套的组件将无法看到其路由器周围的容器是什么类。

还有其他想法吗?只是重申一下,我not想要修改角材料 https://material.angular.io/主题我有。

EDIT 1:

I came 穿过这个神奇的帖子 http://anasfirdousi.com/creating-themeable-components-in-angular.html,早上会做一些编码,看看我能用它做什么。


Eureka!

因此,我最终制定的解决方案效果非常好,使我能够轻松地针对我想要的每个主题组件修改现有的 SASS。

我采用了使用的概念here http://anasfirdousi.com/creating-themeable-components-in-angular.html并修改了辅助函数,以满足您可能想要在主题中查找的任意数量的键(而不是像示例那样只有 2 个级别)。

为了让它像我一样在 Angular 应用程序的上下文中工作,我使用了:主机上下文 https://www.concretepage.com/angular-2/angular-2-4-component-styles-host-host-context-deep-selector-example选择器:

@mixin theme-this($themes: $themes) {
    @each $theme-name, $theme in $themes {
        :host-context(.theme-#{$theme-name}) & {
            $theme-map: $theme !global;

            @content;

            $theme-map: null !global;
        }
    }
}

然后在您的基本组件中,将所有内容包装在具有相关主题类 (.theme-x) 的 div 中,并且任何生成的 CSS 其类与当前应用于基本组件的类相匹配的 CSS 都将自动在浏览器中呈现。

像这样处理主题的一件很酷的事情是您可以在运行时更改它。

我添加了一个主题服务来包含当前选定的主题,我将在稍后阶段对其进行修改,以将主题存储在浏览器本地存储/用户 cookie/等中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

角度主题 的相关文章

  • 如何在 Angular 2 应用程序中使 DateAdapter 单例?

    我正在开发一个带有延迟加载模块的 Angular 7 应用程序 我也使用有角度的材料组件 我想在日期选择器组件中本地化并支持多个区域设置 当应用程序语言发生变化时 我想在整个应用程序中全局更改它 可以通过 DateAdapter setLo
  • 在 C# Winforms 应用程序中嵌入 Windows XP 主题

    我有一个旧版 C Windows 窗体应用程序 其布局是根据 Windows XP 默认主题设计的 由于需要将其作为 Citrix 应用程序进行分发 该应用程序现在看起来像经典主题应用程序 因为 Citrix 不鼓励使用主题系统服务 所以
  • 415 不支持的媒体类型; Angular2 到 API

    我是 Angular 2 的新手 我面临着一个无法找到解决方案的问题 当我尝试从 Angular 2 发布到 API 时 我得到 415 不支持的媒体类型 角度2代码 onSubmit value any console log value
  • Angular 停止 Enter 键提交

    I am trying to stop the Enter from submitting my button and rather make it point to another function I tried trapping th
  • Angular2 Router:将主题标签添加到 url

    我正在使用 Angular2 Seed 应用程序 您可以在官方仓库 https github com mgechev angular2 seed 正如您所看到的 这里我们导入了 angular2 router 并且我们使用它来创建应用程序的
  • Angular 2:使用正则表达式进行数字验证

    我正在尝试验证 IE 11 中的数字字段
  • Angular 2 ngModel 不工作(仅限 javascript)

    所以我是 Angular2 javascript 的新手 我能够通过 5 分钟的 Angular 教程制作一个简单的 Hello world 我对 Angular2 的新变化很好奇 我开始阅读 Angular2 Js 文档 但我发现它不完整
  • ASP.NET MVC 3,如何正确制作主题

    我正在寻找有关如何以最佳方式在 MVC 3 中实现 主题 的输入 我想需要一个自定义视图引擎来负责定位视图文件等 我还希望主题系统是可扩展的 这样 如果它只是其中一个视图 我想更改其他视图 但仍使用默认值 有点像 Orchard 项目吗 想
  • 编辑角度材质的表格单元格填充

    当我使用开发人员工具检查该元素时 它显示零填充 但是当我查看它并将鼠标悬停在它上面时 它非常清楚地在单元格内具有填充 我不知道这是从哪里来的 并且设置td padding 0 important 什么也没做 感知到的填充是由以下原因引起的d
  • 使用服务中的可观察量测试错误情况

    假设我有一个订阅服务功能的组件 export class Component ngOnInit this service doStuff subscribe data IData gt doThings data error Error g
  • StaticInjectorError[e -> e]: NullInjectorError: 没有 e 的提供程序

    在我的 app module ts 中 NgModule declarations AppComponent imports BrowserModule MaterialModule FlexLayoutModule BrowserAnim
  • *ngFor 的哪种方法更好:ng-container 还是管道切片?

    我想显示完整列表或仅显示其 3 个元素 有条件地 more true false 我可以用管道方法像这样 div class table div class row item id item name div div or ng 容器像这样
  • 使用 facebook 共享动态更新元标签 - Angular 6

    我需要动态更新元标记 如 og title og description 和 og image 并在 facebook 上共享相同的内容 我已经尝试了所有方法 但没有任何效果 首先 我尝试使用 javascript 设置元标记 如下所示 v
  • 如何调试超时等待异步 Angular 任务?无法在角度页面上找到元素

    编辑 请注意 在 ernst zwingli 的帮助下 我找到了问题的根源 因此 如果您遇到相同的错误 他指出的修复之一可能会帮助您 我的问题是量角器本身的一个已知问题 如果您认为这可能是您 我已经扩展了我的步骤 以在我最初的问题之后查明问
  • 为什么 Visual Studio 2013 不断更改为深色主题

    我有 Visual Studio 2013 Professional 它不断将我的主题从蓝色变为深色 有人知道这是为什么吗 是的 我使用在几台计算机之间共享的公司帐户登录 听起来您的 Visual Studio 中已启用同步设置 因此它正在
  • 如何更改 Angular Material 选择中的滚动条样式?

    我们需要帮助来更改 Angular Material 的 Select 组件中的滚动条 实现了以下演示 https stackblitz com angular bxbvndrpogl file app 2Fselect reset exa
  • Angular 2 Material 2 日期选择器日期格式

    我不知道如何更改材料2日期选择器的日期格式 我已阅读文档 但我不明白我实际上需要做什么 datepicker默认提供的输出日期格式为f e 6 9 2017 我想要实现的目标是将格式更改为类似的格式9 Jun 2017或任何其他 文档htt
  • Angular with/Angular Material - 对话框主题损坏

    您好 我遇到了 Angular Material 主题在对话框组件中中断的问题 其中文本和其他组件的颜色未按应有的方式工作 在 app component 中 我有一个设置图标按钮来打开对话框 main settings dialog 但当
  • Angular 5 Http拦截器刷新JWT令牌

    我已经实现了令牌保存 检索的逻辑 并且我也有刷新调用 问题是 当我在 HttpInterceptor 中拦截 403 时 同时进行的其他调用也会刷新令牌 我很乐意保留这些调用 直到我的令牌刷新为止 创建我所说的请求 信号量 Injectab
  • Angular 2 获取当前路线

    所以我需要以某种方式检查我是否在主页上执行某些操作 而在其他页面上则不执行此操作 该组件也在所有页面上导入 如果我在主页上 如何检测该组件 Thanks 尝试这个 import Router from angular router expo

随机推荐