html - css: li 元素在水平方向的奇怪和困惑的布局

标签 html css angularjs html-lists

在我的应用程序中,我遇到了一个问题,并通过以下演示重现了该问题: http://plnkr.co/edit/ftZSl0Cv6GY7WbaMMlhv?p=preview

我用了ng-repeat在 Angular 生成几个<li> <ul> 内的元素元素。在每个<li>结构如下:

<ul class="articlelist">
  <li class="articleitem" ng-repeat="eacharticle in main.articlelist">
    <p class="article-title ellipsis-threelines-new">{{eacharticle.title}}</p>
    <img class="lead-image" src="http://placekitten.com/g/200/300">
    <div><a>www.abc.com</a></div>
  </li>
</ul>

有一个p , imgdiv子级别中的元素

以及 li 的样式元素如下,只需将它们设置为inline-block元素,因此它们将水平堆叠。

.articlelist {
  list-style:none;
}

.articleitem {
display: inline-block;
width:25%;
background: white;
border: 1px solid rgb(220,220,224);
height:280px;
}

.lead-image {
width:100%;
margin: 0 0 10px 0;
height: 50%;
}

.article-title {
font-size:19px;
color: #313131;
padding:10px;
font-style: normal;
font-weight: 600;
font-family: serif; 
margin: 0;
word-wrap: break-word;
}

我为每个 li 设置固定高度元素到 280px。以及p的内容一个一个是各种各样的。所以 p 的高度也不同。最终结果如下:
enter image description here

这正是我在实际应用中得到的。我很困惑为什么元素以这种方式对齐。我想要的效果是每个 li以相同的高度堆叠在同一水平面上。子级元素的相对位置可以根据内容的长度而变化。

最佳答案

li 上设置 vertical-align:top 因为 inline-block 默认是 vertical-align: baseline

var app = angular.module('myapp', []);

app.controller('MainCtrl', function() {
  var self = this;
  this.articlelist = [];

  this.addItem = function() {
    for (var i = 1; i <= 3; i++) {
      var temp = {};
      temp.title = self.generateTitle(i);
      self.articlelist.push(temp);
    }
  };

  this.generateTitle = function(counter) {
    var title = "";
    for (var i = 0; i < counter * 5; i++) {
      title = title + "A";
    }
    return title;
  };
});
/* Put your css in here */

.articlelist {
  list-style: none;
}
.articleitem {
  display: inline-block;
  vertical-align: top;
  width: 25%;
  background: white;
  border: 1px solid rgb(220, 220, 224);
  height: 280px;
}
.lead-image {
  width: 100%;
  margin: 0 0 10px 0;
  height: 50%;
}
.article-title {
  font-size: 19px;
  color: #313131;
  padding: 10px;
  font-style: normal;
  font-weight: 600;
  font-family: serif;
  margin: 0;
  word-wrap: break-word;
}
<html ng-app="myapp">
    <script data-require="angular.js@1.2.x" src="http://code.angularjs.org/1.2.7/angular.js" data-semver="1.2.7"></script>
  <body ng-controller="MainCtrl as main">        
    <button ng-click="main.addItem()">Add New One</button>
    <ul class="articlelist">
      <li class="articleitem" ng-repeat="eacharticle in main.articlelist">
        <p class="article-title ellipsis-threelines-new">{{eacharticle.title}}</p>
        <img class="lead-image" src="http://placekitten.com/g/200/300">
        <div><a>www.abc.com</a></div>
      </li>
    </ul>
  </body>
</html>

关于html - css: li 元素在水平方向的奇怪和困惑的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41754723/

相关文章:

html - 内联 block 脱离父容器

html - 为输入元素指定 type = text 是否有任何功能目的?

php - 在链接之间添加空白(没有答案有效)

html - 如何将背景图像放在一组单选按钮后面

javascript - 如何自动选择 Angular Material 复选框中的现有数据?

html - SharePoint Designer 即时重新格式化 HTML,能否禁用?

javascript - 如何更改轮播下带有文本的部分

jquery - 制作一个div位置:fixed only after it is scrolled to

javascript - 无法让简单的 AngularJS 应用程序运行

javascript - 如何将秒转换为分钟和秒格式(330 到 5 :30)