Angular中的ng-repeat元素之间的差距

Posted

技术标签:

【中文标题】Angular中的ng-repeat元素之间的差距【英文标题】:Gap between ng-repeat elements in Angular 【发布时间】:2014-07-27 19:57:49 【问题描述】:

当将div 元素显示为inline-block 时,我遇到了多个ng-repeat 元素的问题。元素之间有一个奇怪的间隙,一个ng-repeat 结束,下一个开始,如图所示:

我创建了一个plunk 来演示这种行为:

为什么会发生这种情况以及如何消除差距?

【问题讨论】:

【参考方案1】:

查看plunk

有一个技巧可以删除出现在换行符处的内联元素之间的空间。

<div class="red" ng-controller="TestCtrl">
  <div class="blue number" ng-repeat="number in array1 track by $index">number</div><!--
  --><div class="green number" ng-repeat="number in array2 track by $index">number</div><!--
  --><div class="teal number" ng-repeat="number in array3 track by $index">number</div>
</div>

您可以阅读更多关于其他黑客的信息here。

【讨论】:

哦,非常感谢...我想我会因为几个像素的差距而不得不把整个部分都扔掉。【参考方案2】:

这是由&lt;div&gt; 元素之间的空格引起的。有多种方法可以解决这个问题,就像其他答案所建议的那样。我的首选布局是:

  <div class="blue number" ng-repeat="number in array1 track by $index">number</div
  ><div class="green number" ng-repeat="number in array2 track by $index">number</div
  ><div class="teal number" ng-repeat="number in array3 track by $index">number</div>

但其他建议是有效的。

另一种无需担心 html 的情况下处理此问题的方法是将容器的字体大小设置为 0,这样空白就不会出现。

http://plnkr.co/edit/wXKl61lyiqdONbChYI9o?p=preview

这种方法的缺点是您不能对包含的元素字体使用百分比大小,您必须明确设置它们。

【讨论】:

【参考方案3】:

我知道这很奇怪,但是你的内联块 div 之间的空格(crlf、空格...)构成了空间。

如果您删除它们,空间就会消失。 (plunker demo)

我找不到任何解释参考,但我的猜测是,由于字符位于内联块之间,因此它被解释为一个空格,就好像块元素实际上是内联的一样(例如跨度)。

  <body ng-app="testRepeat">
    <div class="red" ng-controller="TestCtrl">
      <div class="blue number" ng-repeat="number in array1 track by $index">number</div><div class="green number" ng-repeat="number in array2 track by $index">number</div><div class="teal number" ng-repeat="number in array3 track by $index">number</div>
    </div>
  </body>

【讨论】:

【参考方案4】:

这是因为你的 css 中 .number 类的定义方式。如果您将其更改为包含float: left,您将消除多余的空白。

.number 
  width: 20px;
  height: 20px;
  display: inline-block;
  color: white;
  text-align: center;
  float: left;

你可以看到我更新的plunkr here

【讨论】:

以上是关于Angular中的ng-repeat元素之间的差距的主要内容,如果未能解决你的问题,请参考以下文章

检测指令中的 ng-repeat 元素长度变化

angular 中父元素ng-repeat后子元素ng-click失效

怎么在ng-repeat生成的元素上操作dom

ng-model 绑定到 ng-repeat Angularjs 中的元素

如何在 angular.js 中解析 ng-repeat 中的 HTML [重复]

ng-repeat中的Angular js条件类