html - Flex、图片和滚动位置

标签 html css image flexbox

在下面的代码片段中,交替显示了两张图片。这些图片位于一个设置了 flex 的容器中,每个容器都包裹在一个 picture 标签中。

最初一切正常,但是当您缓慢向下滚动时,您会注意到一旦滚动过图像边缘,下面的文本就会开始跳动。

如果我删除 picture 标签,就不会发生这种情况。

这是怎么回事?

window.setInterval(function () {
  document.querySelector('.a').style.display = 'none';
  document.querySelector('.b').style.display = 'inline-block';
  window.setTimeout(function () {
    document.querySelector('.a').style.display = 'inline-block';
    document.querySelector('.b').style.display = 'none';
  }, 500);
}, 1000);
<p style="height: 100px;"></p>
<div style="display: flex; align-items: center; height: 200px;">
  <picture>
    <img class="a" src="https://placekitten.com/g/300/200">
  </picture>
  <picture>
    <img class="b" src="https://placekitten.com/300/200">
  </picture>
</div>
Meow
<p style="height: 3000px;"></p>
  

最佳答案

不是切换会影响布局高度的显示,而是将宽度设置为 0

window.setInterval(function () {
  document.querySelector('.a').style.width = 0;
  document.querySelector('.b').style.width = 'auto';
  window.setTimeout(function () {
    document.querySelector('.a').style.width = 'auto';
    document.querySelector('.b').style.width = 0;
  }, 500);
}, 1000);
<p style="height: 100px;"></p>
<div style="display: flex; align-items: center;">
  <picture>
    <img class="a" src="https://placekitten.com/g/200/300">
  </picture>
  <picture>
    <img class="b" src="https://placekitten.com/200/300">
  </picture>
</div>
Meow
<p style="height: 3000px;"></p>

关于html - Flex、图片和滚动位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57318622/

相关文章:

javascript - Jquery 函数 - 元素上

Jquery $(this) 不工作

javascript - 无法在 'this' 函数内的函数内使用 'each' 定位 div

html - Chrome 在 css 中重新调整图片大小。即没有。(关于ff的idk)

java - 如何获取图像的高度和宽度?

java - java中如何防止刷新后重新提交

html - 如何在 HTML 中将多个透明图像设置为背景?

css - 有没有一种更优雅的方式通过定位 id 来在链接上实现背景颜色?

image - 如何在 MATLAB 中创建拼贴画?

html - 当设置为 "off"时,CSS 3 复选框值为空