当前位置: 首页 > 面试题库 >

根据角度变量生成动态CSS

齐飞星
2023-03-14
问题内容

我正在使用用angular
4开发的管理面板,并尝试集成一个部分以自定义样式,例如更改颜色,bg等。我已经开发了一个部分来将设置保存在数据库中,并使用API​​将它们作为json加载到应用程序中。

现在我正在尝试使用json的值生成动态CSS,我尝试在主要组件中使用以下代码,但无法正常工作

@Component({
      templateUrl: 'card.html',
      styles: [`
        .card {
          height: 70px;
          width: 100px;
          color: {{css.cardColor}};
        }
      `],
})

我不确定如何在组件中加载css值并在style标签中使用它们。我没有找到任何其他解决方案。

另一种方法是使用角度动画概念,但是css将会非常庞大​​,并且不可能使用触发器和全部通过角度动画整体实现它。我认为有一个解决方案,因为这似乎是真正的要求,并且应该由许多其他开发人员来完成。

任何帮助都是可观的。

编辑:不能使用ngStyle,因为它将用于几乎所有元素,因为它适用于整个应用程序,而不仅适用于特定元素。


问题答案:

在经历了不同的方法并尝试向angular应用程序的所有页面添加动态CSS之后,我得到了以下解决方案。

要求:根据API和API返回的值生成动态CSS,以更改设计和样式。

解决方案:

  1. 创建一个新组件并创建一个服务以从API加载动态CSS变量。
  2. 在模板文件中添加样式标签,并为属性使用变量值。
  3. 在所有页面或主模板上加载此模板。
  4. 在应用程序上,构建样式将移至head标签。

代码样例

import { CssService} from './Css.service';

@Component({
  selector: 'DynamicCss',
  templateUrl: './DynamicCss.component.html',
  styleUrls: ['./DynamicCss.component.scss']
})
export class ServiceProviderComponent implements OnInit {
    cssVariables: any;
    constructor(private cssService:CssService){
        /* call the service/api to get the css variable values in cssVariables */

    }
}

现在使用jquery或javascript来应用css,以借助如下功能附加css

appendCss(customData)
{
     let text = '.custom-form-1 {
            background-image: url("`+customData.background_image+`");
         }';
     $(document).ready(function(){
         $("style").append(text);
      });
}

然后像我一样从服务或其他变量加载自定义数据后调用此函数 ngOnInit

ngOnInit(){
 this.appendCss(this.customizeFormData);
}

它使用jquery,但如果您不想在角度应用中使用jquery,也可以使用javascript / typescript完成



 类似资料:
  • 我正在用angular 4开发一个管理面板,并尝试集成一个部分来定制样式,比如change color、bg等。我已经开发了一个部分来保存数据库中的设置,使用API将它们作为json加载到应用程序中。 现在我正在尝试使用json中的值生成一个动态css,我尝试了主组件中的以下代码,但它不起作用 我不确定应该如何在组件中加载css值并在样式标记中使用它们。我没有找到任何其他的解决办法。 另一种方法是

  • 问题内容: 如何将两个正则表达式模式构造为一个? 例如,我有一个长模式,一个小模式,我需要在长模式前面放一个小模式。 这行不通。当我连接字符串时,所有的斜杠都消失了。 问题答案: 您必须使用: 当我连接字符串时,所有的斜杠都消失了。 如果您的模式中有反斜杠以转义特殊的正则表达式字符(如),则必须在字符串中使用两个反斜杠(因为是字符串中的转义字符):与相同。 因此,您的模式必须变为:

  • 本文向大家介绍java根据模板动态生成PDF实例,包括了java根据模板动态生成PDF实例的使用技巧和注意事项,需要的朋友参考一下 一、需求说明: 根据业务需要,需要在服务器端生成可动态配置的PDF文档,方便数据可视化查看。 二、解决方案: iText+FreeMarker+JFreeChart生成可动态配置的PDF文档 iText有很强大的PDF处理能力,但是样式和排版不好控制,直接写PDF文档

  • 问题内容: 我需要创建一个GUI,用户可以使用它选择几个属性,这些属性将用于查询数据库以找到合适的人。我正在寻找有关如何根据用户的选择动态生成数据库查询的想法。 查询将包含几个字段,但为便于理解,我仅在下面举例说明三个字段: 职业 -可以有0到n个职业字符串。如果给出了占用字符串,则其中之一必须匹配。 年龄 -年龄可以表示为: 完全匹配(30) 范围(例如30-40) 小于一个值(-40) 大于一

  • 问题内容: 这是我的HTML代码的摘录。 我正在尝试做的事情: 我已经使用上述代码段创建了3个div元素,它们将位于屏幕顶部。每个div元素都将使用css赋予框的形状。一个box(div)可以具有红色作为背景,也可以具有黑色作为背景。 这两种颜色的CSS是: 这是我的控制器的片段: 在此示例中,我将其制作为静态Json,但是在运行时,我计划生成Json代码,以便可以为框动态分配背景色。 我面临 的

  • 问题内容: 我定义了一个范围变量。加载视图时,我从数据库加载字符串并将其设置为。然后,我在正在使用的texteditor(Froala)上进行填充。 下面是该视图的代码: 所以基本上我将texteditor 设置为ng- model。因此,当我对文本编辑器进行更改时,它会修改值。 我发现这很奇怪的一件事是,当我在texteditor中修改文本时,它在div内发生了变化。但是,它不会在div之外更新