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 相关文章推荐
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
Nov 27 Javascript
超越Jquery_01_isPlainObject分析与重构
Oct 20 Javascript
JS实现关键字搜索时的相关下拉字段效果
Aug 05 Javascript
Google Maps API地图应用示例分享
Oct 23 Javascript
JS实现最简单的冒泡排序算法
Feb 15 Javascript
vue better-scroll插件使用详解
Jan 25 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
Aug 08 Javascript
js实现简易计算器功能
Oct 18 Javascript
vue ajax 拦截原理与实现方法示例
Nov 29 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
Apr 03 Javascript
小程序选项卡以及swiper套用(跨页面)
Jun 19 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
Dec 01 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
PHP5.3.1 不再支持ISAPI
2010/01/08 PHP
Thinkphp中的curd应用实用要点
2015/01/04 PHP
php计算一个文件大小的方法
2015/03/30 PHP
学习php设计模式 php实现合成模式(composite)
2015/12/08 PHP
CI框架无限级分类+递归的实现代码
2016/11/01 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
2014/03/06 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
JS根据json数组多个字段排序及json数组常用操作
2019/06/06 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
学习和使用python的13个理由
2019/07/30 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
python tkinter GUI绘制,以及点击更新显示图片代码
2020/03/14 Python
实例讲解Python 迭代器与生成器
2020/07/08 Python
职业生涯规划怎么写
2013/12/29 职场文书
秋季运动会加油稿200字
2014/01/11 职场文书
小学运动会班级口号
2014/06/09 职场文书
开展读书活动总结
2014/06/30 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
学籍证明模板
2014/11/21 职场文书
店面出租协议书范本
2014/11/28 职场文书
公司2014年度工作总结
2014/12/10 职场文书
出纳岗位职责
2015/01/31 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis
使用golang编写一个并发工作队列
2021/05/08 Golang
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL