image 标签的 width 和 height 有大作用!!!

image 标签的 widthheight 有大作用!!!

我们将在这里探讨一个问题, 如果在加载图片之后不影响图片下边文字的移动.

在给出答案之前, 要知道 width 在 2019 年之后 有了更多能力. 也就是浏览器会根据 widthheight 计算 aspect-ratio. 当然, 为了实现我们的目标, 提前知道图片的宽高比是必须的.

感谢百度, 因为我用了百度的 logo 图片作为展示. 图片的大小是 540*258

width 最开始的用途

widthheight 用来指定图片的宽度和高度, 虽然要求值都是以 px 为单位的数字, 但是下图中带单位的写法写生效

作为标签属性的 width 是可以被 CSS 中的 width 覆盖的.

发挥作用

下面我们需要开始处理. 将 540 和 258 分别除以 6 得到 90 和 43.

html 复制代码
<div class="box">
  <img id="bg" src="" width="90" height="43">
  <div>Lorem...</div>
</div>
css 复制代码
#bg {
  width: 200px;
  height: auto;
  outline: 1px solid salmon;
}

在 3s 后才加载图片

js 复制代码
const bg = document.getElementById('bg')
setTimeout(() => {
  bg.src = 'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png'
}, 3000)

来看效果

感觉不错, 但是文字还是发生了一些抖动, 分析后我发现可能是图片对齐问题, 为了验证我的想法, 我在图片前面加上了一个字母 x

html 复制代码
<div class="box">
  x<img id="bg" src="" width="90" height="43">
  <div>Lorem...</div>
</div>

我们知道 x 下边缘就是行盒子 baseline 的位置. x 的位置变动就表示行高发生了变化. 而图片的下边缘是在 baseline, 所以图片抖动的原因就是 baseline 发生了偏移.

baseline 下移后, descender 的距离就是文字抖动的距离.

为了阻止文字移动, 我们要阻止 baseline 的移动, 或者我们通过指定图片的 vertical-alignbottom 也可以达到相同的效果.

哈哈哈我们完成了最开始设置的目标. 喝杯奶茶🥤庆祝一下吧~ 谢谢你看到这里😊

相关推荐
xianxin_4 分钟前
CSS Dimension(尺寸)
前端
小宋搬砖第一名4 分钟前
前端包体积优化实战-从 352KB 到 7.45KB 的极致瘦身
前端
陈随易5 分钟前
前端之虎陈随易:2025年8月上旬总结分享
前端·后端·程序员
草巾冒小子9 分钟前
天地图应用篇:增加全屏、图层选择功能
前端
universe_0127 分钟前
day25|学习前端js
前端·笔记
Zuckjet32 分钟前
V8 引擎的性能魔法:JSON 序列化的 2 倍速度提升之路
前端·chrome·v8
MrSkye33 分钟前
🔥React 新手必看!useRef 竟然不能触发 onChange?原来是这个原因!
前端·react.js·面试
wayman_he_何大民40 分钟前
初识机器学习算法 - AUM时间序列分析
前端·人工智能
juejin_cn41 分钟前
前端使用模糊搜索fuse.js和拼音搜索pinyin-match提升搜索体验
前端
....4921 小时前
Vue3 + Element Plus 实现可搜索、可折叠、可拖拽的部门树组件
前端·javascript·vue.js