flutter开发实战详解pdf_vue实战开发013:无缝轮播组件制作详解

今天继续下一个功能,那就是轮播图,在首页我们经常可以看到一个轮播展示区域,今天我们就来实现这个功能,这里我看了很多别人写轮播,基本都是用JavaScript或者别人封装好的组件来实现的轮播功能,因为vue没法像JavaScript那样通过offsetleft来获取当前元素的偏移位置,所以在写组件滑动的时候总是力不从心,最后还是用JavaScript写或者别人封装的组件来实现,其实vue还是可以实现无缝轮播功能的,下面是功能演示。

0e54757595ea583633f3d283790b70f3.gif

这里主要实现了以下几个功能:

1,页面载入时自动轮播

2,当鼠标放在图上时停止轮播,鼠标移出时继续轮播

3,点击左侧箭头时,图片向右滑到下一张,点击右侧箭头时,图片向左滑动到下一张

4,点击下面的横条,滑到对应的图片,相应横的样式也发生改变

5,无限滚动,即在滚动到最后一张时,再点击下一张时会继续向左滑动到第一张,而不是整个拉到第一张

8a3f97e901dd6289d5d7aa83785b7f22.png

这里说下无限轮播的原理 ,这里我们看到的轮播图只有3张,dan但是其实这里是有4张的,第4张和和第1张是内容相同的,目的jiu'shi就是为了让图更好从最后1张过渡到第1张来,当我们在第三章张点击的时候看到的其实是第4张图片,而这时后台悄悄的把id切换到了第1张图了,再次点击时就接上了第2张图继续轮播了。

e90943a84e4f76eae83ab177b4eab434.png

这里我们用的是vue来写的,所以轮播图肯定是用遍历来实现的,这时我们会发现缺少zui最后一个guo'过度的图了,这里我们的处理方案是直接在数据后面追加一条动态数据,值就是就是我们数据的第一条,这是我随意编的一些数据,因为html是通过数据遍历来的,所以我们要在DOM加载之前先对数据进行追加,所以我们需要在created执行该操作先。

9df72b02739458a115663fa3419a04b0.png

接下来我们开始创建布局和样式,这里的HTML还是比较简单的,这里我没有直接刚数据赋图片,因为我想尝试着再在里面套一层内容,所以这里我们目前用列表来展开的,ul里面包裹着的是我们的li标签,后面把数据定位到li标签中去,这样或许在其他地方我也开始把模板直接拿过来用,span标签是底部的横条,a标签则是左右两边的方向按钮。

406ce8e7aaaae94972e2d3093110546d.png

接下来我们给这些DOM元素进行样式排版,这里需要点耐心慢慢的去调整了,这里说个大概的逻辑,最外层的div用来做显示区域,所以多出来的地方用overflow: hidden;进行隐藏,ul中将所有的li进行横向排列,所以ul的宽度可以设为1000%,多出来的不用管,li则要浮动来实现让其并排在ul中,方便后续对ul进行移动操作。

6f4e75f688a789db0517d9a304148ddc.png

接下来就开始实现动态交互了,首先来先来实现通过左右箭头进行图片切换,在a标签绑定@click事件,然后在methods中写相应的方法,这里我的逻辑是定义一个变量mark并初始化为0,当我每次点击一次时mark自增一次,当mark与bannerList数据的长度len-1相同时将mark重置为0,跳回到第1张图,反过来也是一样的原理,当mark回到0时将其重置为len-1。

38efd5e915a4640938d7d0f43552d870.png

每次我们移动的距离可以用this.$refs.carul.style.marginLeft = -this.mark * this.liwidth + "px";但是如果直接这样定义的话那么我们看到的就是直接换图,这样不友好所以这里我封装了一个运动的函数,把这个移动距离进行多次移动,达到滑动的效果,这样看上去就是连动的效果

afb66959c9c065108511fa3799dec564.png

这样我们的左右箭头按钮切换实现了,接着我们实现自动切换图片,这里我们给个定时器,时间自己定,在定时器中引用next()方法,相当于自动点击了下一张图片按钮,再在created中创建一个调用这个定时器,让它在载入时就自动执行这样我们就实现了自动轮播效果了。

6206874e16e3b21b01eda46c3f394b47.png

接着我们给最外div添加移入移出事件,当我们将鼠标移入轮播图中时停止轮播,当我们将鼠标移出轮播图时轮播继续,这个功能实现起来很简单,只要当当我们将鼠标移入轮播图中时将定时器清除即可,当我们将鼠标移出轮播图时继续调用自动播放函数即可。

0d1dff6b05033040ec1bfe0ab39ccde9.png

最后还有一步就是点击下面的横条,滑到对应的图片,相应横的样式也发生改变,这里我在span中绑定了一个动态样式:class="{'active':idx===num}",active中给定了一个background: rgb(15, 151, 241) !important;,这样当我们的idx与num匹配是,相应的样式也会随着更改,而切图这里我绑定了一个点击事件@click="Choice(idx)",并传入了idx值,然后将idx赋给mark再调用next方法即可。

6224b24bbade0f51da5135dd5d44adbb.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter开发实战详解PDF》是一本介绍如何使用Flutter进行实际开发的书籍。Flutter是由谷歌开发的一款跨平台框架,可以用来开发iOS、Android、Web和桌面应用程序。这本书涵盖了从Flutter基础知识到高级开发技巧的各个方面。 《Flutter开发实战详解PDF》首先介绍了Flutter的基本概念和工具,帮助读者快速入门。接着,书详细讲解了Flutter的布局和UI组件,包括文本、按钮图片等常用控件的使用方法。读者可以通过学习这些内容,了解如何构建一个漂亮、流畅的用户界面。 在基础知识介绍之后,书通过实例介绍了如何进行网络请求、与后台进行数据交互。读者可以学习到如何使用Flutter的Http库来进行网络请求,并将获取到的数据展示在应用程序。此外,书还介绍了如何使用Flutter与数据库进行交互,以及如何处理用户输入和使用设备传感器。 《Flutter开发实战详解PDF》还提供了一些高级开发技巧和实践经验,例如如何进行状态管理、如何优化性能等。这些内容对于有一定Flutter开发经验的开发者来说尤为重要。 总的来说,这本书通过实例和案例的方式,详细讲解了Flutter开发实践。无论是初学者还是有一定经验的开发者,都可以从学到很多实用的技巧和知识。如果你想深入学习Flutter开发,这本书是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值