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如何给&amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;赋值
Apr 20 Javascript
jQuery asp.net 用json格式返回自定义对象
Apr 07 Javascript
jsTree 基于JQuery的排序节点 Bug
Jul 26 Javascript
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
Apr 02 Javascript
js跨域问题浅析及解决方法优缺点对比
Nov 08 Javascript
jQuery中position()方法用法实例
Jan 16 Javascript
javascript处理a标签超链接默认事件的方法
Jun 29 Javascript
详解CommonJS和ES6模块循环加载处理的区别
Dec 26 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
Jul 20 Javascript
vue实现二级导航栏效果
Oct 19 Javascript
基于javascript canvas实现五子棋游戏
Jul 08 Javascript
vue3.0 数字翻牌组件的使用方法详解
Apr 20 Vue.js
使用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
PHP函数utf8转gb2312编码
2006/12/21 PHP
PHP脚本中include文件出错解决方法
2008/11/20 PHP
php常用ODBC函数集(详细)
2013/06/24 PHP
php使用curl抓取qq空间的访客信息示例
2014/02/28 PHP
php字符串过滤与替换小结
2015/01/26 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
PHP实现单例模式建立数据库连接的方法分析
2020/02/11 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
JavaScript中两种链式调用实现代码
2011/01/12 Javascript
利用jQuery操作对象数组的实现代码
2011/04/27 Javascript
jquery 动态创建元素的方式介绍及应用
2013/04/21 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
JS实现3D图片旋转展示效果代码
2015/09/22 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
2015/09/27 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
2019/12/09 Javascript
python中__call__内置函数用法实例
2015/06/04 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
Python数据可视化实现漏斗图过程图解
2020/07/20 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
Saks Fifth Avenue澳洲/亚太地区:萨克斯第五大道精品百货店
2019/06/09 全球购物
保密工作责任书
2014/04/16 职场文书
村党支部书记承诺书
2014/05/29 职场文书
文案策划专业自荐信
2014/07/07 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
"9.18"国耻日演讲稿范文
2014/09/14 职场文书
2014年创先争优工作总结
2014/12/11 职场文书
实习报告范文
2019/07/30 职场文书