【问题标题】:Dynamic Inline CSS using AngularJS使用 AngularJS 的动态内联 CSS
【发布时间】:2015-11-11 16:39:13
【问题描述】:

我有一个 Angular 应用程序,需要在运行时在页面上应用一些 CSS 样式。

使用 ng-style 的解决方案不可扩展:

我知道对于特定(已知)项目,这可以使用 ng-style 指令轻松完成,例如:

<div id="mydiv" ng-style="{color: bgColor}">ABCD</div>

但是,此技术不能应用于页面上的所有&lt;a&gt;&lt;p&gt; 标记。如何将基于角度范围变量的动态样式应用于页面上标签的所有实例?

如下所示是理想的:

<style>
.in3_counter {color: {{settings.in3Color}};}
.in4_counter {color: {{settings.in4Color}};}
</style>

更新: css 范围变量的值不是预先确定的,所以我不知道在运行时设置变量时将哪些颜色应用于元素(例如,使用颜色选择器)。

有什么建议吗?

【问题讨论】:

    标签: html css angularjs


    【解决方案1】:

    检查以下示例:

    var COLOR_CTRL = function($scope, $sce) {
    
      $scope.changeColor = function(color) {
        $scope.style = $sce.trustAsHtml('a, p {color: ' + color + '}');
      };
    
      $scope.changeColor('#000');
    
    };
    
    var app = angular.module('app', []);
    
    app.controller('ColorCtrl', ['$scope', '$sce', COLOR_CTRL]);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.7/angular.min.js"></script>
    
    <div ng-controller="ColorCtrl" ng-app="app">
    
      <a href="#">anchor</a>
    
      <p>paragraph</p>
    
      <div>
    
        <button ng-click="changeColor('#f00')">red</button>
        <button ng-click="changeColor('#0f0')">green</button>
        <button ng-click="changeColor('#00f')">blue</button>
    
      </div>
    
      <style data-ng-bind-html="style"></style>
    
    </div>

    【讨论】:

    • 谢谢 - 但是,由于变量是在运行时设置的(例如使用颜色选择器),我不知道元素会应用什么颜色。所以没有变量值的先验知识。我将使用此信息更新我的帖子。
    • @mozami 检查更新后的建议。
    • 谢谢 - 这看起来不错。我会试一试并回复/接受答案。
    猜你喜欢
    • 2016-06-18
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 2013-07-06
    • 2015-11-19
    • 2019-08-08
    相关资源
    最近更新 更多