javascript - Angular Material md-card 没有响应

标签 javascript css angularjs flexbox angular-material

我正在尝试使用 md-card 创建文章卡网格。在大型显示器上,我希望它是 3 卡宽,平板电脑尺寸是 2 卡宽,智能手机是 1 卡宽。尽管图像的尺寸不会完全相同,但我希望所有卡片的尺寸相同,而不会扭曲图像。

我不知道如何实现这一目标。我非常希望避免对卡片进行硬编码设置宽度和高度,并希望它们能够随显示器的尺寸变化。我在想我需要使用 flex 属性吗?

这就是现在的样子:

enter image description here enter image description here

这是我的卡片 View 的结构:

<md-content>
    <section class="cards" ng-if="view === 'Articles'">
            <div layout="row" layout-sm="column" layout-align="center" layout-wrap>

              <md-card flex="33" ng-repeat="article in home.articles | filter:searchCard">
                <img ng-src="{{article.imagePath}}" alt="Test image">
                <div class="card_content">
                    <a href="/article/{{article.id}}"><h3 class="md-subhead article_card_title">{{article.title}}</h3></a>
                    <div class="card_agency">
                        <span class="agency_name">{{article.agency}}</span>
                    </div>
                </div>
              </md-card>

              <h1 class="md-display-1" ng-show="(home.articles | filter:searchCard).length == 0">No results!</h1>
            </div>
        </section>
</md-content>

任何关于如何使这些卡片响应的见解将非常非常非常感谢!

最佳答案

您要求所有图像可能具有不同的大小,同时保持它们存在的元素的大小。

想想看。 如果你有一片披萨,但对于你的盘子来说太大了,多余的披萨去哪儿了?离开你的盘子。除非你想“扭曲”你的披萨,把它折叠起来,然后它就合适了!我想你可以做的另一件事就是切掉不合适的披萨片(裁剪),然后它可能会起作用! 如果我们缩小披萨,就会导致问题,因为它适合盘子,但盘子并没有完全装满披萨。

我使用上面的例子是因为从技术上讲不可能做到你所要求的。 我可能误解了你想要的东西。

我建议使用 md-grid-list 并将 md-card 指令放入网格中。 为网格提供您想要的布局,并删除卡片中的所有样式。

我在尝试使用 md-card 进行扩展时遇到了类似的问题。相反,使用 md-grid 限制它更容易使用。

 <md-content layout-padding>
  <md-grid-list md-cols="2" md-gutter="0px" md-row-height="5.8:10">
    <md-grid-tile ng-repeat="cat in catalogs">
      <md-card md-ink-ripple>
        <catalog-select type="cat">
        </catalog-select>
      </md-card>
    </md-grid-tile>
  </md-grid-list>
</md-content>

注意:catalog-select 是一个自定义指令,它引用了 templateUrl,但我将粘贴它们携带的代码,即:

<md-card-content>
  <img ng-src="{{ type.img }}"/>
    <md-card-title>
      <md-card-title-text>
        <h4> {{ type.year }} </h4>
        <h5> {{ type.title }} </h5>
      </md-card-title-text>
    </md-card-title>
  </md-card-content>

我希望我的代码将卡片 2 保持在一行(或两列),因此: md-cols="2" 有很好的文档介绍如何按照您的喜好调整 md-grid-list 指令的布局:https://material.angularjs.org/latest/api/directive/mdGridList

希望这至少有帮助。 在 md-card 上使用 flex="33"似乎可以,但 md-card 的主要功能是外观而不是布局。他们为后者创建了网格列表。

希望这有帮助。

关于javascript - Angular Material md-card 没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36223951/

相关文章:

javascript - Internet Explorer 中的图片对齐是怎么回事? (即和边缘)

CSS级联优先级的起源和重要性

css - 如何使宽度为 25% 的文本框和宽度为 75% 的图像的高度相同?

javascript - 如何在 Protractor 的 <td> </td> 中显示文本

javascript - ng-repeat 运行两次(Angular)

javascript - Backbone View 的窗口调整事件

javascript - 如何从 javascript href.split 中删除 WWW?

javascript - 在给定时间停留多个下拉页面

javascript - 让 Chartjs 中的所有标签都在固定位置

angularjs - Angular 依赖注入(inject) - 我一直看到两种不同的方法