小说APP源码,手动滑动轮播图时,轮播图跟随移动
小说APP源码,手动滑动轮播图时,轮播图跟随移动实现的相关代码
html结构
1 | <br><template><br> <div @mouseleave = "enterFn" @mouseenter = "leaveFn" ><br> <ul><br> <li class = "carousel-item " : class = "{ fade: indexid === index }" v- for = "(item, index) in list" :key= "item.id" ><br> <RouterLink to= "/" ><br> <img :src= "item.imgUrl" alt= "" /><br> </RouterLink><br> </li><br> </ul><br> <a href= "javascript:;" class = "carousel-btn prev" @click = "lastPage" ><i class = "iconfont icon-angle-left" ></i></a><br> <a href= "javascript:;" class = "carousel-btn next" @click = "nextPage" ><i class = "iconfont icon-angle-right" ></i></a><br> <div><br> <span @click = "indexid = i - 1" v- for = "i in list.length" :key= "i" : class = "{ active: indexid === i - 1 }" ></span><br> </div><br> </div><br></template> |
js语法
1 | <br><script><br> import { ref, watch, onUnmounted } from 'vue' <br>export default {<br> name: 'Carousel' ,<br> props: {<br> // 图片数据<br> list: {<br> type: Object,<br> default: () => {}<br> },<br> // 轮播图每张切换的事件<br> duration: {<br> type: Number,<br> default: 2<br> },<br> // 是否开启轮播图<br> autoplay: {<br> type: Boolean,<br> default: true<br> },<br> // 点击翻几张<br> page: {<br> type: Number,<br> default: 1<br> }<br> },<br> setup(props) {<br> // 索引<br> const indexid = ref(0)<br> // 轮播<br> const timer = ref(null)<br> const TimeFn = () => {<br> clearInterval(timer)<br> // 每次执行前都清除上一次的定时器<br> timer.value = setInterval(() => {<br> indexid.value++<br> // 如果超出界限就重新回填<br> if (indexid.value > props.list.length - 1) {<br> indexid.value = 0<br> }<br> }, props.duration * 1000)<br> }<br> // 点击+下一站图片<br> const nextPage = () => {<br> indexid.value += props.page<br> if (indexid.value > props.list.length - 1) {<br> indexid.value = 0<br> }<br> }<br> // 点击+上一张图片<br> const lastPage = () => {<br> indexid.value -= props.page<br> if (indexid.value < 0) {<br> indexid.value = props.list.length - 1<br> }<br> }<br> // 清除定时器<br> const leaveFn = () => {<br> // console.log('清除定时器')<br> clearInterval(timer.value)<br> // console.log(timer)<br> }<br> // 组件消耗,清理定时器<br> onUnmounted(() => {<br> clearInterval(timer.value)<br> })<br> // 开启定时器<br> const enterFn = () => {<br> if (props.list.length > 1 && props.autoplay) {<br> // console.log('开启定时器')<br> TimeFn()<br> }<br> }<br> watch(<br> () => props.list,<br> () => {<br> if (props.list.length > 1 && props.autoplay) {<br> TimeFn()<br> }<br> }<br> )<br> return { indexid, leaveFn, enterFn, nextPage, lastPage }<br> }<br>}<br></script> |
css样式
1 | <br><style scoped><br>.xtx-carousel {<br> width: 100 %;<br> height: 100 %;<br> min-width: 300px;<br> min-height: 150px;<br> position: relative;<br> .carousel {<br> &-body {<br> width: 100 %;<br> height: 100 %;<br> }<br> &-item {<br> width: 100 %;<br> height: 100 %;<br> position: absolute;<br> left: 0 ;<br> top: 0 ;<br> opacity: 0 ;<br> transition: opacity 0 .5s linear;<br> &.fade {<br> opacity: 1 ;<br> z-index: 1 ;<br> }<br> img {<br> width: 100 %;<br> height: 100 %;<br> }<br> }<br> &-indicator {<br> position: absolute;<br> left: 0 ;<br> bottom: 20px;<br> z-index: 2 ;<br> width: 100 %;<br> text-align: center;<br> span {<br> display: inline-block;<br> width: 12px;<br> height: 12px;<br> background: rgba( 0 , 0 , 0 , 0.2 );<br> border-radius: 50 %;<br> cursor: pointer;<br> ~ span {<br> margin-left: 12px;<br> }<br> &.active {<br> background: #fff;<br> }<br> }<br> }<br> &-btn {<br> width: 44px;<br> height: 44px;<br> background: rgba( 0 , 0 , 0 , 0.2 );<br> color: #fff;<br> border-radius: 50 %;<br> position: absolute;<br> top: 228px;<br> z-index: 2 ;<br> text-align: center;<br> line-height: 44px;<br> opacity: 0 ;<br> transition: all 0 .5s;<br> &.prev {<br> left: 20px;<br> }<br> &.next {<br> right: 20px;<br> }<br> }<br> }<br> &:hover {<br> .carousel-btn {<br> opacity: 1 ;<br> }<br> }<br>}<br></style> |
以上就是小说APP源码,手动滑动轮播图时,轮播图跟随移动实现的相关代码, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现