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 04 Javascript
jquery实现滑动特效代码
Aug 10 Javascript
jquery实现的淡入淡出下拉菜单效果
Aug 25 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
Oct 31 Javascript
js获取元素下的第一级子元素的方法(推荐)
Mar 05 Javascript
详解vue表单验证组件 v-verify-plugin
Apr 19 Javascript
Vue单文件组件的如何使用方式介绍
Jul 28 Javascript
基于vue-router 多级路由redirect 重定向的问题
Sep 03 Javascript
用node开发并发布一个cli工具的方法步骤
Jan 03 Javascript
ES6 Class中实现私有属性的一些方法总结
Jul 08 Javascript
这15个Vue指令,让你的项目开发爽到爆
Oct 11 Javascript
Vue绑定用户接口实现代码示例
Nov 04 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批量缩放图片的代码[ini参数控制]
2011/02/11 PHP
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
PHP的可变变量名的使用方法分享
2012/02/05 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
2016/08/19 PHP
PHP7扩展开发教程之Hello World实现方法示例
2017/08/03 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
PHP反射原理与用法深入分析
2019/09/28 PHP
JSON 入门指南 想了解json的朋友可以看下
2009/08/26 Javascript
js 小数取整的函数
2010/05/10 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
2015/11/26 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
vue移动端项目缓存问题实践记录
2018/10/29 Javascript
小程序实现选择题选择效果
2018/11/04 Javascript
微信小程序当前时间时段选择器插件使用方法详解
2018/12/28 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
JavaScript实现多球运动效果
2020/09/07 Javascript
判断网页编码的方法python版
2016/08/12 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
美国在线眼镜商城:Eyeglasses.com
2017/06/26 全球购物
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
借款协议书范本
2014/04/22 职场文书
综合素质评价自我评价
2015/03/06 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
2015年除四害工作总结
2015/07/23 职场文书
教师素质教育心得体会
2016/01/19 职场文书