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 面向对象特性
Dec 28 Javascript
JavaScript DOM事件(笔记)
Apr 08 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
Sep 06 Javascript
基于jquery实现动态竖向柱状条特效
Feb 12 Javascript
Bootstrap登陆注册页面开发教程
Jul 12 Javascript
微信小程序开发经验总结(推荐)
Jan 11 Javascript
详解VueJs异步动态加载块
Mar 09 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
Mar 14 Javascript
Bootstrap与Angularjs的模态框实例代码
Aug 03 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
Sep 19 Javascript
JS实现打字游戏
Dec 17 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
Oct 02 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 heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
php数组添加与删除单元的常用函数实例分析
2015/02/16 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
2016/06/22 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
python封装对象实现时间效果
2020/04/23 Python
Python实现批量转换文件编码的方法
2015/07/28 Python
Python实现桶排序与快速排序算法结合应用示例
2017/11/22 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
使用django的objects.filter()方法匹配多个关键字的方法
2019/07/18 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
应届毕业生求职信范文
2014/07/07 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL