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 concat数组累加 示例
Sep 03 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
Jun 28 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
Feb 12 Javascript
jQuery结合HTML5制作的爱心树表白动画
Feb 01 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
Aug 05 Javascript
ajax在兼容模式下失效的快速解决方法
Mar 22 Javascript
JQuery Ajax 异步操作之动态添加节点功能
May 24 jQuery
详解Javascript获取缓存和清除缓存API
May 25 Javascript
jQuery表单设置值的方法
Jun 30 jQuery
JS+jQuery实现注册信息的验证功能
Sep 26 jQuery
JavaScript函数的特性与应用实践深入详解
Dec 30 Javascript
vueScroll实现移动端下拉刷新、上拉加载
Mar 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
简单的用PHP编写的导航条程序
2006/10/09 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
JavaScript基本概念初级讲解论坛贴的学习记录
2009/02/22 Javascript
写出更好的JavaScript之undefined篇(上)
2009/11/22 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
2012/03/01 Javascript
javascript计时器事件使用详解
2014/01/07 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
jQuery动态添加
2016/04/07 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
javascript 广告移动特效的实现代码
2016/06/25 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
js实现双色球效果
2020/08/02 Javascript
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
从零学Python之引用和类属性的初步理解
2014/05/15 Python
深入解答关于Python的11道基本面试题
2017/04/01 Python
python实现人像动漫化的示例代码
2020/05/17 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
Html5页面二次分享的实现
2018/07/30 HTML / CSS
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
高级护理实习生自荐信
2013/09/28 职场文书
优秀女职工事迹材料
2014/02/06 职场文书
大学新学期计划书
2014/04/28 职场文书
跑操口号
2014/06/12 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
2014年残疾人工作总结
2014/12/06 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python
5个实用的JavaScript新特性
2022/06/16 Javascript