日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue css load,vue css3loadding插件的开发以及npm包的发布管理

發布時間:2025/3/15 vue 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue css load,vue css3loadding插件的开发以及npm包的发布管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

插件開發的話建議使用vue-gitment腳手架開發

vue init webpack-simple vue-gitment

如果提示

執行cnpm install vue-cli -g 全局安裝

cnpm install vue-cli -g

在次執行上面的命令完成之后可以看到這樣的目錄

在src下面添加component loadding.js loadding.vue

loadding.vue

export default {

props:{

theme:String

}

}

.loadding {

z-index: 1000;

}

.jie-loadding{

width:10%;

height:10%;

max-width:150px;

max-height:150px;

position: absolute;

top:50%;

left:50%;

margin-left:-50px;

margin-top:-50px;

}

.spinner {

width: 100%;

height: 100%;

background-color: #67CF22;

margin: 0 auto;

-webkit-animation: rotateplane 1.2s infinite ease-in-out;

animation: rotateplane 1.2s infinite ease-in-out;

}

@-webkit-keyframes rotateplane {

0% { -webkit-transform: perspective(120px) }

50% { -webkit-transform: perspective(120px) rotateY(180deg) }

100% { -webkit-transform: perspective(120px) rotateY(180deg) rotateX(180deg) }

}

@keyframes rotateplane {

0% {

transform: perspective(120px) rotateX(0deg) rotateY(0deg);

-webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg)

} 50% {

transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);

-webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg)

} 100% {

transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);

-webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);

}

}

/*loadding second*/

.spinner2 {

margin: 0 auto;

width: 50px;

height: 50px;

position: relative;

}

.cube1, .cube2 {

background-color: #67CF22;

width: 50%;

height: 50%;

position: absolute;

top: 0;

left: 0;

-webkit-animation: cubemove 1.8s infinite ease-in-out;

animation: cubemove 1.8s infinite ease-in-out;

}

.cube2 {

-webkit-animation-delay: -0.9s;

animation-delay: -0.9s;

}

@-webkit-keyframes cubemove {

25% { -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5) }

50% { -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg) }

75% { -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5) }

100% { -webkit-transform: rotate(-360deg) }

}

@keyframes cubemove {

25% {

transform: translateX(42px) rotate(-90deg) scale(0.5);

-webkit-transform: translateX(42px) rotate(-90deg) scale(0.5);

} 50% {

transform: translateX(42px) translateY(42px) rotate(-179deg);

-webkit-transform: translateX(42px) translateY(42px) rotate(-179deg);

} 50.1% {

transform: translateX(42px) translateY(42px) rotate(-180deg);

-webkit-transform: translateX(42px) translateY(42px) rotate(-180deg);

} 75% {

transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);

-webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);

} 100% {

transform: rotate(-360deg);

-webkit-transform: rotate(-360deg);

}

}

/* loadding three*/

.spinner3 {

width: 100px;

height: 100px;

position: relative;

margin: 0 auto;

}

.double-bounce1, .double-bounce2 {

width: 100%;

height: 100%;

border-radius: 50%;

background-color: #67CF22;

opacity: 0.6;

position: absolute;

top: 0;

left: 0;

-webkit-animation: bounce 2.0s infinite ease-in-out;

animation: bounce 2.0s infinite ease-in-out;

}

.double-bounce2 {

-webkit-animation-delay: -1.0s;

animation-delay: -1.0s;

}

@-webkit-keyframes bounce {

0%, 100% { -webkit-transform: scale(0.0) }

50% { -webkit-transform: scale(1.0) }

}

@keyframes bounce {

0%, 100% {

transform: scale(0.0);

-webkit-transform: scale(0.0);

} 50% {

transform: scale(1.0);

-webkit-transform: scale(1.0);

}

}

/* loadding fourth*/

.spinner4 {

margin: 100px auto 0;

width: 200px;

text-align: center;

}

.spinner4 > div {

width: 50px;

height: 50px;

background-color: #67CF22;

border-radius: 100%;

display: inline-block;

-webkit-animation: bouncedelay 1.4s infinite ease-in-out;

animation: bouncedelay 1.4s infinite ease-in-out;

/* Prevent first frame from flickering when animation starts */

-webkit-animation-fill-mode: both;

animation-fill-mode: both;

}

.spinner4 .bounce1 {

-webkit-animation-delay: -0.32s;

animation-delay: -0.32s;

}

.spinner4 .bounce2 {

-webkit-animation-delay: -0.16s;

animation-delay: -0.16s;

}

@-webkit-keyframes bouncedelay {

0%, 80%, 100% { -webkit-transform: scale(0.0) }

40% { -webkit-transform: scale(1.0) }

}

@keyframes bouncedelay {

0%, 80%, 100% {

transform: scale(0.0);

-webkit-transform: scale(0.0);

} 40% {

transform: scale(1.0);

-webkit-transform: scale(1.0);

}

}

/*loadding five*/

.spinner5 {

margin: 0 auto;

width: 60px;

height: 60px;

position: relative;

}

.container1 > div, .container2 > div, .container3 > div {

width: 20px;

height: 20px;

background-color: #67CF22;

border-radius: 100%;

position: absolute;

-webkit-animation: bouncedelay 1.2s infinite ease-in-out;

animation: bouncedelay 1.2s infinite ease-in-out;

-webkit-animation-fill-mode: both;

animation-fill-mode: both;

}

.spinner5 .spinner-container {

position: absolute;

width: 100%;

height: 100%;

}

.container2 {

-webkit-transform: rotateZ(45deg);

transform: rotateZ(45deg);

}

.container3 {

-webkit-transform: rotateZ(90deg);

transform: rotateZ(90deg);

}

.circle1 { top: 0; left: 0; }

.circle2 { top: 0; right: 0; }

.circle3 { right: 0; bottom: 0; }

.circle4 { left: 0; bottom: 0; }

.container2 .circle1 {

-webkit-animation-delay: -1.1s;

animation-delay: -1.1s;

}

.container3 .circle1 {

-webkit-animation-delay: -1.0s;

animation-delay: -1.0s;

}

.container1 .circle2 {

-webkit-animation-delay: -0.9s;

animation-delay: -0.9s;

}

.container2 .circle2 {

-webkit-animation-delay: -0.8s;

animation-delay: -0.8s;

}

.container3 .circle2 {

-webkit-animation-delay: -0.7s;

animation-delay: -0.7s;

}

.container1 .circle3 {

-webkit-animation-delay: -0.6s;

animation-delay: -0.6s;

}

.container2 .circle3 {

-webkit-animation-delay: -0.5s;

animation-delay: -0.5s;

}

.container3 .circle3 {

-webkit-animation-delay: -0.4s;

animation-delay: -0.4s;

}

.container1 .circle4 {

-webkit-animation-delay: -0.3s;

animation-delay: -0.3s;

}

.container2 .circle4 {

-webkit-animation-delay: -0.2s;

animation-delay: -0.2s;

}

.container3 .circle4 {

-webkit-animation-delay: -0.1s;

animation-delay: -0.1s;

}

@-webkit-keyframes bouncedelay {

0%, 80%, 100% { -webkit-transform: scale(0.0) }

40% { -webkit-transform: scale(1.0) }

}

@keyframes bouncedelay {

0%, 80%, 100% {

transform: scale(0.0);

-webkit-transform: scale(0.0);

} 40% {

transform: scale(1.0);

-webkit-transform: scale(1.0);

}

}

loadding.js

import loadding from './loadding.vue'

const Loadding ={

install:function (Vue) {

Vue.component('Loadding',loadding)

}

};

// 這里的判斷很重要

if (typeof window !== 'undefined' && window.Vue) {

window.Vue.use(Loadding)

}

export default Loadding

然后修改webpack.config.js文件

entry:webpack打包的入口文件

output:webpack打包的出口文件里面的是一些配置

library:模塊名字 這里是Loadding

libraryTarget:'umd'//寫插件的時候需要umd

umdNamedDefine:true //對umd的模塊命名表示負責

然后npm run build一下

emmmm這個時候出現了一坨東西 表示成功了

確認沒問題之后 就再次修改package.json文件

我的是這樣子

{

"name": "cssloadding-jie",

"description": "A Vue.js project",

"version": "1.0.0",

"author": "Livejie <18312173568@163.com>",

"license": "MIT",

"private": false,

"main":"loadding/js/loadding.js",

"keywords": [

"vue",

"css3loadding",

"ajax loadding"

],

"scripts": {

"dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",

"build": "cross-env NODE_ENV=production webpack --progress --hide-modules"

},

"dependencies": {

"vue": "^2.5.11"

},

"browserslist": [

"> 1%",

"last 2 versions",

"not ie <= 8"

],

"devDependencies": {

"babel-core": "^6.26.0",

"babel-loader": "^7.1.2",

"babel-preset-env": "^1.6.0",

"babel-preset-stage-3": "^6.24.1",

"cross-env": "^5.0.5",

"css-loader": "^0.28.7",

"file-loader": "^1.1.4",

"vue-loader": "^13.0.5",

"vue-template-compiler": "^2.4.4",

"webpack": "^3.6.0",

"webpack-dev-server": "^2.9.1"

}

}

![圖片描述][5]

name:插件的名字

description:提示

version:版本號

author:作者

main:加入main入口文件

keywords:添加關鍵詞

然后把不要的刪除掉

目錄結構變成這樣子

然后登陸npm

npm login

輸入用戶名 密碼 郵箱登陸

沒有的話去這里注冊https://www.npmjs.com/

發布

npm publish

發布成功

更新的話再次publish但是需要修改下version版本

一定要修改version版本不然會報錯

再次npm publish

再次打開一個新的項目

npm install cssloadding-jie

main.js下

import Loadding from 'cssloadding-jie'

Vue.use(Loadding);

vue文件下使用

npm run dev 打開瀏覽器查看

成功引入

成功發布并使用。

總結

以上是生活随笔為你收集整理的vue css load,vue css3loadding插件的开发以及npm包的发布管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲夜夜夜 | 天天干天天爽天天操 | 天天摸天天爽 | 粉色视频免费观看 | 国产精品亚洲精品 | 日韩免费一级 | 亚洲av无码一区二区三区在线播放 | 日日噜夜夜噜 | 91av视频网站 | 伦乱天堂| 久久免费黄色网址 | 亚洲欧美视频一区二区 | 亚洲视频手机在线观看 | 国产福利免费看 | 欧美变态另类刺激 | 日本欧美一级片 | 少妇高潮一区二区三区喷水 | 91亚州 | 操欧美老女人 | 日本一区二区三区四区视频 | 国产欧美精品一区 | 国产精品一区二区麻豆 | 麻豆国产一区二区 | 亚洲视频在线观看网址 | 91高跟黑色丝袜呻吟动态图 | 国产午夜精品一区二区 | 另类综合网 | 91福利视频网站 | 国产成人无码精品久久久久久 | 欧美日韩观看 | 精品无码国产一区二区三区51安 | 国产三区在线视频 | 亚洲黄色一区二区 | 色婷婷综合激情 | 醉酒壮男gay强迫野外xx | 日韩女同一区二区三区 | 亚洲黄色免费视频 | 看黄色小视频 | 好吊操精品视频 | 亚洲欧洲天堂 | 青草91 | 秋霞福利网 | 男女久久久 | www.国产成人| 亚洲成人午夜影院 | av免费在线观看不卡 | 国内自拍青青草 | 91精品国产综合久久久蜜臀图片 | 欧美午夜理伦三级在线观看 | 精品一二三区 | 一区二区三区免费高清视频 | 九色porny视频 | 先锋资源在线视频 | 欧美变态口味重另类在线视频 | 欧洲性猛交 | 日本黄色大片免费看 | 风间ゆみ大战黑人 | 久久久久久久国产视频 | 欧美熟妇精品一区二区 | 国产精品久久久久久亚洲伦 | 超碰资源总站 | 淫片网站 | 欧美日韩免费一区 | 永久免费视频网站 | 国产成人久久久 | 亚洲国产aⅴ成人精品无吗 日韩乱论 | 狠狠干狠狠干狠狠干 | 日本一区二区三区在线观看视频 | 影音先锋中文字幕在线视频 | 少妇一级淫免费观看 | 日本天堂免费 | 精品一区二区三区久久久 | 国产精品无码永久免费不卡 | 少妇裸体挤奶汁奶水视频 | 免费看美女隐私网站 | 老汉av网站 | 女人喷潮完整视频 | 亚洲麻豆av | 欧美一区二区视频在线 | 中文字幕日韩专区 | 理论片琪琪午夜电影 | 天堂在线成人 | 亚洲一区精品在线观看 | 国产精品无码自拍 | 一卡二卡三卡在线 | 最新av网址在线观看 | www噜噜噜| 天堂网avav| 夜夜操操 | 欧美日韩 一区二区三区 | 51人人看| 欧美日韩视频在线播放 | 免费大片黄在线观看视频网站 | 欧美高清在线视频 | 日韩乱码人妻无码中文字幕久久 | 国产精品毛片一区 | 欧美乱码精品一区二区 | 糖心av | 久久婷婷一区 |