首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angularjs ng类顺序/优先级

Angularjs ng类顺序/优先级
EN

Stack Overflow用户
提问于 2014-05-29 08:13:06
回答 3查看 5.2K关注 0票数 4

编辑:原来这是我这边的一个混乱,请看我自己的答案。

当我试图重新排序ng类中多个类的优先级时,我遇到了一种奇怪的行为。

代码语言:javascript
运行
复制
ng-class="{'e':($index%2>0),'btn-primary':($index>3)}"

http://jsfiddle.net/6JjFM/1/

问题是,无论您如何更改ng类中表达式的顺序,它似乎总是应用样式表中的最后一个类(即在css中,如果您将. below放在.e下面,那么它将开始使用.background的背景颜色)。如果我使用ng类-甚至放置.e类,也会发生同样的情况。如果你真的用铬检查代码,它会显示为“btn-主e”的顺序,但是.e的背景色并不覆盖btn-主的背景色。

是否有什么方法可以改变ng类中类的优先级,使用角,而不使用css技巧,例如!重要等等。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-29 08:31:46

您的问题实际上不是在ng-class上,因为我认为他的工作方式是他设计的。

解决方案1:

是的,使用CSS技巧。将以下样式添加到样式表中:

代码语言:javascript
运行
复制
.e.btn-primary{
    background-color: #F5F5F5;
}

现在它将使用e背景色。

解决方案2:

使用ng-style

代码语言:javascript
运行
复制
<li 
    class="li" 
    ng-class="{'btn-primary':($index>3),'e':($index%2>0)}" 
    ng-repeat="row in rows"
    ng-style="$index%2>0 && {'backgroundColor': '#F5F5F5'}"
    >{{row}}</li>

ng-style将向元素添加内联样式,并覆盖文件样式表。

票数 3
EN

Stack Overflow用户

发布于 2014-05-29 08:32:46

这是预期的行为。在ng类中,类的顺序并不重要。CSS关注的是特定性,如果是相同的,则应用出现第二的类。在您的示例中,.e和. both具有相同的特性,因此在css中后面出现的类将覆盖前面的类(如果它们都更改相同的属性)。

请参阅这里的一个示例,说明如何更改专用性以确保首先出现的类得到应用.

我增加了div,提高了btn的特异性。因此,div的背景以蓝色出现。

index.html:

代码语言:javascript
运行
复制
<html lang="en" ng-app="app">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>

    div.btn-primary {background-color: blue;}
    .e {background-color: red;}
    </style>
</head>
<body >
    <script src= "angular.js"></script>

    <script src= "script.js"></script>
    <div ng-controller='TeamController'>
    <div ng-class="{'e':value%2>0, 'btn-primary':value>3}">
        hello world
    </div>
    </div>

</body>
</html>

script.js:

代码语言:javascript
运行
复制
var app = angular.module('app', [])

app.controller('TeamController', function($scope) {
  $scope.value = 7;
});
票数 1
EN

Stack Overflow用户

发布于 2014-05-29 09:24:41

所有的答案都是完全正确的,我为此感谢你!

我的困惑来自于长期使用jquery和动态地向元素中添加事件类。

代码语言:javascript
运行
复制
$('#el').click(function(){
        $('#el').addClass("two")
    });

http://jsfiddle.net/4Gtk6/

在我写下问题的那一刻,我意识到的是,在这种情况下,每当页面发生变化时(基于某些事件的范围内)都会重新呈现页面,并符合样式表的顺序和每个类的特殊性。再次感谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23928727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档