You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NuxtImg的底层img元素上设置ref?

NuxtImg设置ref无法获取底层img元素的解决方案

直接给NuxtImg组件添加ref,拿到的是NuxtImg组件本身的实例,而非渲染后生成的底层<img>标签——而且ref是Vue内部的引用标识,不会被渲染成DOM属性,所以你在浏览器开发者工具里看不到带ref属性的img元素。

解决方法有两种:

方法一:通过组件实例获取底层img

在组件脚本中(以Vue 3 <script setup>为例):

import { ref, onMounted, nextTick } from 'vue'

const thelogo = ref(null)

onMounted(async () => {
  // 等待DOM更新完成
  await nextTick()
  // 从组件实例的根元素中找到img标签
  const imgElement = thelogo.value.$el.querySelector('img')
  // 这里即可将imgElement传递给着色器组件
})

模板中保留原有的ref绑定:

<NuxtImg 
  src="/thelogo.png" 
  ref="thelogo"
  loading="lazy" 
  format="webp" 
  quality="100" 
  sizes="50vw sm:60vw md:500px" 
  densities="x1 x2"
/>

方法二:通过load事件直接获取img元素

利用图片加载完成的事件,直接从事件参数中拿到目标img元素:

<NuxtImg 
  src="/thelogo.png" 
  loading="lazy" 
  format="webp" 
  quality="100" 
  sizes="50vw sm:60vw md:500px" 
  densities="x1 x2"
  @load="handleImgLoad"
/>

脚本中处理事件:

const handleImgLoad = (e) => {
  const imgElement = e.target
  // 将imgElement传递给着色器组件
}

内容的提问来源于stack exchange,提问作者Thomas James Thorstensson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 00:53:18