电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

VUE-ElementUI 自定義Loading圖操作

瀏覽:32日期:2022-11-01 13:12:51

需求:

element ui loading圖只能使用自己的loading圖,

但很多場景下,需要替換成自己的gif圖

雖然文檔中有些, element-loading-spinner='el-icon-loading' 可指定自定義圖

但經(jīng)測試,也只是只能再elementui 圖標(biāo)庫中的圖, 不是我們想的那個自定義圖類的意思。

自定義圖方法:

1) 添加自定義elementUI loading樣式

VUE-ElementUI 自定義Loading圖操作

asserts下 新建CSS文件夾 及CSS文件比如myCss.css

再里面,寫入自定義的element類CSS樣式

.el-loading-spinner{ /*這個是自己想設(shè)置的 gif 加載動圖*/ background-image:url(’../img/loading.gif’); background-repeat: no-repeat; background-size: 200px 120px; height:100px; width:100%; background-position:center; /*覆蓋 element-ui 默認(rèn)的 50% 因為此處設(shè)置了height:100%,所以不設(shè)置的話,會只顯示一半,因為被top頂下去了*/ top:40%; }.el-loading-spinner .circular { /*隱藏 之前 element-ui 默認(rèn)的 loading 動畫*/ display: none; } .el-loading-spinner .el-loading-text{ /*為了使得文字在loading圖下面*/ margin:85px 0px; }

CSS 細(xì)調(diào),需要在瀏覽器調(diào)試工具中細(xì)調(diào)

VUE-ElementUI 自定義Loading圖操作

2)main.js 導(dǎo)入自定義樣式

這里注意,要在導(dǎo)入elementUI之后,再導(dǎo)入自己的樣式,要不然會被elementUI覆蓋

import ElementUI from ’element-ui’;import ’element-ui/lib/theme-chalk/index.css’;Vue.use(ElementUI); //element //自定義的element UI loading樣式import ’./assets/css/myCss.css’

3) v-loading

<el-container v-loading='loading' element-loading-background='rgba(255, 255,255, 0.5)' element-loading-text='加載中...' >

注意,這里 不要加上element-loading-spinner='el-icon-loading' ,否則 也會同時出現(xiàn)element圖庫中對應(yīng)的loading圖

4)對應(yīng)加載邏輯

data () { return { loading: true } }, startLoading() { this.loading=true; }, endLoading(){ this.loading=false; },

axios請求接口時,開始loading,收到數(shù)據(jù)后,loading結(jié)束

Ajx_GetClassList() { this.startLoading(); this.$axios( { url: url, method:’POST’, } ).then(res=>{ this.endLoading(); }) },

5) 運(yùn)行時,是正常顯示,但編譯后,看不到自定義的圖片資源了

原因,VUE項目打包后,樣式目錄結(jié)構(gòu)變?yōu)閟tatic/css

解決

build->utils.js 配置文件添加

publicPath: ’../../’

// Extract CSS when that option is specified // (which is the case during production build) if (options.extract) { return ExtractTextPlugin.extract({ use: loaders, publicPath:’../../’, // 解決element-ui中組件圖標(biāo)不顯示問題 fallback: ’vue-style-loader’ })

這樣,編譯后的element-ui資源也可以正常訪問了

VUE-ElementUI 自定義Loading圖操作

自定義loading圖效果

VUE-ElementUI 自定義Loading圖操作

補(bǔ)充知識:vue+elementUI自定義通用table組件

自定義通用table組件,帶分頁,后端排序,路由帶參數(shù)跳轉(zhuǎn),多選框,字段格式化

1.tableList組件

<!-- 費(fèi)用報銷編輯彈框 --><template> <div class='table-temp'> <el-table :data='tableData' border size='mini' fit highlight-current-row v-loading='loading' @selection-change='handleSelectionChange' @sort-change='sortChange' > <el-table-column type='selection' align='center'></el-table-column> <el-table-column type='index' label='序號' fixed></el-table-column> <!-- prop: 字段名name, label: 展示的名稱, fixed: 是否需要固定(left, right), minWidth: 設(shè)置列的最小寬度(不傳默認(rèn)值), active: 是否有操作列 active.name: 操作列字段名稱, active.clickFun: 操作列點(diǎn)擊事件, formatData: 格式化內(nèi)容--> <el-table-columnv-for='(item, key) in tableHeader':key='key':prop='item.prop':label='item.label':fixed='item.fixed':min-widitem='item.minWidth' :sortable='item.sortable' ><template slot-scope='scope'> <div v-if='item.active'> <el-button v-for='(o, key) in item.active' :key='key' @click='handleActive(scope.row, o.router, o.routerId)' type='text' size='small' >{{o.name}}</el-button> </div> <div v-else> <av-if='item.router' @click='handleActive(scope.row,item.router, item.routerId)' > <span v-if='!item.formatData'>{{ scope.row[item.prop] }}</span> <span v-else>{{ scope.row[item.prop] | formatters(item.formatData) }}</span> </a> <div v-else> <span v-if='!item.formatData'>{{ scope.row[item.prop] }}</span> <span v-else>{{ scope.row[item.prop] | formatters(item.formatData) }}</span> </div> </div></template> </el-table-column> </el-table> <div class='pagination'> <el-paginationbackgroundlayout='total, prev, pager, next':current-page='pagination.pageIndex':page-size='pagination.pageSize':total='pagination.pageTotal'@current-change='handlePageChange' ></el-pagination> </div> </div></template><script>var _ = require(’lodash’);export default { props: { tableData: { type: Array, default: function() {return []; } }, tableHeader: { type: Array, default: function() {return []; } }, loading: { type: Boolean, default: false }, pagination: { type: Object, default: {pageIndex: 0,pageSize: 15,pageTotal: 0 } } }, data() { return { multipleSelection: [], newPagination: {pageIndex: 0,pageSize: 15,pageTotal: 0 } }; }, methods: { // 多選操作 handleSelectionChange(val) { this.multipleSelection = val; this.$emit(’selectFun’, { backData: this.multipleSelection }); }, // 分頁導(dǎo)航 handlePageChange(val) { console.log(’handlePageChange:’, val); this.$set(this.pagination, ’pageIndex’, val); //調(diào)用父組件方法 this.$emit(’pageChange’, { backData: this.pagination}); }, // row:本行數(shù)據(jù),route:要跳轉(zhuǎn)的路由路徑,跳轉(zhuǎn)要傳的參數(shù)routeId handleActive(row, route, routeId) { console.log(row); this.$router.push({path: ’/’ + route,query: { id: row[routeId]} }); }, //后端排序 sortChange(column) { //console.log(’sortChange:’, column); //調(diào)用父組件方法 this.$emit(’sortChange’, { backData: column }); } }, watch: {} }, computed: { }, created() { }};</script><style scoped>.btn-a{ color: #409EFF}</style>

2.組件使用

<template> <div><!-- 表格 --> <table-List:tableData='tableData':tableHeader='tableHeader':loading='loading':pagination='pagination'@pageChange='pageChange'@selectFun='selectFun'@sortChange='sortChange' ></table-List> </div></template><script>import appMain from ’../../../utils/app_main’;export default { data() { return {// 請求加載 loading: false, // 分頁信息 pagination: {pageIndex: 1,pageSize: 10,pageTotal: 60 }, tableHeader: [// 表頭數(shù)據(jù){ prop: ’id’, label: ’離職編號’, minWidth: ’100px’, router: ’quitDetail’, routerId: ’id’, sortable: ’custom’ },{ prop: ’resignationUserName’, label: ’姓名’, router: ’employeeDetail’, routerId: ’resignationUserId’, sortable: ’custom’},{ prop: ’departName’, label: ’部門’, minWidth: ’100px’, sortable: ’custom’ },{ prop: ’jobRole’, label: ’所在崗位’, sortable: ’custom’ },{ prop: ’onbordingTime’, label: ’入職日期’, formatData: function(val) { let date = new Date(val); return appMain.formatDate(date, ’yyyy-MM-dd’); }, sortable: ’custom’},{ prop: ’resignationTime’, label: ’離職日期’, formatData: function(val) { let date = new Date(val); return appMain.formatDate(date, ’yyyy-MM-dd’); }, minWidth: ’100px’, sortable: ’custom’},{ prop: ’resignationReason’, label: ’離職原因’, minWidth: ’100px’, sortable: ’custom’ },{ prop: ’status’, label: ’流程狀態(tài)’, minWidth: ’100px’, sortable: ’custom’ } ], tableData: [], multipleSelection: [], }; }, methods: { // 組件選擇完后把數(shù)據(jù)傳過來 selectFun(data) { this.multipleSelection = data.backData; }, //表格組件返回排序?qū)ο? sortChange(data) { let column = data.backData; //排序 if (column.order) {//倒序if (column.order === ’descending’) { // this.query.sortColumn = column.prop + ’ ’ + ’desc’;} else { // this.query.sortColumn = column.prop;} } else {//不排序// this.query.sortColumn = ’’; } //請求接口 }, //分頁導(dǎo)航 pageChange(data) { this.pagination = data.backData; console.log(’pageChange:’, this.pagination); //分頁變化--請求接口 }, }};</script>

3.appMain.js

class appMain { }// 時間格式化 formatDate(date, fmt) { var date = new Date(date) if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (date.getFullYear() + ’’).substr(4 - RegExp.$1.length)); } let o = { ’M+’: date.getMonth() + 1, ’d+’: date.getDate(), ’h+’: date.getHours(), ’m+’: date.getMinutes(), ’s+’: date.getSeconds() }; for (let k in o) { if (new RegExp(`(${k})`).test(fmt)) {let str = o[k] + ’’;fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : this.padLeftZero(str)); } } return fmt; }; padLeftZero(str) { return (’00’ + str).substr(str.length); }export default new appMain()

以上這篇VUE-ElementUI 自定義Loading圖操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 气密性检测仪_气密性检测设备_防水测试仪_密封测试仪-岳信仪器 | 流水线电子称-钰恒-上下限报警电子秤-上海宿衡实业有限公司 | 考勤系统_考勤管理系统_网络考勤软件_政企|集团|工厂复杂考勤工时统计排班管理系统_天时考勤 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 全自动翻转振荡器-浸出式水平振荡器厂家-土壤干燥箱价格-常州普天仪器 | 亳州网络公司 - 亳州网站制作 - 亳州网站建设 - 亳州易天科技 | 合肥白癜风医院_合肥治疗白癜风医院_合肥看白癜风医院哪家好_合肥华研白癜风医院 | 净气型药品柜-试剂柜-无管道净气型通风柜-苏州毕恩思 | Akribis直线电机_直线模组_力矩电机_直线电机平台|雅科贝思Akribis-杭州摩森机电科技有限公司 | 北京乾茂兴业科技发展有限公司| 水质传感器_水质监测站_雨量监测站_水文监测站-山东水境传感科技有限公司 | 阿尔法-MDR2000无转子硫化仪-STM566 SATRA拉力试验机-青岛阿尔法仪器有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 万濠影像仪(万濠投影仪)百科-苏州林泽仪器 | 航空障碍灯_高中低光强航空障碍灯_民航许可认证航空警示灯厂家-东莞市天翔航天科技有限公司 | 鑫达滑石-辽宁鑫达滑石集团| 诸城网站建设-网络推广-网站优化-阿里巴巴托管-诸城恒泰互联 | 防水套管厂家_刚性防水套管_柔性防水套管_不锈钢防水套管-郑州中泰管道 | 嘉兴恒升声级计-湖南衡仪声级计-杭州爱华多功能声级计-上海邦沃仪器设备有限公司 | 旅游规划_旅游策划_乡村旅游规划_景区规划设计_旅游规划设计公司-北京绿道联合旅游规划设计有限公司 | 奥运星-汽车性能网评-提供个性化汽车资讯 | 昆明挖掘机修理厂_挖掘机翻新再制造-昆明聚力工程机械维修有限公司 | 煤矿人员精确定位系统_矿用无线通信系统_煤矿广播系统 | 全国国际学校排名_国际学校招生入学及学费-学校大全网 | 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 江西自考网-江西自学考试网 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 粉末包装机-给袋式包装机-全自动包装机-颗粒-液体-食品-酱腌菜包装机生产线【润立机械】 | 气力输送设备_料封泵_仓泵_散装机_气化板_压力释放阀-河南锐驰机械设备有限公司 | 分类168信息网 - 分类信息网 免费发布与查询 | 高扬程排污泵_隔膜泵_磁力泵_节能自吸离心水泵厂家-【上海博洋】 | 地磅-电子地磅维修-电子吊秤-汽车衡-无人值守系统-公路治超-鹰牌衡器 | 国产液相色谱仪-超高效液相色谱仪厂家-上海伍丰科学仪器有限公司 | 九爱图纸|机械CAD图纸下载交流中心 | 混合气体腐蚀试验箱_盐雾/硫化氢/气体腐蚀试验箱厂家-北京中科博达 | 真空冷冻干燥机_国产冻干机_冷冻干燥机_北京四环冻干 | 继电器模组-IO端子台-plc连接线-省配线模组厂家-世麦德 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 济南ISO9000认证咨询代理公司,ISO9001认证,CMA实验室认证,ISO/TS16949认证,服务体系认证,资产管理体系认证,SC食品生产许可证- 济南创远企业管理咨询有限公司 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 |