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 也可以达到相同的效果.

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

相关推荐
觉醒大王28 分钟前
哪些文章会被我拒稿?
论文阅读·笔记·深度学习·考研·自然语言处理·html·学习方法
大橙子额37 分钟前
【解决报错】Cannot assign to read only property ‘exports‘ of object ‘#<Object>‘
前端·javascript·vue.js
RFCEO37 分钟前
前端编程 课程十六、:CSS 盒子模型
css·前端基础课程·css盒子模型·css盒子模型的组成·精准控制元素的大小和位置·css布局的基石·内边距(padding)
爱喝白开水a2 小时前
前端AI自动化测试:brower-use调研让大模型帮你做网页交互与测试
前端·人工智能·大模型·prompt·交互·agent·rag
Never_Satisfied2 小时前
在JavaScript / HTML中,关于querySelectorAll方法
开发语言·javascript·html
董世昌412 小时前
深度解析ES6 Set与Map:相同点、核心差异及实战选型
前端·javascript·es6
吃杠碰小鸡3 小时前
高中数学-数列-导数证明
前端·数学·算法
kingwebo'sZone3 小时前
C#使用Aspose.Words把 word转成图片
前端·c#·word
xjt_09014 小时前
基于 Vue 3 构建企业级 Web Components 组件库
前端·javascript·vue.js
我是伪码农4 小时前
Vue 2.3
前端·javascript·vue.js