Vue+Element-ui实例_使用flexslider插件设计横向时间线

article/2025/11/5 18:12:19

下面是做了一个类似时间线(history事件线)的页面,主要是记录一下log,或者history的操作记录。

主要难点:

(1)一般的插件时间线例如(elementUI中的el-timeline)就是纵向的时间线,如果数据过多的话,就会形成很长一段的下拉样式。

(2)最主要的就是CSS样式调节,(这个真的是头大)

(3)个人审美的不同,反正我做了好几个版本样式,每个人都有自己不同的喜好。

效果图如下:

下面是代码部分:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>首页</title><script src="vue/vue.min.js" type="text/javascript" charset="utf-8"></script><script src="vue/axios.min.js" type="text/javascript" charset="utf-8"></script><script src="elementUI/index.js" type="text/javascript" charset="utf-8"></script><script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script><script src="js/jquery_flexslider.js" type="text/javascript" charset="utf-8"></script><link rel="stylesheet" type="text/css" href="elementUI/index.css" /><link rel="stylesheet" type="text/css" href="css/index2.css" /></head><body><div class="firstShow" id="firstShow"><div class="statistics"><el-tag>提交:{{statisticsData.sumbit}} 条</el-tag><el-tag color="#c6f6f8" style="color:#30c0d6 ;">通过:{{statisticsData.pass}} 条</el-tag><el-tag type="success">成功:{{statisticsData.success}} 条</el-tag><el-tag color="#f5dbe9" style="color:#d66196 ;">拒绝:{{statisticsData.refuse}} 条</el-tag><el-tag color="#f5f2cb" style="color:#ff7f4c ;">失败:{{statisticsData.fail}} 条</el-tag><el-tag color="	#f5caca" style="color:#ff4343 ;">错误:{{statisticsData.error}} 条</el-tag><el-tag color="	#d3cae6" style="color:#7a64e6 ;">复核:{{statisticsData.recheck}} 条</el-tag><el-tag type="info">其他:{{statisticsData.recheck}} 条</el-tag></div><div class="about-history" id="fzlc"><div class="about-history-list wow zoomIn" data-wow-delay=".1s" style="visibility: visible; animation-delay: 0.1s; animation-name: zoomIn;"><div class="flex-viewport" style="overflow: hidden; position: relative;"><ul class="slides clearfix list" style="width: 2600%; transition-duration: 0s; transform: translate3d(0px, 0px, 0px);"><li style="width: 196px; float: left; display: block;" v-for="(activity, index) in activitiesData"><div class="item"><h3 :style="{'color':`${activity.backgroundColor}`}">{{activity.timestamp}}</h3><div class="desc"><p>{{ activity.name }}</p><p style="display:block;height: 42px;padding-top: 10px;">【{{ activity.content }}】</p></div></div></li></ul></div></div></div><div class="nodata" id="nodata" v-if="noData"><span class="noData">暂无记录<i class="el-icon-warning-outline"></i></span></div></div><script type="text/javascript">var vm = new Vue({el: '#firstShow',data() {return {noData: false, // 无数据显示与否 /* 操作记录数据 */timeLength: '',timeliWidth: '',index: 0,activitiesData: [],backgroundColor: '#e2e2e2',statisticsData: {sumbit: 0, //提交pass: 0, //通过success: 0, //成功refuse: 0, //拒绝fail: 0, //失败error: 0, //错误recheck: 0, //复核other: 0, //其他}};},methods: {/* 登录信息 */login() {let _this = this;axios.get('data/activitiesData.json').then(function(response) {// console.log(response.data);var code = '0';switch (code) {case '0':for (var i = 0; i < response.data.length; i++) {// 添加 单元格是否可以编辑的属性值if (response.data[i].name.indexOf('提交') != -1) {response.data[i].backgroundColor = '#409EFF';_this.statisticsData.sumbit += 1;} else if (response.data[i].name.indexOf('通过') != -1) {response.data[i].backgroundColor = '#30c0d6';_this.statisticsData.pass += 1;} else if (response.data[i].name.indexOf('成功') != -1) {response.data[i].backgroundColor = '#67C23A';_this.statisticsData.success += 1;} else if (response.data[i].name.indexOf('拒绝') != -1) {response.data[i].backgroundColor = '#d66196';_this.statisticsData.refuse += 1;} else if (response.data[i].name.indexOf('失败') != -1) {response.data[i].backgroundColor = '#ff7f4c';_this.statisticsData.fail += 1;} else if (response.data[i].name.indexOf('错误') != -1) {response.data[i].backgroundColor = '#ff4343';_this.statisticsData.error += 1;} else if (response.data[i].name.indexOf('复核') != -1) {response.data[i].backgroundColor = '#7a64e6';_this.statisticsData.recheck += 1;} else {response.data[i].backgroundColor = '#a0a3aa';_this.statisticsData.other += 1;}}vm.activitiesData = response.data;console.log(vm.activitiesData);break;case '99':// window.location.href = "../view/error?errorMsg=" + errorMsg;window.location.href = 'error.html?errorMsg=' + errorMsg;break;case '1':// window.location.href = "../view/tips?errorMsg=" + errorMsg;window.location.href = 'tips.html?errorMsg=' + errorMsg;break;case '2':break;default:break;}}).catch(function(error) {console.log(error);});},/* ------- 历史记录 -------*//* 初始加载 */startTime() {$('.about-history-list').flexslider({animation: 'slide',slideshow: false,controlNav: false,itemWidth: 196,itemMargin: 30,animationLoop: false,prevText: '<',nextText: '>',move: 3,start: function(slider) {console.log(slider);$('.flex-prev').attr('style', 'pointer-events: none;opacity: 0.2');},after: function(slider) {console.log(slider);if (slider.currentSlide == 0) {$('.flex-prev').attr('style', 'pointer-events: none;opacity: 0.2');} else if (slider.currentSlide + 1 == slider.pagingCount) {$('.flex-next').attr('style', 'pointer-events: none;opacity: 0.2');} else {$('.flex-prev').attr('style', 'pointer-events: black;opacity: 1');$('.flex-next').attr('style', 'pointer-events: black;opacity: 1');}},end: function(slider) {console.log(slider);$('.flex-next').attr('style', 'pointer-events: none;opacity: 0.2');}});},},updated() {this.startTime();},mounted() {this.login();}});</script></body>
</html>

css样式部分:

html,
body {width: 100%;height: 100%;padding: 0;margin: 0;
}/* 首页时间轴 */
.firstShow {width: 90%;height: 60%;padding: 5% 5%;
}.firstShow .statistics {width: 70%;height: 60px;line-height: 60px;margin-left: 24%;
}/* 无数据 */
.nodata {width: 100%;margin: 0 auto;padding-top: 20%;
}.nodata .noData {font-size: 64px;color: #a9a9a987;letter-spacing: 60px;display: block;text-align: center;line-height: 50%;
}/* about-history */
.about-history {height: 80%;padding: 64px 20px 0;
}.about-history-list {position: relative;
}.about-history-list .flex-viewport {padding: 0 50px;
}.about-history-list .flex-viewport:before {position: absolute;top: 50%;right: 0;left: 0;border-top: 1px solid #C7C7C7;content: '';
}.about-history-list .slides li {position: relative;width: 196px;height: 470px;margin-right: 28px;
}.about-history-list .slides li .item {position: absolute;right: -32px;bottom: 0;left: -32px;min-height: 152px;padding: 44px 0 0 0;background-color: #fff;border: 1px solid #e2e2e2;-webkit-transition: all .2s ease;-moz-transition: all .2s ease;-ms-transition: all .2s ease;-o-transition: all .2s ease;transition: all .2s ease;
}.about-history-list .slides li .item:hover:before {position: absolute;top: -49px;left: 50%;width: 20px;height: 20px;overflow: hidden;margin-left: -10px;-webkit-border-radius: 100%;-moz-border-radius: 100%;border-radius: 100%;background-color: rgba(0, 170, 255, 0.6);content: '';
}.about-history-list .slides li .item:before {position: absolute;top: -49px;left: 50%;width: 20px;height: 20px;overflow: hidden;margin-left: -10px;-webkit-border-radius: 100%;-moz-border-radius: 100%;border-radius: 100%;background-color: rgba(185, 185, 185, 0.6);content: '';
}.about-history-list .slides li .item:after {position: absolute;top: -45px;left: 50%;width: 12px;height: 12px;overflow: hidden;margin-left: -6px;-webkit-border-radius: 100%;-moz-border-radius: 100%;border-radius: 100%;background-color: #7a7a7a;content: '';
}.about-history-list .slides li .item:hover:after {position: absolute;top: -45px;left: 50%;width: 12px;height: 12px;overflow: hidden;margin-left: -6px;-webkit-border-radius: 100%;-moz-border-radius: 100%;border-radius: 100%;background-color: #0095df;content: '';
}.about-history-list .slides li:nth-child(even) .item {top: 0;bottom: auto;padding: 0 0 44px;
}.about-history-list .slides li:nth-child(even) .item:before {top: auto;bottom: -49px;
}.about-history-list .slides li:nth-child(even) .item:after {top: auto;bottom: -45px;
}.about-history-list .slides li .item:hover {background-color: #00aaff;border-color: transparent transparent #00aaff;
}.about-history-list .slides li .item h3 {position: absolute;top: 0;right: 0;left: 0;height: 44px;line-height: 44px;margin: 0;font-size: 20px;font-weight: 400;color: #000000;text-align: center;background-color: #e2e2e2;-webkit-transition: all .2s ease;-moz-transition: all .2s ease;-ms-transition: all .2s ease;-o-transition: all .2s ease;transition: all .2s ease;
}.about-history-list .slides li .item:hover h3 {color: #232323;background-color: #fff;
}.about-history-list .slides li .item:hover h3:before {position: absolute;bottom: 100%;left: 50%;margin-left: -9px;border-width: 0 9px 18px;border-style: solid;border-color: transparent transparent #00aaff;content: '';
}.about-history-list .slides li .item h3:before {position: absolute;bottom: 100%;left: 50%;margin-left: -9px;border-width: 0 9px 18px;border-style: solid;border-color: transparent transparent #E2E2E2;content: '';
}.about-history-list .slides li:nth-child(even) .item h3 {top: auto;bottom: 0;
}.about-history-list .slides li:nth-child(even) .item h3:before {top: 100%;bottom: auto;border-width: 18px 9px 0;border-color: #E2E2E2 transparent transparent;
}.about-history-list .slides li:nth-child(even) .item:hover h3:before {top: 100%;bottom: auto;border-width: 18px 9px 0;border-color: #00aaff transparent transparent;
}.about-history-list .slides li .item .desc {line-height: 24px;padding: 22px 26px 0;font-size: 18px;color: #000000;
}.about-history-list .slides li .item:hover .desc {color: #ffffff;
}.about-history-list .slides li .item .desc p {margin: 0;
}.flex-direction-nav {padding: 0;margin: 0;list-style: none;
}.flex-direction-nav a {position: absolute;top: 50%;width: 30px;height: 160px;line-height: 160px;overflow: hidden;margin-top: -80px;font-size: 50px;font-family: simsun;font-weight: bolder;color: #474747;text-align: center;
}.flex-direction-nav a.flex-prev {left: -48px;
}.flex-direction-nav a.flex-prev:hover {color: #00aaff;
}.flex-direction-nav a.flex-next {right: -48px;
}.flex-direction-nav a.flex-next:hover {color: #00aaff;
}a {color: #414141;text-decoration: none;-webkit-transition: all .2s ease;-moz-transition: all .2s ease;-ms-transition: all .2s ease;-o-transition: all .2s ease;transition: all .2s ease;
}a:hover {text-decoration: none;
}.pull-left {float: left;
}.pull-right {float: right;
}.pull-none {float: none;
}.clearfix:after {clear: both;display: block;visibility: hidden;height: 0;content: ".";font-size: 0;
}* html .clearfix {zoom: 1;
}*:first-child+html .clearfix {zoom: 1;
}.container {width: 980px;margin: 0 auto;
}img {max-width: 100%;
}img.full {display: block;width: 100%;
}.list {padding: 0;margin: 0;list-style: none;
}.hidden {display: none;
}.col-1 {float: left;width: 8.33333333%;
}.col-2 {float: left;width: 16.66666667%;
}.col-3 {float: left;width: 25%;
}.col-4 {float: left;width: 33.33333333%;
}.col-5 {float: left;width: 41.66666667%;
}.col-6 {float: left;width: 50%;
}.col-7 {float: left;width: 58.33333333%;
}.col-8 {float: left;width: 66.66666667%;
}.col-9 {float: left;width: 75%;
}.col-10 {float: left;width: 83.33333333%;
}.col-11 {float: left;width: 91.66666667%;
}.col-12 {float: left;width: 100%;
}.col-13 {float: left;width: 20%;
}.col-offset-3 {margin-left: 25%;
}.tb {display: table;width: 100%;height: 100%;
}.tbr {display: table-row;
}.tbc {display: table-cell;vertical-align: middle;
}

data模拟数据:

[{"content": "郭艾伦 (人事专员)","name": "徐忠硕提交了一个审批","timestamp": "2018-04-12 20:46","idea": "一朵小红花"},{"content": "赵继伟 (人事主管)","name": "通过","timestamp": "2018-04-03 20:46","type": "01"},{"content": "韩德君 (财务主管)","name": "拒绝","timestamp": "2018-04-03 20:46"},{"content": "贺天举 (董事长)","name": "失败","timestamp": "2018-04-03 20:46"},{"content": "郭艾伦 (人事专员)","name": "成功","timestamp": "2018-04-12 20:46","idea": "一朵小红花"},{"content": "赵继伟 (人事主管)","name": "错误","timestamp": "2018-04-03 20:46","type": "01"},{"content": "韩德君 (财务主管)","name": "复核2","timestamp": "2018-04-03 20:46"},{"content": "贺天举 (董事长)","name": "审批","timestamp": "2018-04-03 20:46"},{"content": "郭艾伦 (人事专员)","name": "提交","timestamp": "2018-04-12 20:46","idea": "一朵小红花"},{"content": "赵继伟 (人事主管)","name": "通过","timestamp": "2018-04-03 20:46","type": "01"},{"content": "韩德君 (财务主管)","name": "复核","timestamp": "2018-04-03 20:46"},{"content": "贺天举 (董事长)","name": "审批","timestamp": "2018-04-03 20:46"},{"content": "郭艾伦 (人事专员)","name": "提交","timestamp": "2018-04-12 20:46","idea": "一朵小红花"},{"content": "赵继伟 (人事主管)","name": "拒绝","timestamp": "2018-04-03 20:46","type": "01"},{"content": "韩德君 (财务主管)","name": "错误","timestamp": "2018-04-03 20:46"},{"content": "贺天举 (董事长)","name": "成功","timestamp": "2018-04-03 20:46"},{"content": "郭艾伦 (人事专员)","name": "提交","timestamp": "2018-04-12 20:46","idea": "一朵小红花"},{"content": "赵继伟 (人事主管)","name": "失败","timestamp": "2018-04-03 20:46","type": "01"},{"content": "韩德君 (财务主管)","name": "拒绝2","timestamp": "2018-04-03 20:46"},{"content": "贺天举 (董事长)","name": "审批","timestamp": "2018-04-03 20:46"},{"content": "郭艾伦 (人事专员)","name": "提交","timestamp": "2018-04-12 20:46","idea": "一朵小红花"},{"content": "赵继伟 (人事主管)","name": "通过","timestamp": "2018-04-03 20:46","type": "01"},{"content": "韩德君 (财务主管)","name": "复核","timestamp": "2018-04-03 20:46"},{"content": "贺天举 (董事长)","name": "审批","timestamp": "2018-04-03 20:46"},{"content": "郭艾伦 (人事专员)","name": "提交","timestamp": "2018-04-12 20:46","idea": "一朵小红花"},{"content": "赵继伟 (人事主管)","name": "通过","timestamp": "2018-04-03 20:46","type": "01"},{"content": "韩德君 (财务主管)","name": "复核","timestamp": "2018-04-03 20:46"},{"content": "xzs","name": "审批","timestamp": "2018-04-03 20:46"}]

下面主要讲解一下我认为比较重点的内容:

flexslider.js插件没什么好说的,在网上有很多的案例和参数,我要说的是以下几点:

(1)如何动态绑定样式?

<h3 :style="{'color':`${activity.backgroundColor}`}">
     {{activity.timestamp}}
</h3>

这段代码想必大家都已经看到了,这是vue中,动态绑定标签样式的方式,要使用 “ ` ”  “$” 符号将数据内容包裹起来。这样就等达到动态绑定css样式的效果了。

(2)如何在开始页和结束页不能点击上一页按钮和下一页按钮?

start: function(slider) {
             console.log(slider);
             $('.flex-prev').attr('style', 'pointer-events: none;opacity: 0.2');
 },
after: function(slider) {
            console.log(slider);
           if (slider.currentSlide == 0) {
                    $('.flex-prev').attr('style', 'pointer-events: none;opacity: 0.2');
            } else if (slider.currentSlide + 1 == slider.pagingCount) {
                    $('.flex-next').attr('style', 'pointer-events: none;opacity: 0.2');
            } else {
                     $('.flex-prev').attr('style', 'pointer-events: black;opacity: 1');
                     $('.flex-next').attr('style', 'pointer-events: black;opacity: 1');
            }
},
 end: function(slider) {
             console.log(slider);
             $('.flex-next').attr('style', 'pointer-events: none;opacity: 0.2');
 }

在flexslider中,有start,end,after等函数参数,然后获取内部的className,设定样式。

下面是flexslider函数中常用的方法:

slider.count

值,滚动项目总数

slider.currentSlide

值,当前页

slider.flexAnimate(n)

方法,滚动到某页

slider.pagingCount

值,页数

slider.pause()

方法,暂停

slider.play()

方法,播放

 好了,这次文章就写到这里啦,若内容、代码有不妥的地方,望斧正!谢谢。


http://chatgpt.dhexx.cn/article/qvd9fwu8.shtml

相关文章

flexSlider 图片轮播插件的使用(附参数设置)

前提&#xff1a;下载插件&#xff08;官网下载地址&#xff1a;http://flexslider.woothemes.com/ 请用IE打开&#xff0c;chrome可能打不开&#xff1b;其他下载地址&#xff1a;点击打开链接&#xff09;&#xff0c;并引入flexslider.css和jquery.flexslider-min.js文件(缺…

flex

水平垂直居中也算是 CSS 领域最为常见的一个问题了&#xff0c;不同场景下的方法也各不相同&#xff0c;各有优劣。嗯&#xff0c;下面这种应该算是最便捷的了&#xff1a; <div class"g-container"><div class"g-box"></div> </div…

轮播插件——flexslider

轮播插件——flexslider, 首先&#xff0c;当我们需要轮播插件的时候呢&#xff0c;去浏览器中找自己需要的轮播插件&#xff0c;比如&#xff0c;搜索关键词“JQuery轮播插件”&#xff0c;就会出来很多网站&#xff0c;选一个点进去&#xff0c;预览效果&#xff0c;然后下载…

重现Struts1的操纵classLoader漏洞

注&#xff1a;本文仅限技术研究&#xff0c;探讨&#xff0c;测试使用. 2014年4月29日爆出的struts的可操纵classLoader的漏洞&#xff0c; 横跨struts1和struts2的所有版本。 影响面和问题的严重性几乎可以和heartbleed相媲美。 struts2要严重一些&#xff0c;对于struts1&am…

Struts1、Struts2、Hibernate、Spring框架工作原理介绍

Struts1工作原理 Struts1工作原理图 1 、初始化&#xff1a; struts 框架的总控制器 ActionServlet 是一个 Servlet &#xff0c;它在 web.xml 中配置成自动启动的 Servlet &#xff0c;在启动时总控制器会读取配置文件 (struts-config.xml) 的配置信息&#xff…

Struts1 和 Struts2

关于Struts2的出现缘由和好处就不多说啦&#xff0c;看了几篇总结的不错的文章&#xff0c;整理下贴出来&#xff0c;共同学习了。 Action的区别 对于有着丰富的Struts1.x开发经验的朋友来说&#xff0c;都十分的清楚Action是整个Struts框架的核心内容&#xff0c;当然Struts2也…

Struts1的工作流程

Struts1的工作流程图如下所示&#xff1a; 其工作流程如下&#xff1a; 当Web服务器启动的时候&#xff0c;根据web.xml文件加载并初始化ActionServlet&#xff0c;根据配置ActionServlet的config参数信息&#xff0c;确定struts-config.xml配置文件存放的位置&#xff0c;并根…

struts2讲解

Struts2部分 1. JavaEE软件三层结构和MVC的区别&#xff1f; JavaEE软件三层机构是由sun公司提供JavaEE开发规范的&#xff1a;Web层(表现层)、业务逻辑层、数据持久层。【其中WEB层会使用前端控制器模式】 MVC是一种思想&#xff0c;是一种模式&#xff0c;将软件分为 Model…

Struts1和Struts2对比

最近学习了Struts1和Struts2.很多人、很多资料都提到。Struts2不是从Struts1发展而来的。Struts2的前身是WebWork。那它俩到底有多大的不同呢&#xff0c;看了一些资料&#xff0c;下边就来比较比较。 一、架构分析 Struts1的架构图&#xff1a; 执行流程&#xff1a; 1.…

Struts1.x使用入门

Struts1框架是apache公司的开源子项目&#xff0c;是基于mvc逻辑分层的web层框架实现。是出现最早的web层框架&#xff0c;应用最广发。Struts1框架重点关注的是控制层&#xff0c;对于视图层只是提供了大量的标签&#xff1b;对于model层的影响微乎其微。 本文也是本人初学st…

Struts1的路径映射详解

首先介绍下struts1种xml配置的相关概念&#xff1a; • Action 的path: ActionServlet 根据该属性来转发用户的请求&#xff0c;即将用户请求转发与之同名的Action 。同名的意思是:将请求的.do 后缀去掉&#xff0c;匹配Action 的path属性值。 • Action 的name: 此处的name 属…

Struts1框架轻易入门,经典示例

Struts1框架轻易入门&#xff0c;经典示例 版权申明&#xff1a;此文为作者原创&#xff0c;未经允许&#xff0c;请勿转载&#xff01; Struts工作原理及流程登录验证示例 Struts1 工作原理及流程 这是本人整理的一点材料&#xff0c;原理图为纯手工绘制&#xff0c;不喜勿喷&…

struts1框架基本(笔记)

在阿帕奇官网下载合适的struts1框架文件。 应用在显示层框架。 struts1与struts2虽然是一脉相承&#xff0c;但它们用法完全不一样。 struts2是在struts1与webwork基础上&#xff0c;发展的全新框架。 注&#xff1a;本文是在MyEclipse下进行的操作&#xff0c;不是之前的E…

Struts1介绍

struts&#xff1a;[strʌts]支柱; 撑杆; 支杆; 支撑; 趾高气扬的步态; 高视阔步的样子; 引入struts Model1结构如图1所示&#xff1a; Model1是一个以JSP文件为中心的模式&#xff0c;在这种模式中JSP页面不仅负责表现逻辑&#xff0c;也负责控制逻辑。专业书籍上称之为逻辑…

入门Struts1第一讲——Struts1入门就这么简单

现在终于进入框架的学习中了&#xff0c;后面还有好几个框架等待着我们呢&#xff01;我们先来学习Struts1框架&#xff0c;然后再过渡到Struts2框架的学习中。下面我们开始学习Struts1框架之旅。 Struts1简介 Struts1是Apache开发的一个web层的框架&#xff0c;它主要用于简…

连接微软云的几种方式

1&#xff0c;通过管理portal连接微软云 需要使用liveId 2&#xff0c;通过visual web developer 直接更新 需要.cer(509)证书 3.通过远程登录管理 需要XXXXX-Staging-WebRole1_IN_0.rdp文件 PowerShell 需要管理证书

使用微软的OneDrive给别人分享大文件,非常方便

假设我想把这个40多MB的文件分享给一位同事&#xff1a; 在右键菜单里选share&#xff1a; 指定我要分享给谁&#xff1f; 假设我分享给这位姓丁的同事&#xff0c;OK了&#xff1a; 要获取更多Jerry的原创文章&#xff0c;请关注公众号"汪子熙":

谷歌云盘文件快速下载方法

最近看的论文附带的数据集在谷歌云盘里&#xff0c;每个文件都有十个G左右的大小&#xff0c;而直接从谷歌云盘下载速度过慢而且有可能中断&#xff0c;而multcloud是一个非常好的多云盘管理软件。他可以通过国内网直接登录操作&#xff0c;我们可以通过multcloud将谷歌云盘的文…

Win10安装OneDrive(微软云盘)后无法打开

https://jingyan.baidu.com/article/ce4366496a3ae73773afd3f8.html 这里为Win10系统正常下载OneDrive安装包安装成功后&#xff0c;打开或闪退或没反应的情况 工具/原料 OneDrive&#xff08;微软网盘&#xff09; Win10系统 方法/步骤 按住键盘上的Win&#xff08;就是左下…

开源网盘系统推荐 - 开源云盘 - 安装及开发教程

开源网盘系统推荐 - 开源云盘 - 安装及开发教程 云盘界面 介绍 本开源云盘致力于打造成一个优雅&#xff0c;好用&#xff0c;高效&#xff0c;克制的开源云盘。 在线体验 (账号demo/123456) 软件架构 本开源云盘采用前后端分离的模式开发。后端使用Golang语言&#xff0c;前…