vue-----js组件的封装--------

Posted yuanjili666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue-----js组件的封装--------相关的知识,希望对你有一定的参考价值。

 

 

 技术图片

技术图片

 

 

 

 

 

 在js组件网站上,查看那个组件好看就用,把他们结构和样式分别写在  组件文件内.loading.vue组件

技术图片

 

 

 做一下组件的测试/引用

 技术图片

 

 运行的效果

 技术图片

 

 

 

 

 技术图片

 

技术图片

技术图片

 

 

 

 

 封装完好的,js组件

 

 loading  html和css样式

 

技术图片
  1 <template>
  2   <div class="loader" v-if="flag">
  3     <div class="loader-inner">
  4       <div class="loader-line-wrap">
  5         <div class="loader-line"></div>
  6       </div>
  7       <div class="loader-line-wrap">
  8         <div class="loader-line"></div>
  9       </div>
 10       <div class="loader-line-wrap">
 11         <div class="loader-line"></div>
 12       </div>
 13       <div class="loader-line-wrap">
 14         <div class="loader-line"></div>
 15       </div>
 16       <div class="loader-line-wrap">
 17         <div class="loader-line"></div>
 18       </div>
 19     </div>
 20   </div>
 21 </template>
 22 
 23 <script>
 24 export default ;
 25 </script>
 26 
 27 <style>
 28 
 29 .loader 
 30     background:rgba(0,0,0,.3);
 31     bottom: 0;
 32     left: 0;
 33     overflow: hidden;
 34     position: fixed;
 35     right: 0;
 36     top: 0;
 37     z-index: 99999;
 38 
 39 
 40 .loader-inner 
 41     bottom: 0;
 42     height: 60px;
 43     left: 0;
 44     margin: auto;
 45     position: absolute;
 46     right: 0;
 47     top: 0;
 48     width: 100px;
 49 
 50 
 51 .loader-line-wrap 
 52     animation: 
 53         spin 2000ms cubic-bezier(.175, .885, .32, 1.275) infinite
 54     ;
 55     box-sizing: border-box;
 56     height: 50px;
 57     left: 0;
 58     overflow: hidden;
 59     position: absolute;
 60     top: 0;
 61     transform-origin: 50% 100%;
 62     width: 100px;
 63 
 64 .loader-line 
 65     border: 4px solid transparent;
 66     border-radius: 100%;
 67     box-sizing: border-box;
 68     height: 100px;
 69     left: 0;
 70     margin: 0 auto;
 71     position: absolute;
 72     right: 0;
 73     top: 0;
 74     width: 100px;
 75 
 76 .loader-line-wrap:nth-child(1)  animation-delay: -50ms; 
 77 .loader-line-wrap:nth-child(2)  animation-delay: -100ms; 
 78 .loader-line-wrap:nth-child(3)  animation-delay: -150ms; 
 79 .loader-line-wrap:nth-child(4)  animation-delay: -200ms; 
 80 .loader-line-wrap:nth-child(5)  animation-delay: -250ms; 
 81 
 82 .loader-line-wrap:nth-child(1) .loader-line 
 83     border-color: hsl(0, 80%, 60%);
 84     height: 90px;
 85     width: 90px;
 86     top: 7px;
 87 
 88 .loader-line-wrap:nth-child(2) .loader-line 
 89     border-color: hsl(60, 80%, 60%);
 90     height: 76px;
 91     width: 76px;
 92     top: 14px;
 93 
 94 .loader-line-wrap:nth-child(3) .loader-line 
 95     border-color: hsl(120, 80%, 60%);
 96     height: 62px;
 97     width: 62px;
 98     top: 21px;
 99 
100 .loader-line-wrap:nth-child(4) .loader-line 
101     border-color: hsl(180, 80%, 60%);
102     height: 48px;
103     width: 48px;
104     top: 28px;
105 
106 .loader-line-wrap:nth-child(5) .loader-line 
107     border-color: hsl(240, 80%, 60%);
108     height: 34px;
109     width: 34px;
110     top: 35px;
111 
112 
113 @keyframes spin 
114     0%, 15% 
115         transform: rotate(0);
116     
117     100% 
118         transform: rotate(360deg);
119     
120 
121 </style>
View Code

 

 

 loading 的js 文件

 

 

技术图片
 1 import Loading from "./index.vue";
 2 import Vue from "vue";
 3 export default () => 
 4 
 5 
 6     let LoadingComponent = Vue.extend(Loading);
 7 
 8     let child = new LoadingComponent(
 9         el: document.createElement("div"),
10         data:
11             flag:false
12         ,
13         methods: 
14             handlemount() 
15                 this.flag = true;
16             ,
17             handleDestory() 
18                this.flag = false;
19             
20         
21     )
22 
23     document.body.appendChild(child.$mount().$el)
24     return child;
25 
26 
View Code

 

 

 总结:

从网络获取js  组件的html和css  ,作为一个组件  写入组件中,(最好创建一个文件是这个组件的名称,index.vue  用来放HTML和CSS,index.js 用来写逻辑)

  js组件的思路: 我想要这个组件的时候调用一下这个组件的方法就可以了,我不用的时候就移除。

 

以上是关于vue-----js组件的封装--------的主要内容,如果未能解决你的问题,请参考以下文章

vue.js table组件封装

vue --》组件的封装 及 参数的传递

Vue.js(18)之 封装calendar组件

Vue.js 自定义组件封装实录——基于现有控件的二次封装(以计时器为例)

从零开始教你封装自己的vue组件

Vue的入门