CSS overflow-anchor

2023-12-23 19:29:23

overflow-anchor

为了认识这个属性, 我们需要先看一种常见的现象. 即在网页加载中, 图片常常比文字加载更慢, 这样图片加载完成后可能会将文字向下顶. 比如下图演示

在这里插入图片描述

<div class="overflow">
  <img id="bg" src="" height="150" alt="" srcset="">
  Lorem...
</div>
const bg = document.getElementById('bg')
setTimeout(() => {
  bg.src = 'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png'
}, 3000)

但是如果你把代码拷贝运行, 你却得不到上图的效果, 因为我有一个属性没有告诉你.

其实浏览器厂商早就注意并修复了这个问题, 真实的情况是图片加载后文字也不会向下滚动. 如下图, 注意右边代码中 <img> 标签的 src 有值后文字并没有向下滚动, 这才是浏览器的默认行为.

在这里插入图片描述

那究竟是哪个属性起了作用呢? 就是今天的主角 overflow-anchor. 下面的代码是第一个动图对应的代码.

.overflow {
  height: 300px;
  overflow: auto;
  border: 1px solid #111;
  overflow-anchor: none;
  font-size: 2em;
}

?? 在上面的例子中, 为了演示效果我们先把内容往下滚动了一部分让图片在黑色框框之外. 不然如果一点也不滚动图像就在框框里, 那么图像加载完成后肯定会将文字挤下去.

auto 和 none

overflow-anchor 可以是 autonone. 其中 auto 是默认值, 使用 none 就会禁止浏览器的默认行为.

兼容性

Safari 不支持这个属性😭 不愧是当代 IE.
在这里插入图片描述

谢谢你看到这里😊

文章来源:https://blog.csdn.net/broken_promise/article/details/135166338
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。