Aar*_*k71 14 twitter-bootstrap angularjs
我遇到了boostrap3的问题,它的默认背景是:透明!重要; 打印设置.
我需要在我的webapp中显示热图并使这些可打印.
我正在使用ng-style指令来动态计算所需的背景颜色.
简而言之,这是html的一部分
<div class="heatmap" ng-style="scalecolor(10)">lorem ipsum</div>
Run Code Online (Sandbox Code Playgroud)
这是控制器部分
$scope.scalecolor = function(perc) {
return { backgroundColor: plnkUtils.scaleColorInt('#EE0000', '#88FF00', perc) }
};
Run Code Online (Sandbox Code Playgroud)
但是,因为bootstrap3使用!important关键字将所有背景设置为透明,所以我无法打印这些.
这是bootstrap 3.1.0 css的一部分导致缺少背景颜色的问题:
@media print {
* {
color: #000 !important;
text-shadow: none !important;
background: transparent !important;
box-shadow: none !important;
}
}
Run Code Online (Sandbox Code Playgroud)
由于背景的反转:透明!重要; 是背景:颜色十六进制代码!重要; (请参阅此处)我正在尝试使用ng-style设置它,但是当我尝试这样时,exclamantion标记会导致Angularjs翻转:
$scope.scalecolor = function(perc) {
return { backgroundColor: plnkUtils.scaleColorInt('#EE0000', '#88FF00', perc) !important }
};
Run Code Online (Sandbox Code Playgroud)
或者当我在html模板中尝试这个时
ng-style="scalecolor(10) !important"
Run Code Online (Sandbox Code Playgroud)
谁知道如何使用带有Angularjs ng-style指令的!important css关键字来覆盖bootstrap3通配符?
对于那些想要亲眼看到这一点的人来说, 这里有一个关注这个问题的人
Waw*_*awy 18
显然你不能,这是一个已知的问题,但有一些解决方法可以在这里找到:
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>
Run Code Online (Sandbox Code Playgroud)
这将是您浏览器支持方面的最佳方式,因为CSS属性优先级将在此处正确解析.
解决方法#2
或者,您也可以在javascript中执行以下操作:
$scope.$watch(conditionalStyle);
function conditionalStyle() {
if ($scope.blue) {
$element[0].style.setProprety('background-color', 'blue', 'important');
} else {
$element[0].style.backgroundColor = '';
}
}
Run Code Online (Sandbox Code Playgroud)
$element引用HTMLElement的jQuery/jqLite对象在哪里.
注意:IE <9不支持警告,因此对于依赖于属性优先级的此行为,解决方法#1可能是您最好的选择...
使用@Wawy的提示我更新了我的代码以使其工作.
对于登陆此页面的任何人,为了澄清我做了一个更新的Plunker,可以在这里找到
简而言之,这是html的一部分
<div class="heatmap" ng-attr-style="{{ngAttrScaleColor(10)}}">YES, ng-attr-style works !</div>
Run Code Online (Sandbox Code Playgroud)
这是控制器部分
$scope.ngAttrScaleColor = function(perc) {
return 'background-color: ' + plnkUtils.scaleColorInt('#EE0000', '#88FF00', perc) + '!important';
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12952 次 |
| 最近记录: |