记录下自己写仿网易云音乐手写的轮播图,效果如图

简单来说,这个轮播图原理是用css定位把所有图片叠再一起,显示前3张图片,第2张图片层里设置层级为最高,1,3俩张图片层级比2层级低,比其他图片高就行。定义一个数组,放轮播图片的id名,删除数组最后一张图片class名放到数组第一个位置,获取轮播图对应dom,for循环遍历,重新设置id名,不停循环,图片就会不断从右向左浮动显示。从左向右同理删除数组第一张图片id名放到数组最后一个位置。

代码部分:

​
​
<template><div class="box"><ul class="img_list"><liv-for="(val, index) in banners":key="index":id="'last' + (index + 1)"><img class="img" :src="val.imageUrl" alt="" /></li><div class="span"><spanv-for="(val, index) in banners":key="index"@mouseover="mouse(index)"@mouseleave="leave()"></span></div></ul></div>
</template><script>
let li = [];
let time;
let index = 0;
export default {data() {return {elenent: [],banners: [],li1: [],};},mounted() {this.initImg();},beforeDestroy() {clearInterval(time);},methods: {//初始化图片initImg() {new Promise((resolve, reject) => {//请求图片this.getapi.homeImg().then((res) => {//console.log(res.banners, "1234img");this.banners = res.banners;//给定义数组赋值for (var i = 0; i < res.banners.length; i++) {li[i] = "last" + (i + 1);}// for (var i = 0; i < this.banners.length; i++) {//   this.li1[i] = li//   li.unshift(li.pop());// }let arr = [];for (let i = 0; i < this.banners.length; i++) {this.li1.push(JSON.parse(JSON.stringify(li)));li.unshift(li.pop());}//console.log(this.li1, "zxc123");resolve();});}).then(() => {//开启图片轮播//console.log(li,456)//this.li1 = JSON.parse(JSON.stringify(arr))console.log(this.li1, "zxc");time = setInterval(this.right1, 3000);});},right1() {let libox = document.getElementsByClassName("img_list")[0].children;let span = document.getElementsByClassName("span")[0].children;//删除最后一张图片放到第一张//console.log(li,456)li.unshift(li.pop());for (let i = 0; i < span.length; i++) {span[i].style.background = "#e6e6e6";}index++;if (index > span.length - 1) {index = 0;}span[index].style.background = "#ec4141";for (let i = 0; i < li.length; i++) {libox[i].id = li[i];}},right() {let libox = document.getElementsByClassName("img_list")[0].children;let span = document.getElementsByClassName("span")[0].children;//删除最后一张图片放到第一张//li.unshift(li.pop());//console.log(li);//console.log(index,'zxc')for (let i = 0; i < span.length; i++) {span[i].style.background = "#e6e6e6";}if (index > span.length - 1) {index = 0;}span[index].style.background = "#ec4141";//index++;for (let i = 0; i < li.length; i++) {libox[i].id = li[i];}},left() {let libox = document.getElementsByClassName("img_list")[0].children;let span = document.getElementsByClassName("span")[0].children;//删除最后一张图片放到第一张//li.push(li.shift());//console.log(li);//console.log(index,'zxc')for (let i = 0; i < span.length; i++) {span[i].style.background = "#e6e6e6";}if (index < 0) {index = 0;}span[index].style.background = "#ec4141";//index--},mouse(e) {let libox = document.getElementsByClassName("img_list")[0].children;clearInterval(time);li = JSON.parse(JSON.stringify(this.li1[e]));//console.log(li,789)if (e > index) {index = e;for (let i = 0; i < li.length; i++) {libox[i].id = li[i];}this.right();num = e;}if (e < index) {index = e;for (let i = 0; i < li.length; i++) {libox[i].id = li[i];}this.left();num = e;}//console.log(this.li1[e], index);},leave() {clearInterval(time);//index = numtime = setInterval(this.right1, 3000);},},
};
</script><style scoped>
.box {width: 95%;height: 180px;margin-left: 15px;margin-top: 20px;position: relative;
}
.img_list {width: 100%;height: 150px;
}
.img_list li {float: left;position: absolute;left: 0;border-radius: 10px;transition: all 0.5s;
}
.img_list li img {width: 400px;height: 150px;border-radius: 10px;
}
#last1 {left: 0;z-index: 1;
}
#last2 {left: 290px;transform: scale(1.25);z-index: 99;
}
#last3 {left: 645px;z-index: 1;
}
#but {position: absolute;z-index: 999;bottom: 200px;
}
.span {width: auto;height: 20px;position: absolute;bottom: -5px;z-index: 99;left: 46%;transform: translateX(-50%);
}
.span span {width: 30px;height: 5px;text-align: center;display: inline-block;background-color: #e6e6e6;margin-left: 20px;border-radius: 3px;
}
.span span:nth-child(1) {margin-left: 0px;background-color: #ec4141;
}
</style>

记录下如何用vue实现PC端网易云轮播图效果相关推荐

  1. 第九天 PC端网页特效(轮播图制作)

    目录 1.元素偏移量 offset 1.1 offset 概述 1.2 offset 和 style 的区别 1.3案例 1.获取鼠标在盒子内的坐标 2.模仿京东图片放大镜的效果 2.元素可视区 cl ...

  2. 原生JS实现PC端无缝滚动轮播图、匀速轮播图、匀速动画

    offset家族的了解 1.offsetHeight:元素的offsetHeight是一种元素CSS高度的衡量标准,包括元素的边框.内边距和元素的水平滚动条(如果存在且渲染的话),不包含:before ...

  3. PC端网易云音乐播放云盘音乐时显示加载失败,自动调转下一首的解决方法

    PC端网易云音乐播放云盘音乐时显示加载失败,自动调转下一首解决方法 注意: 一定要看看是不是和你的情况一样,不一样不要用这种方法!!! 具体情况: 我们经常会下载歌曲存到电脑文件夹里,然后通过网易云音 ...

  4. html中间大两边小轮播代码,vue使用swiper实现中间大两边小的轮播图效果

    项目中使用的vue,刚好有需求要实现轮播图,突出显示当前图片,两边展示其他图片:通过查各种资料,实现了,故在此记录下来 下面我们来看下实现步骤: 第一步:首先在项目index.html中引入swipe ...

  5. vue实战-产品详情页(轮播图、放大镜)

    vue实战-产品详情页(轮播图.放大镜) 1.添加产品详情页的静态组件 因为它是路由组件,将其放入pages文件夹下. 注册路由组件 1)router中添加Detail的路由. {path:'/det ...

  6. vue列表左右箭头滑动_vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)...

    1.效果图如下 2.vue代码如下 indicator-position="none" :autoplay="false"> > {{items.b ...

  7. 移动端h5 层叠轮播图,uniapp微信小程序层叠轮播图,3d轮播图

    如果你的项目使用的是jquery的话 推荐使用swiper 进行做 https://www.swiper.com.cn/usage/index.html 如果用的是vue3开发的纯h5项目的话,推荐 ...

  8. vue 实现无限轮播_用vue写一个轮播图效果

    轮播图在网站中几乎无处不在,占用地方少,交互性好.今天就来聊聊如何用vue实现一个轮播效果. 一.原理 在轮播图数组dataList中,定义一个变量currentIndex = 0表示第一张图片,默认 ...

  9. vue开发一个实用美观的轮播图组件

    网上有不少vue开发的轮播图资源,相信读者也看过不少,这里笔者开发了一个轮播图组件,简单美观实用. 先上示例图: 常见的轮播图都是占满屏幕的形式,像上图所示的轮播图虽然经常见到,但是在一些常见的轮播组 ...

最新文章

  1. QML和C++混合编程--(一)
  2. java io流printstream_java IO流:打印流 PrintStream
  3. hadoop-2.7.1+zookeeper-3.4.8+hbase-1.2.1+apache-hive-2.0.0完全分布式集群
  4. 在实际使用中 mysql所支持的触发器有_2016计算机二级MySQL冲刺题及答案
  5. [html] 写一个滚动吸顶的布局
  6. 【Hadoop系列】HDFS
  7. 读取文本作为输出字段
  8. Android时间与服务器同步方法
  9. idea 回退merge_idea Git版本回退
  10. 入职一年感言简短_如何在Windows任务栏中放入简短说明
  11. 深入掌握JMS(一):JSM基础
  12. html编辑唐诗的格式,标准格式唐诗宋词
  13. 【面试题】面试题Redis
  14. 笔试强训day25(数根,星际密码)
  15. 小企业智能路由器的应用 (用智能路由器推广你的烤肉饭)
  16. html字号计算,javascript – 获取div的计算字体大小
  17. matlab画comsol二维图,标注图在二维和三维绘图组中的运用
  18. ameya360代理品牌之太阳诱电(TAIYO YUDEN)莅临培训指导
  19. 文件操作之fopen
  20. Python编程:sys模块

热门文章

  1. 使用tig 做分支管理
  2. github镜像网站_Jenkins把GitHub项目做成Docker镜像
  3. vue-transitionslotmixinfilterplugin
  4. 「志强课堂」成功的微商是怎么做好推广引流的?
  5. 戴尔 R730xd 服务器更改管理口密码 图文教程
  6. 互联网晚报 | 06月07日 星期二 | 杭州调整住房公积金政策;苹果发布iOS 16;特斯拉回应裁员是否涉及中国地区...
  7. word恢复到安装时的状态?
  8. vivoX30是android5的吗,深度剖析揭秘opporeno5质量和vivox30区别是?选哪个更好?独家揭秘报道...
  9. htcm7刷linux,HTC One M7 怎么刷机?刷机图文教程 ?
  10. 阿里云被攻击封多久?