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 03 Javascript
JQuery validate插件验证用户注册信息
May 11 Javascript
微信小程序 欢迎页面的制作(源码下载)
Jan 09 Javascript
纯js模仿windows系统日历
Feb 04 Javascript
浅谈es6中export和export default的作用及区别
Feb 07 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
May 30 Javascript
详解小程序退出页面时清除定时器
Apr 28 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
May 08 Javascript
vue如何实现自定义底部菜单栏
Jul 01 Javascript
vue + axios get下载文件功能
Sep 25 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
Nov 09 Javascript
使用JavaScript实现贪吃蛇游戏
Sep 29 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
PHP 替换模板变量实现步骤
2009/08/24 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
PHP判断当前使用的是什么浏览器(推荐)
2019/10/27 PHP
ExtJS 入门
2010/10/29 Javascript
如何将JS的变量值传递给ASP变量
2012/12/10 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
javascript闭包入门示例
2014/04/30 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
2014/08/06 Javascript
原生js实现模拟滚动条
2015/06/15 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
Node.js简单入门前传
2017/08/21 Javascript
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
nodejs 最新版安装npm 的使用详解
2018/01/18 NodeJs
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
如何解决.vue文件url引用文件的问题
2019/01/18 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
Vue看了就会的8个小技巧
2021/01/21 Vue.js
[44:40]Serenity vs Pain 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
Python实现读取并保存文件的类
2017/05/11 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
django之自定义软删除Model的方法
2019/08/14 Python
pytorch1.0中torch.nn.Conv2d用法详解
2020/01/10 Python
手动安装python3.6的操作过程详解
2020/01/13 Python
基于HTML5的WebGL实现json和echarts图表展现在同一个界面
2017/10/26 HTML / CSS
this关键字的含义
2015/04/08 面试题
Shell编程面试题
2012/05/30 面试题
大学生职业规划前言模板
2013/12/27 职场文书
微信营销策划方案
2014/02/24 职场文书
安全生产目标责任书
2014/04/14 职场文书
医院保洁服务方案
2014/06/11 职场文书
生日答谢词
2015/01/05 职场文书
音乐会主持人开场白
2015/05/28 职场文书