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 相关文章推荐
让你的博文自动带上缩址的实现代码,方便发到微博客上
Dec 28 Javascript
javascript hashtable 修正版 下载
Dec 30 Javascript
seaJs的模块定义和模块加载浅析
Jun 06 Javascript
JavaScript中的类(Class)详细介绍
Dec 30 Javascript
jquery合并表格中相同文本的相邻单元格
Jul 17 Javascript
Node.js返回JSONP详解
May 18 Javascript
vue实现动态数据绑定
Apr 28 Javascript
Axios学习笔记之使用方法教程
Jul 21 Javascript
深入理解Angular4订阅(Subscribe)与取消
Nov 22 Javascript
详解使用jQuery.i18n.properties实现js国际化
May 04 jQuery
jQuery实现B2B网站后台管理系统侧导航
Jul 08 jQuery
全面解析Vue中的$nextTick
Dec 24 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的安全
2006/10/09 PHP
杏林同学录(三)
2006/10/09 PHP
PHP备份/还原MySQL数据库的代码
2011/01/06 PHP
深入了解PHP类Class的概念
2012/06/14 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
php解析url的三个示例
2014/01/20 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
PHP数组函数array_multisort()用法实例分析
2016/04/02 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
JavaScript 图片预览效果 推荐
2009/12/22 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
js中利用tagname和id获取元素的方法
2016/01/03 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
Python获取脚本所在目录的正确方法
2014/04/15 Python
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
python pandas 对series和dataframe的重置索引reindex方法
2018/06/07 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
python基于SMTP协议发送邮件
2019/05/31 Python
CSS3的一个简单导航栏实现
2015/08/03 HTML / CSS
VIVOBAREFOOT赤脚鞋:让您的脚做自然的事情
2017/06/01 全球购物
意大利在线药房:Saninforma
2021/02/11 全球购物
股份合作协议书范本
2014/04/14 职场文书
小学教师个人总结
2015/02/05 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android