vue 动态背景图轮播

1、纯CSS 的实现,那样你的图片是固定的,那如果要后台管理系统来配,那如何实现呢?

 @-webkit-keyframes perimeter {
             0%{
                 background-image: url("../assets/image/zgf03.jpg");background-size: 100% 100%;background-repeat: no-repeat;
             }
             25%{
                 background-image: url("../assets/image/zgf01.jpg");background-size: 100% 100%;background-repeat: no-repeat;
             }
             75%{
                  background-image: url("../assets/image/zgf02.jpg");background-size: 100% 100%;background-repeat: no-repeat;
             }
             100%{
               background-image: url("../assets/image/zgf03.jpg");background-size: 100% 100%;background-repeat: no-repeat;
             }
         }

   2、 改成用JS实现:

用js 实现:

autoBackgroud(){
           let backgrounds=' 0%{background-image: url("http://cdn.runfudeng.com/jdeps/images/dj01.jpeg");background-size: 100% 100%;background-repeat: no-repeat;} ';
             backgrounds+=' 25%{background-image: url("http://cdn.runfudeng.com/jdeps/images/dj02.jpeg");background-size: 100% 100%;background-repeat: no-repeat; }';
             backgrounds+='75%{background-image: url("http://cdn.runfudeng.com/jdeps/images/dj01.jpeg");background-size: 100% 100%;background-repeat: no-repeat; } ';
             backgrounds+='100%{background-image: url("http://cdn.runfudeng.com/jdeps/images/dj03.jpeg");background-size: 100% 100%;background-repeat: no-repeat; } ';


 let style = document.styleSheets[0];
 style.insertRule(
                " @-webkit-keyframes perimeter { " + backgrounds + "}"
            );

}

3、从后台获取动态配置背景图片

        1)从接口获取图片列表

        2)加入

<script>
    methods: {
 autoccs() {
           
            let backgrounds = "";
            this.backgroundImg.forEach((item) => {
                backgrounds +=
                    item.percent +
                    '{background-image: url("' +
                    item.url +
                    '");background-size: 100% 100%;background-repeat: no-repeat;} ';
            });
            
             let style = document.styleSheets[0];
            //style.deleteRule(6);//清除之前写入的动画样式,6代表动画所在的数组位置
            style.insertRule(
                " @-webkit-keyframes perimeter { " + backgrounds + "}"
            );
        },


}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js 可以结合一些第三方库或者自己编写代码来实现图片轮播功能,特别是在使用了 Vue 的组件化思想后,操作起来会更加方便。以下是使用 Vue.js 实现背景图轮播图的一种常见方法: 1. 使用 Vue-Cycle2 或 Vuetify 这样的库:这些库提供了现成的轮播组件,例如 `v-carousel` 或 `v-parallax-image`,可以直接在模板中使用,并且配置简单,支持自定义选项如定时切换、鼠标滚轮控制等。 ```html <template> <v-parallax :parallax="true" :opacity="0.5"> <img src="your-image-url" alt="Your Image" v-if="isActive"> </v-parallax> </template> <script> import { Parallax } from 'vuetify/lib/components/Parallax'; export default { components: { Parallax, }, data() { return { isActive: false, // 初始轮播状态 currentIndex: 0, // 当前图片索引 images: ['image1.jpg', 'image2.jpg', 'image3.jpg'], // 轮播图片数组 }; }, methods: { nextSlide() { this.isActive = (this.currentIndex + 1) % this.images.length === 0; this.currentIndex = (this.currentIndex + 1) % this.images.length; }, // 在需要切换到下一张图片时调用此方法 }, mounted() { this.nextSlide(); setInterval(this.nextSlide, 3000); // 每隔3秒切换一次图片 }, }; </script> ``` 2. 如果没有选择库,可以手动实现一个简单的轮播效果,比如使用 CSS 过渡和 JavaScript 来切换背景图: ```html <div id="myCarousel" class="carousel slide" v-bind:class="{ active: isActive }"> <div class="carousel-inner" role="listbox"> <div v-for="(image, index) in images" :key="index" :class="{ 'carousel-item': true, 'active': index === currentIndex }" > <div class="carousel-background" style="background-image: url('{{ image }}')"></div> </div> </div> <button v-on:click="nextSlide" class="carousel-control-prev"> <span class="carousel-control-prev-icon"></span> </button> <button v-on:click="prevSlide" class="carousel-control-next"> <span class="carousel-control-next-icon"></span> </button> </div> <script> export default { data() { return { isActive: false, currentIndex: 0, images: [...], // 同上 }; }, methods: { nextSlide() { if (this.currentIndex < this.images.length - 1) { this.isActive = false; this.currentIndex++; setTimeout(() => { this.isActive = true; }, 500); } }, prevSlide() { if (this.currentIndex > 0) { this.isActive = false; this.currentIndex--; setTimeout(() => { this.isActive = true; }, 500); } }, }, // ...其他生命周期钩子和样式设置 }; </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值