当前位置: 首页 > news >正文

封装轮播图 (因为基于微博小程序,语法可能有些出入,如需使用需改标签)

这是在组件中使用,基于微博语法

<template><wbx-view class="" style="width: 100vw;height: 70vh;"><WBXswiper @change="gaibian" :vertical="false" :current="current" indicatorActiveColor="#fff" indicatorColor="#c0c0c0" :items="items"   style="width: 375px;height: 200px;border-radius: 20px;"><template slot="swiperItem" slot-scope="scope"><wbx-image :src="scope.item.src" mode="aspectFill" style="width:375px; height: 200px;" /></template></WBXswiper><!-- //测试点击切换轮播 --><wbx-view  style="margin-bottom: 30px;"><web-view style="width: 30px;height: 30px;border: 1px solid red;" @click="add(0)"><view-text>0</view-text></web-view><web-view style="width: 30px;height: 30px;border: 1px solid red;" @click="add(1)"><view-text>1</view-text></web-view><web-view style="width: 30px;height: 30px;border: 1px solid red;" @click="add(2)"><view-text>2</view-text></web-view></wbx-view></wbx-view>
</template><script>
/*** @type WBXAppOption*/
import WBXswiper from "../../commpents/WBXswiper/index.vue";
const pageOptions = {data() {return {items: [{ src: 'res/1.jpg',txt:222222},{ src: 'res/1.jpg',txt:222222},{ src: 'res/1.jpg',txt:222222},],current:0}},computed:{},methods: {gaibian(e){console.log(e,'change')},add(index){console.log(this.current)this.current=index}},components: {WBXswiper,},wbox: {onLoad() { },onShow() {// 页面显示/切入前台时触发},onHide() {// 页面隐藏时触发},onUnload() {// 页面退出时触发},},mounted() { },
};
export default pageOptions;
</script><style></style>

自己封装的swiper组件内部

<template><wbx-viewref="objStyle":style="wrapperStyle"@touchstart="onTouchStart"@touchmove="onTouchMove"@touchend="onTouchEnd"><wbx-viewclass="carousel-wrapper":style="carouselStyle"@transitionend="onTransitionEnd"ref="carouselWrapper"><wbx-view :style="itemStyle"><slot name="swiperItem" :item="items[items.length - 1]"></slot></wbx-view><wbx-view v-for="(item, index) in items" :key="index" :style="itemStyle"><slot name="swiperItem" :item="item"></slot></wbx-view><wbx-view :style="itemStyle"><slot name="swiperItem" :item="items[0]"></slot></wbx-view></wbx-view><wbx-view v-if="indicatorDots" :style="{ width: containerWidth + 'px' }" style="position: absolute; bottom: 10px; display: flex; flex-direction: row; justify-content: center;"><wbx-viewv-for="(item, index) in items":key="index":style="{ backgroundColor: index === realIndex ? indicatorActiveColor : indicatorColor }"style="width: 10px; height: 10px; margin: 0 5px; cursor: pointer; border-radius: 10px;"@click~stop="setCurrentIndex(index)"></wbx-view></wbx-view></wbx-view></template><script>export default {/*items                 数据autoPlay              是否自动播放interval              自动播放间隔时间indicatorDots         是否显示指示点indicatorColor        指示点颜色indicatorActiveColor  当前选中的指示点颜色current               当前所在滑块的indexvertical              滑动方向是否为纵向@change               轮播图改变时会触发 change 事件,返回当前索引值*/props: {items: {type: Array,required: true},autoPlay: {type: Boolean,default: false},interval: {type: Number,default: 3000},indicatorDots: {type: Boolean,default: true},indicatorColor: {type: String,default: '#c0c0c0'},indicatorActiveColor: {type: String,default: '#fff'},current: {type: String,default: ''},vertical: {type: Boolean,default: false}},data() {return {currentIndex: 1,timer: null,startX: 0,startY: 0,offset: 0,isTransitioning: false,containerWidth: 0,containerHeight: 0};},watch: {current(newVal) {this.setCurrentIndex(newVal);}},computed: {wrapperStyle() {return {backgroundColor: "rebeccapurple",position: "relative",width: `${this.wrapperWidth}px`,height: `${this.wrapperHeight}px`,};},carouselStyle() {const baseTranslateValue = -this.currentIndex * (this.vertical ? this.containerHeight : this.containerWidth);const translateValue = baseTranslateValue + this.offset;console.log(this.offset,baseTranslateValue,translateValue,"999999")return {display: 'flex',flexDirection: this.vertical ? 'column' : 'row',transform: this.vertical ? `translateY(${translateValue}px)` : `translateX(${translateValue}px)`,transition: this.isTransitioning ? 'transform 0.3s ease-out' : 'none',width: !this.vertical ? `${this.wrapperWidth}px` : `${this.containerWidth}px`,height: this.vertical ? `${this.wrapperHeight}px` : `${this.containerWidth}px`};},wrapperWidth() {return this.containerWidth * (this.items.length + 2);},wrapperHeight() {return this.containerHeight * (this.items.length + 2);},itemStyle() {return {width: !this.vertical ? `${this.containerWidth}px` : `${this.containerWidth}px`,height: this.vertical ? `${this.containerHeight}px` : `${this.containerWidth}px`,flexShrink: 0};},realIndex() {return (this.currentIndex - 1 + this.items.length) % this.items.length;}},mounted() {this.updateDimensions();this.$nextTick(() => {if (this.autoPlay) {this.startAutoPlay();}});},beforeDestroy() {this.stopAutoPlay();},methods: {updateDimensions() {if (this.$refs.objStyle) {const objStyle =  this.$refs.objStyle.styleObjectthis.containerWidth = parseFloat(objStyle.width);this.containerHeight = parseFloat(objStyle.height);}},startAutoPlay() {this.timer = setInterval(() => {this.next();}, this.interval);},stopAutoPlay() {if (this.timer) {clearInterval(this.timer);this.timer = null;}},next() {this.offset = 0;this.isTransitioning = true;this.currentIndex += 1;this.$emit('change', { current: this.currentIndex });},prev() {this.offset = 0;this.isTransitioning = true;this.currentIndex -= 1;this.$emit('change', { current: this.currentIndex });},setCurrentIndex(index) {this.stopAutoPlay();this.isTransitioning = true;this.currentIndex = index + 1;if (this.autoPlay) {this.startAutoPlay();}},onTouchStart(e) {this.startX = e.touches[0].clientX;this.startY = e.touches[0].clientY;this.offset = 0;this.stopAutoPlay();},onTouchMove(e) {const moveX = e.touches[0].clientX;const moveY = e.touches[0].clientY;this.offset = this.vertical ? moveY - this.startY : moveX - this.startX;},onTouchEnd() {this.isTransitioning = true;if (Math.abs(this.offset) > (this.vertical ? this.containerHeight : this.containerWidth) /6) {if (this.offset > 0) {this.prev();} else {this.next();}} else {this.offset = 0;}if (this.autoPlay) {this.startAutoPlay();}},onTransitionEnd() {this.isTransitioning = false;this.offset = 0;if (this.currentIndex === this.items.length + 1) {this.currentIndex = 1;}if (this.currentIndex === 0) {this.currentIndex = this.items.length;}}}};</script><style></style>

相关文章:

封装轮播图 (因为基于微博小程序,语法可能有些出入,如需使用需改标签)

这是在组件中使用&#xff0c;基于微博语法 <template><wbx-view class"" style"width: 100vw;height: 70vh;"><WBXswiper change"gaibian" :vertical"false" :current"current" indicatorActiveColor"…...

【Ubuntu】minicom安装、配置、使用以及退出

目录 1 安装 2 配置 3 使用 4 退出 minicom是一个串口通信的工具&#xff0c;以root权限登录系统&#xff0c;可用来与串口设备通信。 1 安装 sudo apt-get install minicom 2 配置 使用如下命令进入配置界面&#xff1a; sudo minicon -s 进入配置界面后&#xff0c;…...

MYSQL的监控

1. MySQL服务器都提供了哪几种类型的日志文件&#xff1f;说明每种日志的用途。 Error log&#xff1a;启动、关闭和异常有关的诊断信息 General query log:服务器从客户端收到的所有语句 Slow query log:需要很长时间执行的查询 Audit log:企业版基于策略的审计 Binary…...

CTF ciscn_2019_web_northern_china_day1_web2

ciscn_2019_web_northern_china_day1_web2 BEGIN 拿到题目&#xff0c;先看看 这里发现一个很像提示的东西&#xff0c;然后发现下面是一堆小电视商品&#xff0c;有lv等级和金钱&#xff0c;所以这题的入口可能就是再lv6和这个资金募集上 然后点击下next&#xff0c;看看页…...

linux中vim编辑器的应用实例

前言 Linux有大量的配置文件&#xff0c;其中编辑一些配置文件&#xff0c;最常用的工具就是 Vim &#xff0c;本文介绍一个实际应用的Vim编辑器开发文档的实例。 Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器&#xff0c;在Vi的基础上改进和增加了很多特性。…...

智慧城市交通管理中的云端多车调度与控制

城市交通管理中的云端多车调度与控制 智慧城市是 21世纪的城市基本发展方向&#xff0c;为了实现智慧城市建设的目标&#xff0c;人们需要用现代化的手段去管理和控制城市中的各种资源和设施。智能交通控制与管理是智慧城市中不可缺少的一部分&#xff0c;因为现代城市交通系统…...

分治(归并排序)

一、基本思路 我们以一个归并排序为例。 . - 力扣&#xff08;LeetCode&#xff09; 归并排序的思想&#xff1a;得到两个有序数组&#xff0c;把两个有序数组合并&#xff0c;传到下一层递归&#xff0c;一直得到两个有序数组&#xff0c;一直合并&#xff0c;最后就能得到有…...

小学生为什么要学英语

小学生需要学习英语的原因有很多&#xff0c;以下是其中的一些原因&#xff08;毕竟我也会累滴(*&#xffe3;▽&#xffe3;*)&#xff09;&#xff1a; 1. 全球化交流&#xff1a;英语是国际交流的通用语言&#xff0c;学习英语可以帮助小学生更好地融入全球化的社会环境&am…...

企业云存储如何收费?企业云存储收费标准

企业云存储如何收费&#xff1f;企业云存储的收费方式因不同的服务提供商和具体的服务选项而异&#xff0c;通常从用户数量、存储容量、功能、混合收费、按需定价、定制化、功能模块等多个方面进行考量。以下是对其多方面收费方式的详细介绍&#xff1a; 1.按用户数量收费 适用…...

一步步教你LangGraph Studio:可视化调试基于LangGraph构建的AI智能体

之前我们在第一时间介绍过使用LangChain的LangGraph开发复杂的RAG或者Agent应用&#xff0c;随着版本的迭代&#xff0c;LangGraph已经成为可以独立于LangChain核心&#xff0c;用于开发多步骤、面向复杂任务、支持循环的AI智能体的强大框架。 近期LangGraph推出了一个使得复杂…...

用SpringBoot打造先进的学科竞赛管理系统

1绪 论 1.1研究背景 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理&#xff0c;这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制&#xff0c;不仅提高了工作效率&#xff0c;而且大大的提高了其…...

Linux入门攻坚——34、nsswitch、pam、rsyslog和loganalyzer前端展示工具

nsswitch&#xff1a;network service switch 名称解析&#xff1a;name <---> id 认证服务&#xff1a;用户名、密码验证或token验证等 名称解析和认证服务都涉及查找位置&#xff0c;即保存在哪里。如linux认证&#xff0c;passwd、shadow&#xff0c;是在文件中&…...

如何在Excel中快速找出前 N 名,后 N 名

有如下销售额统计表&#xff1a; 找出销售额排前 10 名的产品及其销售额&#xff0c;和销售额排倒数 10 名以内的产品及其销售额&#xff0c;结果如下所示&#xff1a; 前 10 名&#xff1a; spl("E(?1).sort(ProductSales:-1).to(10)",A1:C78)后 10 名&#xff1…...

创意实现!在uni-app小程序商品详情页轮播中嵌入视频播放功能

背景介绍 通过uni-app框架实现商城小程序商品详情页的视频与图片轮播功能&#xff0c;以提升用户体验和增加商品吸引力。通过展示商品视频和图片&#xff0c;用户可以更全面地了解商品细节&#xff0c;从而提高购买决策的便利性和满意度。这种功能适用于各类商品&#xff0c;如…...

WAF,全称Web Application Firewall,好用WAF推荐

WAF&#xff0c;全称Web Application Firewall&#xff0c;即Web应用防火墙&#xff0c;是一种网络安全设备&#xff0c;旨在保护Web应用程序免受各种Web攻击&#xff0c;如SQL注入、跨站脚本&#xff08;XSS&#xff09;、跨站请求伪造&#xff08;CSRF&#xff09;等。 WAF通…...

docker中搭建nacos并将springboot项目的配置文件转移到nacos中

前言 网上搜索docker中搭建nacos发现文章不是很好理解&#xff0c;正好最近在搭建nacos练手。记录一下整个搭建过程。文章最后附上了一些过程中遇到的问题&#xff0c;大家可以按需要查看。 docker中搭建nacos并将springboot项目的配置文件转移到nacos中 前言1 docker中下拉na…...

概率论原理

智慧挺不喜欢我&#xff0c;他告诉我需要有耐心&#xff0c;答案在后面&#xff1b;而我总想马上得到答案&#xff1b;但它也会给我奖励&#xff0c;因为我总会自己去寻找答案 B站 大大的小番茄 普林斯顿微积分 PDF 一化儿 BILIBILI 泰勒展开式 知乎https://www.zhihu.com…...

MYSQL的安装和升级

MySQL的RPM安装通常分为不同的包&#xff0c;包括Server、Common、Client、Devel、Libs、Libs-compat、Test、Source&#xff0c;请写出上述每个包的功能。 Server&#xff1a;包含MySQL服务器的核心文件和服务。安装此包后可以运行MySQL数据库服务器。 Common&#xff1a;包…...

深入解析 RISC-V 递归函数的栈使用:以阶乘函数为例

在处理递归函数时&#xff0c;RISC-V 体系架构的寄存器数量有限。为了确保每次递归调用能正确保存和恢复寄存器的状态&#xff0c;栈&#xff08;stack&#xff09;提供了灵活的解决方案。本文将结合具体的汇编代码和递归的阶乘函数 fact 来讲解 RISC-V 中如何利用栈进行寄存器…...

【保研纪念】计算机保研经验贴——南大cs、复旦cs、中南cs

文章目录 一、个人情况二、经验总结三、夏令营情况1、南京大学计算机学院&#xff08;5月31日-6月2日&#xff09;2、复旦大学计算机学院&#xff08;7月1日-7月4日&#xff09;3、中南大学计算机学院&#xff08;7月5日-7月7日&#xff09;4、武汉大学计算机学院 四、预推免情…...

时间计算与单位转换的核心技巧与应用场景

1. 时间计算与单位转换的核心价值每天早上8:15的闹钟响起时&#xff0c;你有没有想过这个时间点在不同时区对应的当地时间&#xff1f;或者当项目进度表上写着"工期3.5周"时&#xff0c;能否快速换算成精确的小时数&#xff1f;时间计算与单位转换就像程序员手中的瑞…...

ClawLodge:OpenClaw智能体配置共享中心,加速AI Agent开发与部署

1. 项目概述&#xff1a;ClawLodge&#xff0c;一个为OpenClaw而生的配置共享中心 如果你正在使用OpenClaw&#xff0c;或者对构建基于大语言模型的智能体&#xff08;AI Agent&#xff09;感兴趣&#xff0c;那你大概率遇到过这样的困境&#xff1a;面对一个功能强大但配置自由…...

3步解锁闲鱼数据自动化:告别手动搜索的智能采集方案

3步解锁闲鱼数据自动化&#xff1a;告别手动搜索的智能采集方案 【免费下载链接】xianyu_spider 闲鱼APP数据爬虫&#xff08;废弃项目&#xff09; 项目地址: https://gitcode.com/gh_mirrors/xia/xianyu_spider 还在为收集闲鱼商品信息而烦恼吗&#xff1f;面对海量的…...

数字视频技术核心突破与智能应用实践

1. 数字视频技术的核心突破与应用场景数字视频技术正在经历从"记录媒介"到"智能交互界面"的质变。传统视频系统仅关注像素数量和压缩效率&#xff0c;而现代技术通过三大核心突破重构了行业格局&#xff1a;实时对象识别架构&#xff1a;基于卷积神经网络(…...

Adafruit Metro RP2350开发板解析与嵌入式开发实践

1. Adafruit Metro RP2350开发板深度解析作为一名长期从事嵌入式开发的工程师&#xff0c;当我第一次看到Adafruit Metro RP2350开发板时&#xff0c;立刻意识到这是一款在兼容性和性能之间取得巧妙平衡的产品。这款开发板最大的亮点在于它采用了Raspberry Pi最新推出的RP2350 …...

AI应用开发工作空间:从架构设计到工程实践的全栈解决方案

1. 项目概述&#xff1a;一个为AI协同工作流打造的“数字工坊”最近在折腾AI应用开发的朋友&#xff0c;可能都遇到过类似的困境&#xff1a;想法很多&#xff0c;但真要把一个AI驱动的功能或产品从原型落地到可用状态&#xff0c;过程却异常繁琐。你需要处理模型调用、数据流转…...

OpenClaw Hub:统一AI网关与智能调度,降低90%大模型调用成本

1. 项目概述&#xff1a;一个能帮你省下90% AI调用成本的智能调度中心如果你正在同时使用多个大语言模型&#xff08;LLM&#xff09;&#xff0c;比如 OpenAI 的 GPT-4、Anthropic 的 Claude&#xff0c;或者本地部署的 Ollama&#xff0c;那你一定遇到过这些头疼事&#xff1…...

农田边缘计算+云端协同:Python实现毫秒级多源时序数据融合(含TensorFlow Lite部署实录)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;农田边缘计算云端协同的农业物联网数据融合概述 在智慧农业演进过程中&#xff0c;农田边缘计算与云端协同正成为解决实时性、带宽约束与全局决策矛盾的关键范式。边缘设备&#xff08;如土壤传感器、无…...

在 Node.js 服务中集成 Taotoken 实现稳定的大模型异步调用

在 Node.js 服务中集成 Taotoken 实现稳定的大模型异步调用 1. 场景需求与方案选择 现代 Node.js 后端服务常需集成大模型能力处理用户请求&#xff0c;但直接对接单一供应商可能面临模型选择局限与 API 不稳定风险。通过 Taotoken 平台统一接入多模型&#xff0c;开发者可灵…...

搞懂AUTOSAR时间同步:从StbM的Time Base Status四个状态位说起

深入解析AUTOSAR时间同步&#xff1a;StbM模块Time Base Status状态位实战指南 在车载电子系统开发中&#xff0c;时间同步的精确性和可靠性直接影响着车辆功能安全与性能表现。作为AUTOSAR架构中时间同步的核心管理者&#xff0c;StbM模块通过其Time Base Status状态字节为开发…...