Element-ui组件踩坑记录

1.组件交互页面抖动:

出现问题:

组件操作时,页面会出现抖动情况,文字会模糊;

解决方法:

1)Checkbox 多选框切换:

.el-checkbox__inner::after {
  transition: none!important;
}

2)表单验证信息出现时:

.reprint-remark-form .el-form-item__error {
  transition: none!important;
}

3)单选框选中时:

.el-radio ::after {
  transition: none!important;
}

4)下拉框触发时:

.el-icon-caret-right {
  transition: none!important;
}

5)el-tab标签页切换时:

.el-tabs__active-bar {
  transition: none!important;
}

6)输入框或其他组件icon:

.el-input__icon {
  transition: none!important;
}

2.组件属性:

出现问题:

按照文档给组件添加属性,组件不能实现文档效果;

问题原因:

element组件更新了很多版本,查看的文档版本高于项目中安装的组件版本;

解决方法:

1)打开package.json文件,查看element-ui版本号;
2)切换文档版本与安装版本保持统一,查看当前组件是否有此属性应用,确认是否是版本原因导致;
3)确认版本原因,重新安装element-ui

// 卸载旧版本
npm uninstall element-ui
// 安装最新版本
npm i element-ui -S
// 安装目标版本
npm install element-ui @2.0.11 -S

3.组件样式修改:

出现问题:

F12里组件修改的样式,放在vue的style里不起作用

问题原因:

在vue项目的style里,使用了scoped属性,实现组件的私有化,不对全局造成样式污染,表示当前style属性只属于当前模块,但是此时再修改组件样式不起作用。

解决方法:

1)删掉scoped属性,为防止样式污染,设置当前页面的唯一class类名包裹全部样式;
2)使用深度选择器:

a.使用>>>:(此方法适用于style的lang为css语言时)

<style scoped>
  外层 >>> 第三方组件类名{
    样式
  }
</style>

b.使用/deep/:(有些Sass 、Less之类的预处理器无法正确解析 >>>,此时应用/deep/)

<style lang="sass" scoped>
  /deep/ 第三方组件类名 {
    样式
  }
</style>

c.使用v-deep:(最优用法,/deep/在某些时候会报错,::v-deep更保险并且编译速度更快)
注:切记必须是双冒号

::v-deep 第三方组件类名 {
  ***
}

4.select下拉框:

出现问题:

在移动端使用element下拉框时,宽度非常大显示不全,就增加了popper-append-to-body:false的属性来修改,结果下拉框不能再随着屏幕滚动上下显示了。

问题原因:

popper-append-to-body的作用是“是否将弹出框插入至 body 元素。在弹出框的定位出现问题时,可将该属性设置为 false”,当未添加popper-append-to-body属性时,下拉框在app外层,无法修改样式,如下图:
请添加图片描述
添加popper-append-to-body属性后,可以修改样式,但是会出现下图遮挡情况:
请添加图片描述

解决方法:

1)删掉popper-append-to-body属性;
2)给el-option组件添加样式,该方法目前只能逐一添加,再考虑其他方法;

<el-select v-model="form.main_dept_id"
    :disabled="addType === 'A' || addType === 'D'"
    size="mini"
    filterable
    popper-class="add-select"
    placeholder="暂无">
    <el-option
        :style="optionStyle"
        :title="item.name"
        v-for="(item, index) in mainDept"
        :key="index"
        :label="item.name"
        :value="item.id">
    </el-option>
</el-select>
data() {
    return {
        optionStyle: 'max-width: 80vw;'
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值