vue不操作dom实现图片轮播的示例代码


Posted in Javascript onDecember 18, 2019

本文介绍了vue不操作dom实现图片轮播的示例代码,分享给大家,具体如下:

效果

宽度为1190px且水平居中的轮播盒子;
中间是当前显示的默认尺寸图片;
左右两边是预显示的小尺寸图片;
轮播从右至左,图片逐渐放大。

vue不操作dom实现图片轮播的示例代码

做普通平滑轮播也可以参照这个思路

html

vue不操作dom实现图片轮播的示例代码

<ul>
 <li
	v-for="(demo,index) in demoList"
	:key="index"
	:class="{'demo-left':demoStyle(index) == 0,'demo-active':demoStyle(index) == 1,'demo-right':demoStyle(index) == 2}"
 >
	<img :src="demo.img" alt />
 </li>
</ul>

css

我们要写上三个li不同位置的样式和一个li默认位置的的样式。
分别是:
左边位置的dom样式;
中间位置的dom样式;
右边位置的dom样式;
默认位置的dom样式。
其中,默认的dom隐藏在中间展示的dom下面。
看图:

vue不操作dom实现图片轮播的示例代码

图中:

ul的样式:

ul {
 position: relative;
 width: 1190px;
 height: 500px;
 margin: 0 auto;
 display: flex;
}

紫色部分是默认的li的dom样式,设置在整个ul水平且垂直居中的位置

ul > li {
 position: absolute;
 width: 480px;
 min-width: 480px;
 height: 400px;
 top: 50px;
 bottom: 50px;
 left: 355px;
 font-size: 0;	/* 去除img标签留白,与轮播无关 */
 overflow: hidden;
 background: white;
 box-shadow: 0 0 10px 0 #dddddd;
 transition: 0.6s;
 z-index: 1;
}

红色部分是左边的li的dom样式,设置在整个ul水平靠左、垂直居中的位置

ul > .demo-left {
 left: 0;
 z-index: 2;
}

黑色部分是中间需要展示的li的dom样式,设置在整个ul水平靠右、垂直居中的位置

ul > .demo-active {
 width: 600px;
 min-width: 600px;
 height: 500px;
 top: 0;
 bottom: 0;
 left: 295px;
 z-index: 3;
}

蓝色部分是右边的li的dom样式,设置在整个ul水平靠右、垂直居中的位置

ul > .demo-right {
 left: 710px;
 z-index: 2;
}

图片水平且垂直居中,可自定义设置,与轮播无关

ul > li > img {
 position: absolute;
 width: 100%;
 top: 0;
 right: 0;
 bottom: 0;
 left: 0;
 margin: auto;
}

vue

export default {
 name: "demo",
 data() {
	return {
	 demoList: [	// 图片列表
    {
		 id: "1",
		 src: "图片路径"
		},
		{
		 id: "2",
		 src: "图片路径"
		},
		{
		 id: "3",
		 src: "图片路径"
		},
		{
		 id: "4",
		 src: "图片路径"
		},
		{
		 id: "5",
		 src: "图片路径"
		}
	 ],
	 demoActive: 0,	// 当前显示的li下标,设置为0,表示首次加载显示第一张图片
   demoTimer: null	// 定时器,声明demoTimer方便停止轮播和重新开始![在这里插入图片描述](https://img-blog.csdnimg.cn/20191217174439432.gif)轮播
	}
 },
 methods: {
 	// 根据返回值给li添加className
 	demoStyle(index) {
   if (index == this.demoActive - 1) return 0;
   if (index == this.demoActive ) return 1;
   if (index == this.demoActive + 1) return 2;
   if (this.demoActive == 0 && index == this.demoList.length - 1) return 0;
   if (this.demoActive == this.demoList.length - 1 && index == 0) return 2;
  },
  // 轮播执行
  demoCarousel() {
   this.demoActive++;
   if (this.demoActive > this.demoList.length - 1) {
    this.demoActive= 0;
   }
  }
 },
 mounted() {
  let _self = this;
  _self.$nextTick(function () {
   // 开始轮播,3秒一次
   _self.demoTimer = setInterval(_self.demoCarousel, 3000);
  });
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
[原创]用javascript实现检测指定目录是否存在的方法
Jan 12 Javascript
JS简单的图片放大缩小的两种方法
Nov 11 Javascript
深入理解Javascript里的依赖注入
Mar 19 Javascript
Node.js中创建和管理外部进程详解
Aug 16 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
Oct 10 Javascript
js为什么不能正确处理小数运算?
Dec 29 Javascript
原生js图片轮播效果实现代码
Oct 19 Javascript
微信小程序开发探究
Dec 27 Javascript
解决webpack打包速度慢的解决办法汇总
Jul 06 Javascript
JS实现左边列表移到到右边列表功能
Mar 28 Javascript
JS回调函数简单易懂的入门实例分析
Sep 29 Javascript
小程序实现按下录音松开识别语音
Nov 22 Javascript
使用JS来动态操作css的几种方法
Dec 18 #Javascript
基于ts的动态接口数据配置的详解
Dec 18 #Javascript
H5实现手机拍照和选择上传功能
Dec 18 #Javascript
如何使用webpack打包一个库library的方法步骤
Dec 18 #Javascript
js实现上传图片并显示图片名称
Dec 18 #Javascript
js实现多图和单图上传显示
Dec 18 #Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
Dec 18 #Javascript
You might like
example2.php
2006/10/09 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
php数组删除元素示例
2014/03/21 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
js正则表达式的使用详解
2013/07/09 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
flash遮住div问题的正确解决方法
2014/02/27 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
AngularJS 视图详解及示例代码
2016/08/17 Javascript
3种不同的ContextMenu右键菜单实现代码
2016/11/03 Javascript
canvas实现钟表效果
2017/02/13 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
python脚本爬取字体文件的实现方法
2017/04/29 Python
Python 12306抢火车票脚本
2018/02/07 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
tensorflow模型继续训练 fineturn实例
2020/01/21 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
2020/02/25 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
pytorch简介
2020/11/11 Python
英国赛车、汽车改装和摩托车零件购物网站:Demon Tweeks
2018/10/29 全球购物
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
简历中自我评价范文3则
2013/12/14 职场文书
一年级数学教学反思
2014/02/01 职场文书
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
债务授权委托书范本
2014/10/17 职场文书
求职推荐信范文
2015/03/27 职场文书
2019毕业论文致谢词
2019/06/24 职场文书
golang连接MySQl使用sqlx库
2022/04/14 Golang