文件列表
-
-
+
+
+
+
+
@@ -44,6 +47,20 @@
+
+
@@ -108,7 +125,10 @@ export default {
waiting: '等待中'
},
panelShow: false, // 选择文件后,展示上传panel
- collapse: false
+ collapse: false,
+ isShrink: false,
+ process: 50,
+ filePanel: {}
}
},
computed: {
@@ -326,6 +346,41 @@ export default {
this.collapse = false
}
},
+ // 展开球
+ expand() {
+ this.isShrink = false
+ this.filePanel = {
+ 'width': '720px',
+ 'height': '300px',
+ }
+ },
+ // 收缩成球
+ shrink(){
+ const that = this
+ setTimeout(function () {
+ that.isShrink = true
+ that.filePanel = {
+ 'color': 'white',
+ 'z-index': '-1',
+ 'right': '66px',
+ 'bottom': '66px',
+ 'width': '0px',
+ 'height': '0px',
+ cursor: 'pointer',
+ 'border-radius': '50%',
+ }
+ },500)
+ this.filePanel = {
+ 'color': 'white',
+ 'z-index': '-1',
+ 'right': '20px',
+ 'bottom': '20px',
+ 'width': '92px',
+ 'height': '92px',
+ cursor: 'pointer',
+ 'border-radius': '50%',
+ }
+ },
close() {
this.uploader.cancel()
this.panelShow = false
@@ -405,9 +460,21 @@ export default {
.file-panel {
background-color: #fff;
border: 1px solid #e2e2e2;
- border-radius: 7px 7px 0 0;
box-shadow: 0 0 10px rgba(0, 0, 0, .2);
+ right: 2%;
+ bottom: 2%;
+ width: 720px;
+ height: 300px;
+ color: black;
+ margin: auto;
+ overflow: hidden;
+ background-size: 100% 100%;
+ border-radius: 7px 7px 0 0;
+ position: fixed;
+ -webkit-transition: all .5s cubic-bezier(0.4, 0, 1, 1) 0s;
+ transition: all .5s cubic-bezier(0.4, 0, 1, 1) 0s;
+
ul{
white-space: nowrap;
-webkit-overflow-scrolling: touch;
@@ -528,4 +595,129 @@ export default {
position: absolute;
clip: rect(0, 0, 0, 0);
}
+
+
+
+ .process-area {
+ z-index: -1;
+ /*right: 20px;*/
+ /*bottom: 20px;*/
+ /*width: 92px;*/
+ /*height: 92px;*/
+ cursor: pointer;
+ background: #eee;
+ margin: auto;
+ overflow: hidden;
+ background-size: 100% 100%;
+ border-radius: 50%;
+ position: fixed;
+ animation: load-process-area .5s 1 linear forwards;
+ transition: .5s;
+ }
+ .process-anime {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ border: 4px solid #fff;
+ transform: translate(-50%,-50%);
+ width: 90px;
+ height: 90px;
+ background: linear-gradient(45deg,#fde47c,#fdeca6);
+ border-radius: 50%;
+ overflow: hidden;
+ }
+ .process-anime .cube-a {
+ position: absolute;
+ left: 50%;
+ background: rgba(53,53,53,.3);
+ width: 130px;
+ height: 130px;
+ border-radius: 50px;
+ animation: fx-rotate 15s infinite linear;
+ transform-origin: 50% 50%;
+ transition: .5s;
+ }
+ .process-anime .cube-b {
+ position: absolute;
+ left: 50%;
+ background: #fff;
+ width: 130px;
+ height: 130px;
+ border-radius: 50px;
+ animation: fx-rotate 10s infinite reverse linear;
+ transform-origin: 50% 50%;
+ transition: .5s;
+ }
+
+ /**成功**/
+ .process-anime .done {
+ position: absolute;
+ width: 45px;
+ height: 45px;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%,-50%) scale(2.25);
+ }
+ .process-anime .done .checkmark {
+ width: 45px;
+ height: 45px;
+ border-radius: 50%;
+ display: block;
+ stroke-width: 2;
+ stroke: #fff;
+ stroke-miterlimit: 10;
+ box-shadow: inset 0 0 0 #fdda65;
+ animation: fill-data .4s ease-in-out .4s forwards,scale-data .3s ease-in-out .9s both;
+ }
+ .process-anime .done .checkmark__check {
+ transform: translate(2px,2px);
+ transform-origin: 50% 50%;
+ stroke-dasharray: 48;
+ stroke-dashoffset: 48;
+ animation: stroke-data .3s cubic-bezier(.65,0,.45,1) .8s forwards;
+ }
+
+ @keyframes fx-rotate {
+ 0% {
+ transform: translate(-50%) rotate(0);
+ }
+ 100% {
+ transform: translate(-50%,2px) rotate(365deg);
+ }
+ }
+
+ @keyframes scale-data {
+ 0%, 100% {
+ transform: none;
+ }
+ 50% {
+ transform: scale3d(1.1,1.1,1);
+ }
+ }
+ @keyframes fill-data {
+ 100% {
+ box-shadow: inset 0 0 0 30px #fdda65;
+ }
+ }
+
+ @keyframes stroke-data {
+ 100% {
+ stroke-dashoffset: 0;
+ }
+ }
+
+ @keyframes load-process-area {
+ 0% {
+ right: 66px;
+ bottom: 66px;
+ width: 0;
+ height: 0;
+ }
+ 100% {
+ right: 20px;
+ bottom: 20px;
+ width: 92px;
+ height: 92px;
+ }
+ }
diff --git a/src/views/demo/index.vue b/src/views/demo/index.vue
index 1db64ad..a41d9c0 100644
--- a/src/views/demo/index.vue
+++ b/src/views/demo/index.vue
@@ -1,9 +1,133 @@
-
- 1
- 2
- 3
-
+
+
diff --git a/src/views/home/mobile/index.vue b/src/views/home/mobile/index.vue
index 309b201..502d33f 100644
--- a/src/views/home/mobile/index.vue
+++ b/src/views/home/mobile/index.vue
@@ -40,23 +40,9 @@
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
@@ -447,19 +433,44 @@
.tab-bottom {
padding: 0 0 25px 0;
+ .van-tabbar-item {
+ margin-top:25px;
+ animation:ordinary .4s forwards;
+ -moz-animation:ordinary .4s forwards; /* Firefox */
+ -webkit-animation:ordinary .4s forwards; /* Safari and Chrome */
+ -o-animation:ordinary .4s forwards; /* Opera */
+ }
+ }
+
+ @keyframes iphoneX
+ {
+ from {margin-top:25px;}
+ to {margin-top:-5px;}
+ }
+
+ @keyframes ordinary
+ {
+ from {margin-top:-5px;}
+ to {margin-top:25px;}
}
.tab-bottom-iphoneX {
padding: 0 0 25px 0;
.van-tabbar-item {
- margin-top: -5px;
+ animation:iphoneX .4s forwards;
+ -moz-animation:iphoneX .4s forwards; /* Firefox */
+ -webkit-animation:iphoneX .4s forwards; /* Safari and Chrome */
+ -o-animation:iphoneX .5s forwards; /* Opera */
}
}
.tab-bottom-iphoneXS {
padding: 0 0 25px 0;
.van-tabbar-item {
- margin-top: -5px;
+ animation:iphoneX .4s forwards;
+ -moz-animation:iphoneX .4s forwards; /* Firefox */
+ -webkit-animation:iphoneX .4s forwards; /* Safari and Chrome */
+ -o-animation:iphoneX .4s forwards; /* Opera */
}
}
@@ -522,7 +533,7 @@
.van-nav-bar {
background: #ffffffcc;
position: relative;
- box-shadow: 4px 0px 2px rgba(0,0,0,0.5);
+ box-shadow: 4px 0 2px rgba(0,0,0,0.5);
}
.van-nav-bar::after{
background: inherit;
diff --git a/src/views/test/360demo.html b/src/views/test/360demo.html
index 5a4ba2c..792d2e1 100644
--- a/src/views/test/360demo.html
+++ b/src/views/test/360demo.html
@@ -155,11 +155,11 @@