javascript - Angularjs - ng-cloak/ng-show 元素闪烁

标签 javascript class angularjs

我在 angular.js 中遇到指令/类 ng-cloakng-show 的问题。

Chrome 工作正常,但 Firefox 使用 ng-cloakng-show 导致元素闪烁。 恕我直言,这是由将 ng-cloak/ng-show 转换为 style="display: none;" 引起的,可能是 Firefox javascript 编译器是慢一点,所以元素会出现一会儿然后隐藏?

例子:

<ul ng-show="foo != null" ng-cloak>..</ul>

最佳答案

虽然文档没有提及,但将 display: none; 规则添加到您的 CSS 可能还不够。如果您在正文中加载 angular.js 或模板没有及时编译,请使用 ng-cloak 指令在您的 CSS 中包含以下内容:

/* 
  Allow angular.js to be loaded in body, hiding cloaked elements until 
  templates compile.  The !important is important given that there may be 
  other selectors that are more specific or come later and might alter display.  
 */
[ng\:cloak], [ng-cloak], .ng-cloak {
  display: none !important;
}

正如评论中提到的,!important 很重要。例如,如果您有以下标记

<ul class="nav">
  <li><a href="/foo" ng-cloak>{{bar}}</a></li>
</ul>

而您恰好使用的是 bootstrap.css,以下选择器更适合您的 ng-cloak'ed 元素

.nav > li > a {
  display: block;
}

所以如果你包含一个简单的 display: none; 规则,Bootstrap 的规则将优先并且 display 将被设置为 block ,因此您会在模板编译之前看到闪烁。

关于javascript - Angularjs - ng-cloak/ng-show 元素闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11249768/

相关文章:

c++:类实例的 vector ,按类成员值搜索失败

javascript - 如何防止每次访问路由/页面时在 Controller 中调用 REST API

angularjs - 如何在 angularjs Material slider 中显示文本代替数字

angularjs - 从 ng-value 指令更新 ng-model

javascript - 使用javascript修改svg文件

javascript - 如何使用 angularjs 开发 firefox 插件

C# 泛型类的性能

javascript - 获取具有特定 href 属性的元素数组

javascript - 有没有一种简单的方法可以用简单的英语来理解 JavaScript 的 .bind ?

c++ - 调用对象的析构函数是否等同于在对象上调用delete?