【问题标题】:Resizing images within flexbox render incorrectly in Chrome在 flexbox 中调整图像大小在 Chrome 中呈现不正确
【发布时间】:2018-01-21 00:34:26
【问题描述】:

背景

我正在尝试制作一个 div,其中一端是图像,另一端是文本部分(占用剩余的可用空间)。图像的大小与窗口宽度相关,文本在可用空间内居中对齐。

此外,图像上的图标相对于其大小而言是绝对定位的。

You can test it for yourself here

HTML:

<div id="previousVideo" onclick="backVideo();" title="Back">
  <div class="videoNameContainer">
    <p class="videoName"></p>
  </div>
  <div class="videoImageContainer">
    <div class="videoImageWrapper">
      <img class="videoImage" src="" />
      <span class="fa fa-backward"></span>
      <p class="videoTime"></p>
    </div>
  </div>
</div>

CSS:

#previousVideo,
#nextVideo {
  display: flex;
  padding: 5px;
  width: 25%;
  height: 40%;
  cursor: pointer;
}
.videoNameContainer {
  width: 100%;
  display: flex;
  align-items: center;
  height: 100%;
  justify-content: center;
}
.videoImageContainer {
  height: 100%;
  display: flex;
  width: 40%;
  align-items: center;
}
.videoImageWrapper {
  width: 100%;
  max-height: 100%;
  display: flex;
  position: relative;
}
.videoName {
  margin: 0;
  max-height: 100%;
  overflow: hidden;
  background-color: white;
}
.videoTime {
  position: absolute;
  bottom: 0;
  right: 3px;
  color: white;
  margin: 0;
  font-size: 0.8em;
}
#previousVideo .videoNameContainer {
  margin-right: 5px;
}
#previousVideo .videoImageContainer {
  margin-left: auto;
}
.fa-backward, .fa-forward {
  position: absolute;
  top: 50%;
  left: 50%;
  margin-right: -50%;
  transform: translate(-50%, -50%);
}

问题

在调整 Firefox 的窗口大小时,图像会调整大小并且一切都遵循 CSS。

然而,在 Chrome 上做同样的事情,图像根本没有调整大小:

为什么会这样?先谢谢了!

更新:

在图像中添加width:100% 时,Chrome 不会保持图像的纵横比:

【问题讨论】:

    标签: javascript html css google-chrome firefox


    【解决方案1】:

    您的容器正在调整大小,但 img 溢出。

    您需要将 width:100% 添加到您的 img,以便它调整到容器的任何宽度。

    .videoImage{
      width:100%;
      height:100%;
    }
    

    似乎没有图像本身的宽度声明,Firefox 正在将 img 调整为容器的大小,而 Chrome 只是保持图像的实际宽度。

    【讨论】:

    • 似乎在执行此操作时,Chrome 并没有保持图像的纵横比。请参阅上面的更新。
    • 如果你也将该元素的高度设置为 100%,它就会开始工作。不知道为什么。看起来你的 CSS 规则中有一些非常奇怪的尺寸选择......
    • 很棒的曲子顺便说一句@HelpingHand
    • 谢谢你!这似乎已经成功了...如果您对 css 尺寸有任何建议,请告诉我...我自学 css,很可能我不明白某些东西是如何工作的。
    • @HelpingHand 奇怪的是,您使用 display:flex 制作这些部分,但没有“flex:”,既没有 flex-basis,也没有 flex-shrink/grow,无处可去。相反,您有没有真正意义的宽度声明,例如具有 2 个孩子的 #nextVideo 和 #previousVideo flex-containers,宽度为 40% 的 .videoImageContainer 和宽度为 70% 的 .videoNameContainer ......超过 100%。您的 flex 项目应该使用 flex-basis 来代替,让收缩和增长。
    猜你喜欢
    • 2019-05-28
    • 2020-04-03
    • 2016-08-06
    • 2017-12-05
    • 2016-05-28
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多