html - 在没有额外空间的情况下将 flex children 居中

标签 html css flexbox

MWE: https://jsfiddle.net/zjgc9dfx/

假设我有这样的布局:

<div class="slider">
  <span>button here</span>
    <div class="slide">
      <img src="https://loremflickr.com/1000/1000" alt="Bacn">
    </div>
  <span>button here</span>
</div>

slider 是一个 flex 容器。这两个按钮是 inline-block,我希望将 slide img 限制在视口(viewport)的高度,没有额外的空间。

我怎样才能做到这一点?

* {
  margin: 0;
  padding: 0;
}

.slider {
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: red;
}

.slider .slide img {
  width: 100%;
  max-height: 100%;
}
<div class="slider">
  <span>asd</span>
  <div class="slide">
    <img src="https://loremflickr.com/1000/1000" alt="Bacn">
  </div>
  <span>asd</span>
</div>

最佳答案

也许这样的事情会奏效:

.slider {
  display: flex;
  align-items: center;
  height: 100vh;
  background-color: red;
}

.slider>span {
  flex-shrink: 0;    /* disables shrinking feature */
}

.slider>.slide {
  flex: 1;          /* consume all free space */
  height: 100%;
}

.slider .slide img {
  width: 100%;
  max-height: 100%;
  object-fit: cover;
  vertical-align: bottom;    /* https://stackoverflow.com/a/31445364/3597276 */
}

* {
  margin: 0;
  padding: 0;
}
<div class="slider">
  <span>button here</span>
  <div class="slide">
    <img src="https://loremflickr.com/1000/1000" alt="Bacn">
  </div>
  <span>button here</span>
</div>

jsFiddle demo

关于html - 在没有额外空间的情况下将 flex children 居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53351371/

相关文章:

html - 在我的画廊 div 中定义图像样式的正确方法是什么?

javascript - Skrollr Body 不够高,无法显示所有内容

css - SVG <animate> 从 0 的偏移量不起作用

css - 使用flex强制将div对齐到页面的右下角

html - 在 flexbox 中垂直居中对象

html - 如何在顶部更大面积的情况下正确布局 flexbox

html - 上标下划线随文本向上移动

php - AJAX 与 HTML?

html - 按钮的垂直对齐

javascript - 我如何让标题淡入淡出并在使用 css 加载页面时稍微向上移动