vue3 - swiper插件 实现PC端的 视频滑动功能(仿抖音短视频)
swiper官网
swiper属性/组件查询
vue中使用swiper
-
步骤:
① npm install swiper 安装
② 基础模板:
<div><swiper class="swiper-box" :direction="'vertical'":grabCursor="true" :mousewheel="true" :mousewheelControl="true" :resistanceRatio = "0":observeParents = "true":options="swiperOption"><!-- 幻灯片内容 --><swiper-slide class="slide-box" v-for="(item, index) in dataList" :key="index"><div><video class="video-box" ref="videos" controls autoplay :videoList="item" :src="item.url" :index="index" ></video></div><div class="info-bar-" >...</div><div class="video-box-right">...</div></swiper-slide></swiper> </div><script> import { Swiper, SwiperSlide } from 'swiper/vue'; import "swiper/swiper-bundle.css"; export default {name: 'VideoList',components: {Swiper,SwiperSlide,},data() {return {...}} } </script>
如图:


-
属性:
direction = " 'vertical' " ,滑动方向,vertical 垂直方向。(注:一定要两对引号包裹着,否则不生效,还要给swiper设置实高)
modules = "modules"
grabCursor="true",鼠标手掌形状,拖动时变抓手形状
slidesPerView = "1",slider容器能够同时显示的slides数量(carousel模式)
mousewheel = "true",鼠标滚轮控制Swiper切换
setWrapperSize="true",swiper使用flexbox布局,这个会在wrapper上 添加等于slides相加的宽和高
observeParents = "true",当Swiper 的祖先元素发生变化时,例如show/hide、第一级子元素增加/删除等,则更新Swiper 并触发 observerUpdate 事件
resistanceRatio: 0,抵抗率。边缘抵抗力的大小比例。值越小抵抗越大越难将slide拖离边缘,0时完全无法拖离。
navigation="true",导航栏
autoplay = "true",自动播放
loop = "true",无限循环播放
space-between,每张轮播图之间的距离,该属性不可以和margin属性同时使用。
pagination = "{ clickable: true }",分页器(是否点击圆点切换轮播)
注:在标签上格式为 :属性=”值“,如 :direction="vertical"
在 js 中格式为 属性:值 ,如 direction:verical
-
完整代码:
<script>
import { Swiper, SwiperSlide } from 'swiper/vue';
import "swiper/swiper-bundle.css";
export default {name: 'VideoList',components: {Swiper,SwiperSlide,},data() {return {page: 1,swiperOption: {on: {// tap方法 是swiper组件提供的点击方法tap: () => {this.playAction(this.page - 1)},// 上滑(屏幕向上滑时,跳到下一个视频)slideNextTransitionStart: () => {this.page += 1;this.nextVideo(this.page - 1)console.log(this.page);},// 下滑(屏幕向下滑时)slidePrevTransitionEnd: ()=> {if(this.page > 1){this.page -= 1;this.prevVideo(this.page - 1)console.log(this.page);}},}}}},methods: {playAction(index) { // 入参 是 当前屏幕显示的是第几个视频this.$refs.videos[index].playOrStop();},// 向下nextVideo(index){this.$refs.videos[index-1].stop()this.$refs.videos[index].play()},// 向上prevVideo(index){this.$refs.videos[index+1].stop()this.$refs.videos[index].play()},},setup(){}
}
</script><script setup>
import { ref } from 'vue';const dataList = [{id: "1",url:"http://s32p8v831.hd-bkt.clouddn.com/2023-09-23%2012.00.00_%23%E5%B4%A9%E5%9D%8F%E6%98%9F%E7%A9%B9%E9%93%81%E9%81%93__%23%E8%82%AF%E5%BE%B7%E5%9F%BA%E6%98%9F%E7%A9%B9%E9%93%81%E9%81%93__%23%E5%B8%AE%E5%B8%AE%E6%88%91%E8%82%AF%E5%BE%B7%E5%9F%BA%E7%88%B7%E7%88%B7___%E7%82%B8%E9%B8%A1_%E6%89%A7%E8%A1%8C__KI%E4%B8%8A%E6%A0%A1%E7%AB%9F%E7%84%B6%E4%B9%9F%E6%9C%89%E9%9A%90%E8%97%8F%E7%9A%84%E5%8A%9B%E9%87%8F___KI%E4%B8%8A%E6%A0%A1%E6%88%90%E5%8A%9F%E5%8F%91%E5%8A%A8%E8%82%AF%E5%BE%B7%E5%9F%BA%E7%BB%88%E7%BB%93%E6%8A%80_%E7%8E%B0%E5%9C%BA%E8%B6%85%E9%9C%87%E6%92%BC%E8%A7%86%E9%A2%91%E4%BC%A0%E5%9B%9E_%E4%B8%80%E8%B5%B7%E6%9D%A5%E7%9C%8B%E7%9C%8B%E5%B8%95__video-transcode..mp4",},{id: "2",url:"http://s32p8v831.hd-bkt.clouddn.com/2023-09-21%2021.00.08_%23%E8%82%AF%E5%BE%B7%E5%9F%BA%E7%87%83%E6%83%85%E4%BA%9A%E8%BF%90%E5%AD%A3_%E5%92%8C%E5%8F%AF%E7%88%B1%E7%9A%84%E5%90%89%E7%A5%A5%E7%89%A9_%E5%B0%8F%E6%9C%8B%E5%8F%8B%E4%BB%AC%E4%B8%80%E8%B5%B7%E8%B7%B3%E4%BA%9A%E8%BF%90%E5%8A%A0%E6%B2%B9%E6%93%8D_%E4%B8%BA%E4%BA%9A%E8%BF%90%E5%8A%A0%E6%B2%B9%E5%8A%A9%E5%A8%81__video-transcode..mp4",},
]</script>
<template><div class="swiper-wrapper"><swiper class="swiper-box" :direction="'vertical'":grabCursor="true" :mousewheel="true" :mousewheelControl="true" :resistanceRatio = "0":observeParents = "true":options="swiperOption"><!-- 幻灯片内容 --><swiper-slide class="slide-box" v-for="(item, index) in dataList" :key="index"><div><video class="video-box" controls ref="videos" :videoList="item" :src="item.url" :index="index" autoplay></video></div><div class="infobar_warp" ><InfoBar :info-data="item" /></div><div class="video-box-right"><LikeComponent :like-data="item"></LikeComponent></div></swiper-slide></swiper></div>
</template><style scoped lang="scss">
.swiper-wrapper {/* width: 100vw ; */height: calc(100vh - 100px);.swiper-box {width: 100%;.slide-box {.video-box {width: 100%;height: calc(100vh - 100px);}.video-box-right {position: absolute;right: 0;bottom: 30vh;top: 30vh;/* z-index: 80; */}.infobar_warp {position: absolute;bottom: 55px;left: 0;}}}
}
</style>
-
比较完整的swiper教程:
vue3中使用swiper7轮播图插件_swiper7实例_爱唱歌的前端的博客-CSDN博客
vue3中使用swiper完整版教程_swiper vue3-CSDN博客
如何在vue3中使用swiper插件(教程)_vue3 安装swiper-CSDN博客
滑动功能 实现参考文章:
vue实战 实现视频类webapp:(十二) 视频评论列表 - 小专栏vue项目中使用swiper(版本3.1.3)实现视频轮播_vue 视频轮播-CSDN博客
基于vue封装移动触摸滑动组件——简易的swiper_vue 滑动-CSDN博客
vue+swiper仿抖音视频滑动_swiper + video 短视频-CSDN博客 (多个播放按钮)
相关文章:
vue3 - swiper插件 实现PC端的 视频滑动功能(仿抖音短视频)
swiper官网 swiper属性/组件查询 vue中使用swiper 步骤: ① npm install swiper 安装 ② 基础模板: <div><swiper class"swiper-box" :direction"vertical":grabCursor"true" :mousewheel"tr…...
简述SVM
概述 SVM,即支持向量机(Support Vector Machine),是一种常见的监督学习算法,用于分类和回归问题。它是一种基于统计学习理论和结构风险最小化原则的机器学习方法。 SVM的主要思想是在特征空间中找到一个最优的超平面…...
【DevOps】Rundeck以及Jenkins
Rundeck是一个DevOps常用的工具,是PagerDuty公司开发的产品,能够很好的和PagerDuty进行集成。 但是平常我们听得或用得更多的是Jenkins,一个非常流行的CI工具,具有很好的可扩展性。 可是为什么那家公司会用Rundeck而不是Jenkins呢…...
数字滤波器分析---零极点分析
数字滤波器分析---零极点分析 zplane 函数绘制线性系统的极点和零点。 例如,在 -1/2 处为零且在 0.9e−j2π0.3 和 0.9ej2π0.3 处有一对复极点的简单滤波器为 zer -0.5; pol 0.9*exp(j*2*pi*[-0.3 0.3]); 要查看该滤波器的零极点图,您可以使用 z…...
HarmonyOS应用开发-网络请求与web组件
前言 当今世界,移动应用已经成为人们日常生活中不可或缺的一部分。无论是社交媒体、新闻、购物还是娱乐,安卓应用的广泛使用已经改变了我们与数字世界互动的方式。然而,这些应用的实际功能远不止界面和用户体验。它们背后的精密技术和网络请…...
频次最高的38道selenium面试题及答案
1、selenium的原理是什么? selenium的原理涉及到3个部分,分别是: 浏览器driver:一般我们都会下载driverclient:也就是我们写的代码 client其实并不知道浏览器是怎么工作的,但是driver知道,在…...
利用MSF设置代理
1、介绍: 通过MSF拿到一个机器的权限后,通过MSF搭建socks代理,然后通内网。 拿到目标权限,有很多方法,比如:①ms17-010 ②补丁漏洞 ③MSF生成后门 在此直接使用MSF生成后门 MSF中有三个代理模块&#x…...
模型剪枝算法——L1正则化BN层的γ因子
ICCV在2017年刊登了一篇经典论文《 Learning Efficient Convolutional Networks through Network Slimming》。在神经网络的卷积操作之后会得到多个特征图,通过策略突出重要的特征达到对网络瘦身的目的。在该论文中使用的剪枝策略就是稀疏化BN层中的缩放因子 。 Bat…...
11.9 知识总结(三板斧、全局配置文件、静态文件的配置、request对象等)
一、 三板斧的使用 三个方法: HttpResponse render redirect def index(request): print(request) # return HttpResponse("request") # 它返回的是字符串 # return render(request, index.html) # 加载HTML页面的 # return redirect(ht…...
CSS 外边距、填充、分组嵌套、尺寸
一、CSS 外边距: CSS margin(外边距)属性定义元素周期的空间。margin清除周围的(外边框)元素区域。margin没有背景颜色,是完全透明的。margin可以单独改变元素的上、下、左、右边距,也可以一次改…...
Exploration by random network distillation论文笔记
Exploration by Random Network Distillation (2018) 随机网络蒸馏探索 0、问题 这篇文章提出的随机网络蒸馏方法与Curiosity-driven Exploration by Self-supervised Prediction中提出的好奇心机制的区别? 猜想:本文是基于随机网络蒸馏提出的intrin…...
Ubuntu22.04配置Go环境
Ubuntu上配置Go环境biCentOS简单多了,有两种方案,一种直接使用apt进行安装,一种自己从官网下载安装包进行安装。 1、使用apt直接安装 更新apt安装包,常规操作 apt update 然后看看apt自带的Go版本是多少 apt list golang 是1…...
Zabbix深入解析与实战
1.Zabbix 1.1.监控概述 监控是指对行为、活动或其他变动中信息的一种持续性关注,通常是为了对人达成影响、管理、指导或保护的目的 监控 监视主机架构状态控制,事后追责目标:早发现早处理(故障、性能、架构) 网站扩容(用数据说话) 为什么要…...
怎么用电脑开发安卓app?能外包吗?
随着智能手机的普及,安卓应用程序的开发需求也越来越高,许多人都想开发自己的安卓应用程序,但苦于缺乏相关知识和技能,本文将介绍如何使用电脑开发安卓应用程序,以及是否可以将开发工作外包给专业的开发团队。 一、了…...
1-前端基本知识-HTML
1-前端基本知识-HTML 文章目录 1-前端基本知识-HTML总体概述什么是HTML?超文本标记语言 HTML基础结构文档声明根标签头部元素主体元素注释 HTML概念词汇:标签、属性、文本、元素HTML基本语法规则HTML常见标签标题标签段落标签换行标签列表标签超链接标签…...
磁盘的分区、格式化、检验与挂载 ---- fdisk,mkfs,mount
磁盘的分区、格式化、检验与挂载 磁盘管理是非常重要的,当我们想要再系统里面新增一块磁盘使用时,应执行如下几步: 对磁盘进行划分,以建立可用的硬盘分区 (fdisk / gdisk)对硬盘分区进行格式化࿰…...
Solr搜索参数详解
Solr 页面搜索 1.1 基本查询 参数意义q查询的关键字,此参数最为重要,例如,qid:1,默认为q:,fl指定返回哪些字段,用逗号或空格分隔,注意:字段区分大小写,例如,…...
Flink(三)【运行时架构】
前言 今天学习 Flink 的一些原理性的东西,比较偏概念,但是十分重要。有人觉得上来框框敲代码才能学到东西,那是狗屁不通的道理(虽然我以前也这么认为)。个人认为,学习 JavaEE那些框架,你上来就敲…...
conda添加清华镜像源
一、conda下载 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 显示所有channel conda config --show channels 二、添加清华镜像源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://…...
「Verilog学习笔记」求两个数的差值
专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 timescale 1ns/1ns module data_minus(input clk,input rst_n,input [7:0]a,input [7:0]b,output reg [8:0]c );always (posedge clk or negedge rst_n) begin if (~rst_…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...
消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...
