当前位置: 首页 > 知识库问答 >
问题:

javascript - 为什么el-carousel的里面使用el-image的lazy属性会导致往右翻页的时候有几页空白,以及为什么el-carouselde的里面使用img的loading="lazy"属性不能够懒加载?

凌远
2025-04-14

问题1:为什么el-carousel的里面使用el-image的lazy属性会导致往右翻页的时候有几页空白?问题2:以及为什么el-carouselde的里面使用img的loading="lazy"属性不能够懒加载?

问题1:为什么el-carousel的里面使用el-image的lazy属性会导致往右翻页的时候有几页空白

在线演示

Element Plus Playground 1

示例代码

<script setup lang="ts">

</script>

<template>
   <div>
    <div style="width: 100%; height: 2000px; display: block">lazy load header</div>
    <el-carousel height="2000px">
      <el-carousel-item>
        <el-row>
          <el-col :span="24">
            <el-image
              src="https://dummyimage.com/2000x2000/aaa/fff&text=2000x2000"
              lazy
            />
          </el-col>
        </el-row>
      </el-carousel-item>
      <el-carousel-item>
        <el-row>
          <el-col :span="24">
            <el-image
              src="https://dummyimage.com/2000x2000/bbb/fff&text=2000x2000"
              lazy
            />
          </el-col>
        </el-row>
      </el-carousel-item>
      <el-carousel-item>
        <el-row>
          <el-col :span="24">
            <el-image
              src="https://dummyimage.com/2000x2000/ccc/fff&text=2000x2000"
              lazy
            />
          </el-col>
        </el-row>
      </el-carousel-item>
      <el-carousel-item>
        <el-row>
          <el-col :span="24">
            <el-image
              src="https://dummyimage.com/2000x2000/ddd/fff&text=2000x2000"
              lazy
            />
          </el-col>
        </el-row>
      </el-carousel-item>
      <el-carousel-item>
        <el-row>
          <el-col :span="24">
            <el-image
              src="https://dummyimage.com/2000x2000/eee/fff&text=2000x2000"
              lazy
            />
          </el-col>
        </el-row>
      </el-carousel-item>
    </el-carousel>
  </div>
</template>

<style>
</style>

尝试过把el-image换成img,el-image的lzy属性换成img的loading="lazy",虽然没有了图片变成空白,但是图片懒加载并没有生效,而是在页面一打开在页面还没有滚动到轮播图的时候就加载了图片,期望得到的结果1在el-carouselde的里面使用el-image的lazy属性的时候往右翻页的时候不会有空白,期望得到的结果2在el-carouselde的里面使用img的loading="lazy"属性的时候能够懒加载

问题2:以及为什么el-carouselde的里面使用img的loading="lazy"属性不能够懒加载?

在线演示

Element Plus Playground 2

示例代码

<script setup lang="ts">

</script>

<template>
   <div>
    <div style="width: 100%; height: 2000px; display: block">lazy load header</div>
    <el-carousel height="2000px">
      <el-carousel-item>
        <el-row>
          <el-col :span="24">
            <img
              src="https://dummyimage.com/2000x2000/aaa/fff&text=2000x2000"
              loading="lazy"
            />
          </el-col>
        </el-row>
      </el-carousel-item>
      <el-carousel-item>
        <el-row>
          <el-col :span="24">
            <img
              src="https://dummyimage.com/2000x2000/bbb/fff&text=2000x2000"
              loading="lazy"
            />
          </el-col>
        </el-row>
      </el-carousel-item>
      <el-carousel-item>
        <el-row>
          <el-col :span="24">
            <img
              src="https://dummyimage.com/2000x2000/ccc/fff&text=2000x2000"
              loading="lazy"
            />
          </el-col>
        </el-row>
      </el-carousel-item>
      <el-carousel-item>
        <el-row>
          <el-col :span="24">
            <img
              src="https://dummyimage.com/2000x2000/ddd/fff&text=2000x2000"
              loading="lazy"
            />
          </el-col>
        </el-row>
      </el-carousel-item>
      <el-carousel-item>
        <el-row>
          <el-col :span="24">
            <img
              src="https://dummyimage.com/2000x2000/eee/fff&text=2000x2000"
              loading="lazy"
            />
          </el-col>
        </el-row>
      </el-carousel-item>
    </el-carousel>
  </div>
</template>

<style>
</style>

暂时不知道如何尝试,期望的结果1:el-carousel的里面使用el-image的lazy属性会导致往右翻页的时候没有空白,期望的结果2:el-carouselde的里面使用img的loading="lazy"属性能够懒加载

共有1个答案

孙斌
2025-04-14
<script setup>
import { ref, onMounted } from 'vue'

const imageUrls = [
  "https://dummyimage.com/2000x2000/aaa/fff&text=2000x2000",
  "https://dummyimage.com/2000x2000/bbb/fff&text=2000x2000",
  "https://dummyimage.com/2000x2000/ccc/fff&text=2000x2000",
  "https://dummyimage.com/2000x2000/ddd/fff&text=2000x2000",
  "https://dummyimage.com/2000x2000/eee/fff&text=2000x2000"
]

// 预加载所有图片
const preloadImages = () => {
  imageUrls.forEach(url => {
    const img = new Image()
    img.src = url
  })
}

onMounted(() => {
  preloadImages()
})
</script>

<template>
  <div>
    <div style="width: 100%; height: 2000px; display: block">lazy load header</div>
    <el-carousel height="2000px">
      <el-carousel-item v-for="(url, i) in imageUrls" :key="i">
        <el-row>
          <el-col :span="24">
            <el-image
              :src="url"
              fit="cover"
              style="width: 100%; height: 100%"
            />
          </el-col>
        </el-row>
      </el-carousel-item>
    </el-carousel>
  </div>
</template>

问题2:

<script setup>
import { ref, onMounted } from 'vue'

const images = ref([])
const imageUrls = [
  "https://dummyimage.com/2000x2000/aaa/fff&text=2000x2000",
  // ...其他图片
]

onMounted(() => {
 
  const observer = new IntersectionObserver((entries) => {
    if (entries[0].isIntersecting) {
      images.value = imageUrls
      observer.disconnect()
    }
  })
  
  observer.observe(document.querySelector('.carousel-container'))
})
</script>

<template>
  <div class="carousel-container">
    <el-carousel height="2000px">
      <el-carousel-item v-for="(url, index) in images" :key="index">
        <img :src="url" />
      </el-carousel-item>
    </el-carousel>
  </div>
</template>
 类似资料:
  • 但是像el-button的disabled属性就能动态变化,原因是什么?之前又看到说是因为type是静态属性,这是一个什么概念?能不能请懂的大佬讲解一下

  • 滚动翻页时,js添加的img为什么懒加载失败? 页面中,滚动翻页时,js添加的img为什么懒加载失败,图片不显示,如果能显示 懒加载用的是zepto+下面的代码 https://github.com/maplejan/jquery_lazyload/blob/1.8.5/jquery.lazyload.js 首页正常加载hmtl中的图片,能通过懒加载实现,翻页js添加dom部分内容没问题,就是当内

  • 问题内容: 这个bean的“状态”: 使用ajax“成功”回调通过电线发送: 这里需要注释@JsonProperty吗?使用它的好处是什么?我想我可以删除此注释而不会引起任何副作用。 在https://github.com/FasterXML/jackson-annotations/wiki/Jackson- Annotations 上阅读有关此注释的信息我不知道何时需要使用此注释? 问题答案:

  • 这个豆子“状态”: 使用ajax“成功”回调通过网络发送: 这里需要注释@JsonProperty吗?使用它有什么好处?我想我可以删除这个注释而不会产生任何副作用。 正在阅读关于https://github.com/FasterXML/jackson-annotations/wiki/Jackson-Annotations我不知道什么时候需要用这个?

  • 本文向大家介绍什么是iOS lazy loading?相关面试题,主要包含被问及什么是iOS lazy loading?时的应答技巧和注意事项,需要的朋友参考一下 答案:懒汉模式,只在用到的时候才去初始化。 也可以理解成延时加载。 我觉得最好也最简单的一个列子就是tableView中图片的加载显示了。 一个延时载,避免内存过高,一个异步加载,避免线程堵塞。

  • 存在el-form的页面切换之后内存还在被占用,操作久了之后内存占用越来越大 一个vue3的两个页面都只含有el-form和el-table,无定时器和监听器,当操作久了之后发现内存一直在增长,然后去除掉table,发现只要含有el-form,页面频繁切换内存会增长且不会释放,不知道如何去释放这个被占用的内存,像echarts有dispose方法,但form没听说过,而且没有明白为什么form会造

  • vue elementpuls 使用 el-tabs时,有3个el-tab-pane,el-tab-pane里各有div v-if(echart图表,必须使用v-if),点击时页面滚动条会转到页面最顶部,怎么解决这个问题?

  • EL表达式最简单的使用方法就是将其直接放到JSP页面中。JSP引擎在遇到“${...}”时,会将里面的内容作为EL表达式来处理。并且将EL表达式的执行结果作为JSP页面的静态部分在表达式所在的位置输出。如在JSP页面中有如下的内容: 1 + 3 = ${1 + 3} JSP引擎在翻译上面的代码时,会将如下的内容输出到客户端: 1 + 3 = 4 如果要客户端输出HTML或XML格式的内容,由于这些