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 相关文章推荐
js写一个弹出层并锁屏效果实现代码
Dec 07 Javascript
javascript遍历控件实例详细解析
Jan 10 Javascript
简单纯js实现点击切换TAB标签实例
Aug 23 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
Dec 14 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
Aug 18 Javascript
VueJS全面解析
Nov 10 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
May 11 Javascript
详解angularjs 关于ui-router分层使用
Jun 12 Javascript
jQuery:unbind方法的使用详解
Aug 14 jQuery
laypage.js分页插件使用方法详解
Jul 27 Javascript
解决layui富文本编辑器图片上传无法回显的问题
Sep 18 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
Mar 03 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环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
CodeIgniter生成静态页的方法
2016/05/17 PHP
PHP基于curl后台远程登录正方教务系统的方法
2016/10/14 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
PHP获取访问设备信息的方法示例
2019/02/20 PHP
关于__defineGetter__ 和__defineSetter__的说明
2007/05/12 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
js DOM 元素ID就是全局变量
2012/09/20 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
微信小程序 wxapp导航 navigator详解
2016/10/31 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
微信小程序App生命周期详解
2018/01/31 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
Vue管理系统前端之组件拆分封装详解
2020/08/23 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
基于Python实现下载网易音乐代码实例
2020/08/10 Python
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
业务员简历自我评价
2014/03/06 职场文书
教职工代表大会主持词
2014/04/01 职场文书
政协调研汇报材料
2014/08/15 职场文书
就业协议书
2014/09/12 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
2016元旦文艺汇演主持词(开场白+结束语)
2015/12/03 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL
uwsgi+nginx代理Django无法访问静态资源的解决
2021/05/10 Servers
vue 自定义组件添加原生事件
2022/04/21 Vue.js