【发布时间】:2017-01-06 15:03:29
【问题描述】:
我正在尝试使用启用了 flexbox 的 Bootstrap 4 构建以下卡片布局。图片取自我当前的实现,它按预期工作。
HTML 结构如下:
<section>
<div class="container">
<div class="row">
<div class="col-md-6">
<div class="card">
<div class="card-block">
<h4 class="card-title">Curabitur gravida vestibulum imperdiet.</h4>
<p class="card-text">Cras convallis ut turpis vitae facilisis. Morbi eu augue vel quam efficitur rhoncus vitae eget lectus. Cras augue ligula, aliquam ut enim ut, feugiat imperdiet sem. Integer sed mi quis nisl eleifend interdum.</p>
<p class="card-text">Cras convallis ut turpis vitae facilisis. Morbi eu augue vel quam efficitur rhoncus vitae eget lectus. Cras augue ligula, aliquam ut enim ut, feugiat imperdiet sem.</p>
<a href="#" class="btn btn-primary">Read More</a>
</div>
</div>
</div>
<div class="col-md-6">
<img class="card-img-bottom" src="img1.jpg" alt="" title="">
</div>
</div>
</div>
</section>
现在,当我缩放到更大的屏幕时,我得到了以下输出(Bootstrap 应该这样,但不想要):
我希望看到的是:
所以我的问题是,我怎样才能正确实现这种布局?我使用的是 flex-box,所以 Bootstrap 列(col-*)总是相同的高度,这正是我想要的。但是我应该删除两列之间的填充,然后使两列的内容始终覆盖父高度的 100%,最后确保图片保持它的纵横比,所以它应该像我在示例中那样从中心裁剪。
我在 Google 上搜索并尝试了许多不同的解决方案,但所有这些似乎都是过于复杂或“老套”的解决方案。所以我想知道是否真的没有简单的方法来实现这种布局......?
注意:解决方案不必与 Bootstrap 相关,此类问题的通用解决方案更好。
【问题讨论】:
-
background-size 或 object-fit 是“简单”的 CSS 解决方案。
-
是的,但是使用背景大小,我不能使用那个 img 标签,而是必须使用 div 来代替?而且我认为 IE 和 Edge 不支持 object-fit 所以它不是可接受的解决方案。
-
这是两种“简单”的方法。当然,如果您需要为旧的/无法使用的浏览器实现回退,事情会变得更加复杂。对于 IE/Edge 中图像的对象匹配,有一些解决方法/polyfills。
-
我选择了背景大小的方式。我实际上想使用 img 标签,但宁愿牺牲它,也不愿使用过于复杂的解决方案和回退机制。
标签: html css twitter-bootstrap responsive-design bootstrap-4