关于Vue组件库ElementUI使用过程中踩过的那些坑

一:安装及引入

1.1安装

方式一:用CDN引入

<!-- 引入样式 -->

<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">

<!-- 引入组件库 -->

<script src="https://unpkg.com/element-ui/lib/index.js"></script>

方式二:使用npm安装

npm i element-ui -S

1.2引入

如果使用方式一安装,则不再需要引入

如果使用方式二安装,则在main.js文件中引入

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css'; //坑一
Vue.use(ElementUI);

坑一:需要单独引入样式文件 但是elementUI有两个版本,因此在引入theme-chalk/index.css文件时可能会报找不到这个文件

解决办法:引入default-chalk/index.css

弊端:一些elementUI2.0中的样式或是属性不能使用,注意有一些elementUI版本中的属性需要严格区分,下面会详细叙述。

二:布局

elementUI中布局方式可以类比于BootStrap中的布局方式来使用。

BootStrap和ElementUI布局方式对比
条目BootStrapElementUI
栅格布局的行和列
<div class="container">
<div class="row">
<div class="col-*-x"></div>
<div class="col-*-x"></div>
</div>
</div>

*可取 lg md sm xs

x可取 1 2 3 4 6 9 12

列偏移为col-*-offset-x(*只能为md)
行和列可以任意嵌套
<el-row></el-row>//行
<el-col></el-col>//列 
行和列可以任意嵌套

用:span表示 且分格为24(*为0到24的任意数字)

<el-row :gutter='*'>
<el-col :span='*'></el-col>
<el-col :span='*' :offset="*"></el-col>
</el-row>

gutter为一行分多列时的间距 默认为0 ,即会紧挨

:offset为偏移量 通常不会使用

type为flex中包括justify(水平)和align(垂直)
响应式布局

1.基本布局规则如上

2.媒体查询--不同的屏幕大小下,使用不同的css样式

/* 超小设备(手机,小于 768px) */
/* Bootstrap 中默认情况下没有媒体查询 */

/* 小型设备(平板电脑,768px 起) */
@media (min-width: @screen-sm-min) {css样式 }

/* 中型设备(台式电脑,992px 起) */
@media (min-width: @screen-md-min) { css样式}

/* 大型设备(大台式电脑,1200px 起) */
@media (min-width: @screen-lg-min) { css样式}

取值为xs sm md lg xl

一行总和相加还是要为24


三:基本组件

3.1图标

通常不使用elementUI的图标,可以使用阿里云图标库 使用说明在技术胖将vue的视频中有说明

3.2Button

3.2.1基本的按钮属性

1.type:primary(蓝色) / success (绿色)/ warning (黄色)/ danger(红色) / info (灰色)/ text(文本)

2.样式:type(类型),plain(朴素),round(方角),circle(圆角),disabled(不可点击)

notices:除了type以外其余都去boolean类型的值,默认为false

3.size:medium / small / mini

notices:通常只能改变高度,不能改变宽度,因此在使用的时候一般都是给medium

4.icon属性为图标,<el-button-group></el-button-group>为按钮组

四:那些遇到的坑们

1.select框

1.问题:宽度没有办法改变

解决办法:一定要给select框的外面加尺寸,不能在form元素或是其他的地方加尺寸,没有什么作用。

2.datePicker日期选择器

1.问题:想要限制某一个时间段内的时间 比如只能选择1900年1月1日到2100年12月31日之间的时间段

解决:使用pickerOptions属性

template:(editable为是否可输入)

<el-date-picker v-model="timePicker" style="width:100%;" :picker-options="pickerOptions" :editable='edit'></el-date-picker>
data:
data(){
return{
timePicker:'',
 pickerOptions:{
  disabledDate(time) {
     let min=time.getTime() < new Date("1900/1/1");
      let max=time.getTime() > new Date("2099/12/31");
       return min||max;
 }
  },
edit:false,
}
}

2.问题:(衍生出来的时间问题)在使用getFullYear()等和时间相关的函数时,报错如下:

"TypeError: ds.getFullYear is not a function"

解决:getFullYear()等函数的调用对象必须为object(即ds的对象必须时object)因此需要

var d=new Date(ds);
console.log(d.getFullYear());

显然是因为getFullYear一类的时间函数的原型写法为

Object.getFullYear=function(){
//对object的处理
return 年
};

3.注意和Boolean类型相关的值需要在data里面给一个值,不能直接在元素里以editable=false或是editable='false'的形式给它

3.Upload文件上传

1.问题:判断上传之前的格式

解决:给<el-upload></el-upload>标签加上before-upload属性

<template>
<el-upload
:before-upload='beforeUpload'>
<el-button size="middle" type="primary">点击上传</el-button>
</el-upload>
</template>
<script>
methods:{
beforeUpload(file){
//file.type为文档类型
            console.log(file.type);
           }
}
</script>

4.form表单

1.input框输入密码或是其他和HTML5中一样,只需要改变type即可

5.pagination分页

1.问题:重置以后恢复分页的初始状态

解决:将需要的当前页和页面大小在改变的过程中传递,而不是传一个死的,传一个死的再改变,它有可能不会改变。

<template>
<el-pagination
 @size-change="handleSizeChange"
//这是页面大小切换时候的函数
 @current-change="handleCurrentChange"
//这是当前页切换的函数
:current-page="form.page"
//当前页
:page-sizes="[10,20,50,100,200]"
//页面数组
:page-size="form.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalPage">
            </el-pagination>
</template>
<script>
data(){
return{
form:{
page:1,
pageSize:10,
},
totalPage:0,
},
methods:{
handleSizeChange(val){
//val为目前选择的页面大小
},
handleCurrentChange(val){
//val为目前选择的当前页
}
}
}
</script>

6.NavMenu导航栏菜单

1.问题:多个导航栏菜单,el-menu-item打开时,el-submenu不会关闭

解决:调用el-menu的关闭el-submenu的函数

步骤:1.如果点击的是el-submenu,就获取它的唯一索引 index

<el-menu @open="handleOpen" ref=‘menu’>//必须要给ref属性,方便后面调用函数
<el-submenu></el-submenu>
<el-menu-item></el-submenu-item>
</el-menu>
handleOpen(key,path){
//key即为需要的唯一索引
this.key=key;
}

    2.点击的是el-menu-item,就调用前面存储的唯一索引所对应的关闭函数,并注意情况存唯一索引的变量的值,注意el-submenu关闭的时候也要清空key

showIndex(){
          if(this.key!=''){
              this.$refs.menu.close(this.key);
              this.key='';
          }

2.收起的时候可能会出现字体的卡顿

这是element UI本身组件的问题,没有办法解决,可以给一个优化方案为给标题一个margin或者padding。

7.dialog对话框

1.问题:size属性不再起作用(tiny,small,middle,large)

换成width,且以百分比出现

  • 10
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Vue使用ElementUI组件非常简单,只需要按照以下步骤即可: 1. 安装ElementUI:可以使用npm或yarn进行安装,命令如下: ``` npm install element-ui --save ``` 或者 ``` yarn add element-ui ``` 2. 在Vue项目引入ElementUI:在main.js引入ElementUI并注册组件,代码如下: ```javascript import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI) ``` 3. 在Vue组件使用ElementUI组件:在需要使用ElementUI组件Vue组件,直接使用即可,例如: ```html <template> <div> <el-button type="primary">主要按钮</el-button> </div> </template> ``` 以上就是在Vue使用ElementUI组件的基本步骤,希望能对你有所帮助。 ### 回答2: Vue.js 是一个流行的前端 JavaScript 框架之一,而 Element UI 是面向 Web 开发者的开源 UI 框架。当这两个框架交汇在一起时,就可以创建易于维护和可扩展的 Vue.js 应用程序。 使用 Element UI 组件可以大大加速 Vue.js 应用程序的开发过程。如果您使用 Element UI,您将能够在几分钟内构建出功能齐全的 UI 功能。它包含许多常用的组件,如表格,菜单,选项卡,表单和按钮。 使用 Element UI 组件的第一步是在您的 Vue.js 应用程序安装它。要使用 Element UI,您首先需要将它安装到您的项目。您可以通过 npm(Node.js 包管理器)或 Yarn(快速可靠的依赖管理器)来完成此操作。 使用 npm 安装 ElementUI,需要在命令提示符下输入以下命令: ``` npm install element-ui -S ``` 如果您使用的是 Yarn,您可以使用以下命令: ``` yarn add element-ui ``` 一旦您安装了 ElementUI,您就可以在您的 Vue.js 应用程序使用各种 ElementUI 组件了。您需要做的第一件事是将 ElementUI CSS 添加到您的页面。您可以将以下代码添加到您的 index.html 文件: ``` <link rel="stylesheet" href="//unpkg.com/element-ui/lib/theme-chalk/index.css"> ``` 接下来,在您的 Vue.js 组件引入 ElementUI 组件,例如: ``` <template> <el-button type="primary">Click me!</el-button> </template> <script> import { Button } from 'element-ui' export default { name: 'MyComponent', components: { 'el-button': Button } } </script> ``` 这就是使用 Element UI 组件的基础知识。您可以添加其他组件来构建您的 Vue.js 应用程序,例如对话框,弹出式菜单,警告框等等。这些组件使您的应用程序看起来更专业,使用户体验更加友好。 ### 回答3: Vue.js是一款流行的前端框架,其主要特点是数据的响应式更新和简化了DOM操作。而Element UI是一个开源的基于Vue.js的UI组件,它提供了一系列的常用组件,能够方便地构建出美观且高效的Web应用程序界面。这里我们来介绍一下如何在Vue.js使用Element UI组件。 第一步:安装Element UI 我们可以通过npm或yarn来安装Element UI。 npm安装: npm i element-ui -S yarn安装: yarn add element-ui 第二步:引入Element UI 在我们的Vue项目使用Element UI,需要先在Vue入口文件main.js引入它,并且使用Vue.use()注册它: import Vue from 'vue' import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI); 这里我们还需要注意,在引入Element UI时,也要同时引入Element UI的CSS样式文件。 第三步:使用Element UI组件 在以上步骤完成之后,我们就可以在vue使用Element UI组件了。例如,我们可以在template使用组件el-button来创建一个按钮: <template> <div> <el-button type="primary">主要按钮</el-button> </div> </template> 这里我们需要注意的是,我们必须在script引入el-button组件: <script> import { Button } from 'element-ui'; export default { components: { 'el-button': Button } } </script> 总结 以上就是在Vue使用Element UI组件的步骤,只需要三个简单的步骤就可以方便地使用Element UI组件,大大加快了我们构建Vue项目的开发效率。Element UI提供了丰富的组件,可以满足我们在开发过程的大部分需求,所以在项目使用它也是非常不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值