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 相关文章推荐
jquery tab标签页的制作
May 10 Javascript
Javascript 判断是否存在函数的方法
Jan 03 Javascript
如何实现textarea里的不同文本显示不同颜色
Jan 20 Javascript
jQuery制作仿Mac Lion OS滚动条效果
Feb 10 Javascript
DWR中各种java方法的调用
May 04 Javascript
jquery设置css样式的多种方法(总结)
Feb 21 Javascript
JavaScript实现网页头部进度条刷新
Apr 16 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
May 04 Javascript
使用gulp构建前端自动化的方法示例
Dec 25 Javascript
使用Promise封装小程序wx.request的实现方法
Nov 13 Javascript
vue-socket.io接收不到数据问题的解决方法
May 13 Javascript
gojs实现蚂蚁线动画效果
Feb 18 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计数器的实现代码
2013/06/08 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
PHP实现懒加载的方法
2015/03/07 PHP
PHP判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
一个简单的Ext.XTemplate的实例代码
2012/03/18 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
jQuery中:disabled选择器用法实例
2015/01/04 Javascript
JavaScript实现将xml转换成html table表格的方法
2015/04/17 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
2015/05/11 Javascript
JS模拟并美化的表单控件完整实例
2015/08/19 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
微信小程序事件流原理解析
2019/11/27 Javascript
Vue 中使用lodash对事件进行防抖和节流操作
2020/07/26 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
Python contextlib模块使用示例
2015/02/18 Python
利用Python如何生成随机密码
2016/04/20 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
python 使用递归实现打印一个数字的每一位示例
2020/02/27 Python
linux 下selenium chrome使用详解
2020/04/02 Python
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
美发活动策划书
2014/01/14 职场文书
公司业务员岗位职责
2014/03/18 职场文书
中学生寄语大全
2014/04/03 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL
Django框架中模型的用法
2022/06/10 Python