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

我可以在Angularjs ng-style指令中使用!important css关键字吗?

端木令雪
2023-03-14
问题内容

我在 boostrap3 上遇到问题,它的 默认背景是:transparent!important; 打印设置。
我需要在我的Web应用程序中显示一个热图,并使其可打印。
我为此使用ng-style指令来动态计算所需的背景色。
简而言之,这是html部分

<div class="heatmap" ng-style="scalecolor(10)">lorem ipsum</div>

这是控制器部分

$scope.scalecolor = function(perc) {
        return { backgroundColor: plnkUtils.scaleColorInt('#EE0000', '#88FF00', perc) }
    };

但是,由于bootstrap3使用 !important 关键字将所有背景设置为透明,因此无法打印这些背景。

这是bootstrap 3.1.0 css的一部分,导致缺少background-color的问题:

@media print {
  * {
    color: #000 !important;
    text-shadow: none !important;
    background: transparent !important;
    box-shadow: none !important;
  }
}

由于背景相反:透明!重要!是背景:彩色十六进制代码!重要;我正在尝试使用ng样式进行设置,但是当我尝试执行此操作时, 感叹号会导致Angularjs翻转

 $scope.scalecolor = function(perc) {
    return { backgroundColor: plnkUtils.scaleColorInt('#EE0000', '#88FF00', perc)  !important }
};

或者当我在html模板中尝试此操作时

ng-style="scalecolor(10) !important"

有谁知道我如何在Angularjs ng-style指令中使用!important css关键字来覆盖bootstrap3通配符?

对于那些想用自己的眼睛看这件事的人,
这里有个笨拙的人展示了这个问题


问题答案:

显然您不能,这是一个已知问题,但是可以在此处找到一些解决方法:

https://github.com/angular/angular.js/issues/5379

以下解决方案已从站点复制,以防万一链接中断或被更改。

您无法!important在Chrome或FF(可能还有其他)的DOM样式属性中使用指令。style属性被解析为CSS,但该HTMLElement.style属性没有。不幸的是,您不能在此处设置属性的优先级(至少在Gecko
/ Blink / Webkit中)。

因此,这里有一些解决方法:

解决方法#1

<ANY data-ng-attr-style="{{ blue && 'background-color: blue!important' || '' }}">
</ANY>

就浏览器支持而言,这是最好的方法,因为在这里可以正确解析CSS属性优先级。

解决方法2

或者,您也可以在javascript中执行以下操作:

$scope.$watch(conditionalStyle);

function conditionalStyle() {
  if ($scope.blue) {
    $element[0].style.setProprety('background-color', 'blue', 'important');
  } else {
    $element[0].style.backgroundColor = '';
  }
}

$element引用HTMLElement的jQuery / jqLit​​e对象在哪里。

注意 :IE <9中不支持警告,因此解决方案#1可能是此行为的最佳选择,这取决于属性优先级…



 类似资料:
  • 本文向大家介绍我们可以在Java中使用此关键字调用方法吗?,包括了我们可以在Java中使用此关键字调用方法吗?的使用技巧和注意事项,需要的朋友参考一下 Java中的“ this”关键字在实例方法或构造函数中用作对当前对象的引用。是的,您可以使用它来调用方法。但是,您只能从实例方法(非静态)中调用它们。 示例 在下面的示例中,Student类具有一个私有变量名称,具有setter和getter方法,

  • 问题内容: 基本上,我想设置一个使用“ for”作为参数以提高可读性的函数。 我设置了类似的内容,但是当我尝试将开关用于“ for”时,它将作为关键字出现并引发编译错误。 干杯 问题答案: 使用关键字作为普通标识符时,您必须使用反引号`对此进行转义

  • 问题内容: 我发现很多以下形式的html输入模式,这是电话号码: 我想创建一个自定义指令,无论该指令适用于哪里,它都会告诉Angular应用所有这三个规则,例如: 然后,我指令中的代码将找到并调用一个名为的函数,在该函数中我将看到类似以下内容的内容: 清单1: 我宁愿使用上述方法而不是为这些规则重写代码,例如: 清单2: 我不想取消所有基于属性的指令,但最好创建一个“宏”指令,该指令将调用我的清单

  • 在C/C中,可以对SIMD(如AVX和AVX2)指令使用内部函数。有没有办法在Rust中使用SIMD?

  • 问题内容: 我想知道我能否以某种方式使用x,y对作为字典的键 但是我得到了错误: 和错误: 那么..我们怎样才能使其符合标准? 问题答案: 的定义是,即密钥的类型必须符合协议。但是语言指南告诉我们协议可以被类,结构和枚举所采用,即不能被元组所采用。因此,元组不能用作键。 一种解决方法是定义一个包含两个Ints的可哈希结构类型(或您要放入元组的任何内容)。