【发布时间】:2016-12-29 14:57:03
【问题描述】:
我是 Flexbox 的新手,因为我的工作必须支持 IE8,所以在这个项目之前我从来没有真正关心过它。
我试图弄清楚如何使“卡片”网格具有相同的高度。这些卡片内部包含不同数量的文本以及图像。由于我使用的是 AngularJS,因此完成这项工作的 JavaScript 解决方案的复杂性超出了我的时间,因此我选择了 flexbox。
这是我的卡片包装相关代码(如果您需要更多信息,请告诉我):
.card-grid {
display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */
display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */
display: -ms-flexbox; /* TWEENER - IE 10 */
display: -webkit-flex; /* NEW - Chrome */
display: flex; /* NEW, Spec - Opera 12.1, Firefox 20+ */
-ms-flex-wrap: wrap;
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
...
.data-card {
height: auto;
//IE fallback
display: inline-block;
//Modern Browsers
display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */
display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */
display: -ms-flexbox; /* TWEENER - IE 10 */
display: -webkit-flex; /* NEW - Chrome */
display: flex; /* NEW, Spec - Opera 12.1, Firefox 20+ */
...
}
}
以下是上述选择器的相关 Angular HTML:
<div class="card-group">
<ol class="cards card-grid invisible grid-row">
<li ng-repeat... class="data-card col xs-6 md-4 lg-3">
<a class="card" href="javascript:void(0)" ... >
...
</a>
</li>
</ol>
</div>
这是 iOS 中 Chrome 和 Safari 的屏幕截图: 我面临的问题是,它显示第一张卡“轴向”,然后下一张卡“电机启动”应该就在它旁边。
我尝试过的事情:
- 将 wrap 属性放在项目本身而不是包装器上,这看起来很糟糕
- 定义宽度,并使用
flex-grow,但轴向仅达到 100% 宽度,因此最后一张(未描绘)卡片旁边没有任何内容。 - 正在做
wrap-reverse,但这只是颠倒了内容并给了我同样的问题。
它适用于:
- Chrome(桌面)
- Firefox(桌面)
- Internet Explorer Edge(桌面)
- Chrome(安卓)
它唯一不起作用的地方是 Apple 浏览器(即 Chrome iOS 和 Safari Mobile 等)
所以我认为这是-webkit- 的事情,但这很明显。我只是不知道我在代码中做错了什么。我无法发布我的工作代码,因为该项目正在进行中。
是否有一个我应该在我没有使用的 flexbox 中使用的特殊属性?提前感谢您的帮助。
【问题讨论】:
标签: angularjs sass webkit flexbox