关于iview和elementUI组件样式覆盖无效问题及解决

目录
  • iview和elementUI组件样式覆盖无效
    • 新建一个不含scoped的style标签覆盖组件样式
    • /deep/ 预处理器less下使用
  • Element-ui与IView中的样式覆盖问题
    • 在Element-UI中覆盖样式
    • 在IView中覆盖样式

iview和elementUI组件样式覆盖无效

iview和elementUI是我们在用vue开发项目时比较常用到的ui组件,在我们使用第三方UI组件库开发时有时需要对这些组件进行一些样式修改。

为了vue页面样式模块化,不对全局样式造成污染,我们往往都会加入scoped属性用来限制样式的作用域,然而这也会导致当我们修改部分ui组件样式失效。为了避免这种情况,我们常用以下方式来解决。

新建一个不含scoped的style标签覆盖组件样式

不推荐使用,因为如果命名冲突会导致其他样式覆盖异常

<style scoped>
    /*页面样式*/
</style>
// ui组件覆盖
<style>
  .home .ivu-card-body {
    height: 345px;
  }
</style>

深度作用选择器( >>> )

<style scoped>
.box >>> .content {
  font-size:20px;
}
</style>

/deep/ 预处理器less下使用

深度选择器/deep/与>>>作用相同

<style scoped lang="less">
.select {
     /deep/ .ivu-card-body {
        width: 100%;
      }
    }
</style>

然而最近谷歌浏览器对于/deep/貌似不太友好,控制台提示/deep/将要被移除。

[Deprecation] /deep/ combinator is no longer supported in CSS dynamic profile.It is now effectively no-op, acting as if it were a descendant combinator. /deep/ combinator will be removed, and will be invalid at M65. You should remove it. See https://www.chromestatus.com/features/4964279606312960 for more details.

所以我们也可以在less下另类调用>>>,如下:

// 采用的less的转义和变量插值
<style scoped lang="less">
@deep: ~'>>>';
.select {
     @{deep} .ivu-card-body {
        width: 100%;
      }
    }
</style>

Element-ui与IView中的样式覆盖问题

在合作开发时,在大哥定好全局样式之后,我们个人页面的开发中是不可以影响到全局样式的,是不可以的!(不然会被骂的,就算不被骂,当你辛辛苦苦改出一个样式的时候,一回头,发现你没动,但是样式却变了,你恼火么,我很恼火!)所以在开发自己的页面时,规定样式范围很重要。所以今天我们来讲一下这个虽然很小但是很重要的知识点。

在进行自己页面开发需要独立样式时请这样使用

scoped字段的意义就是相当于你在控制你的<div>容器时为了唯一识别而给他的一个id比如<div id="xxxx">。当你给style加上scoped时,在编译之后样式就会带上自己的id比如

这样子之后,这个样式就只属于这个页面了,不会影响到全局的样式。

当然,在自己编写的容器中我们可以直接定义,但是在我们使用了其他的UI组件之后,我们会发现,在scoped中改变的样式并不能影响到样式了。因为我们是在全局中对其样式进行引入的,所以在自己规定的小区域内的改变并不能影响到他,但是直接写一个<style></style>在这里面进行修改则又会影响到全局的样式。接下来我们讲一下解决方法。

在Element-UI中覆盖样式

Element-UI跟IView覆盖的方式有点不同。在对Element-UI的样式进行覆盖时,我们需要在

中进行全局影响,而不可以在

中进行修改。如果有需要的话,写两个,一个带scoped,一个不带也是可以的。

之后我们在Element-UI的组件上给他加一个父层样式选择器

然后在样式中这样进行覆盖

这样做,在进行样式判断的时候会顺着层次顺序,只修改fatherclass下面的dialog的样式,这样就影响不到全局的样式了。

在IView中覆盖样式

IView中,则需要在外层套接一个容器,直接在组件上增加父层样式选择器是不起作用的。

具体做法如下

我们在组件外面套接了一层自己的容器,之后进行样式改变

这样就成功了!可喜可贺,可喜可贺!

TIP:

1.定义的父层样式选择器可以不进行样式的编写,因为他们只是为了方便我们定义一个固定的影响区域。

2.如何找到我需要修改的样式名称

打开控制台,去页面上寻找

之后在

去寻找你需要修改的样式,调节好之后直接把样式复制到你的代码中就可以了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vue 组件中添加样式不生效的解决方法

    如何产生 在开发项目中遇到在组件中添加样式不生效的情况.具体场景如下 //// vue 组件 <template> <div class="box" data-v-33f8ed40></div> <template> //我用js在上面div标签中插入一个<p class='text'>text goes here</p> <script> export default { ... mounted(){

  • Vue项目中使用iView组件库设置样式不生效的解决方案

    目录 使用iView组件库设置样式不生效问题 解决使用iview或者element-ui组件修改样式不生效 1.样式如果定义为 2.样式如果没有定义 使用iView组件库设置样式不生效问题 找到要设置样式的类名,直接按照下面写法设置就可以了! <style lang="less" scoped> @deep: ~'>>>'; @{deep}.ivu-transfer-operation {     visibility: hidden !important

  • vue中vant组件样式失效问题及解决

    目录 vant组件样式失效 通常有以下几种解决方法 修改vant组件样式 vant组件样式失效 vue项目中引入vant组件,若发现vant组件样式失效 通常有以下几种解决方法 方法一:引入全局样式   在引入vant组件的地方或者全局引入vant组件所有的样式,引入方法为:在vue引入vant的页面中,添加以下代码: import 'vant/lib/index.css' 这样可以引入vant全部样式,不过通常我们可以按需引入,如法二,局部引入部分样式即可. 方法二:局部引入样式   顾名思义

  • vue中element组件样式修改无效的解决方法

    如下所示: <style> .detail{ .el-input__inner { height: 48px; } } </style> 直接写style注意不加scoped,然后用一个组件最外层的class包裹住,就不会改到所有的组件的样式了. 以上这篇vue中element组件样式修改无效的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: Vue 组件间的样式冲突污染 浅谈vue中改elementUI默认样式引发的st

  • 关于iview和elementUI组件样式覆盖无效问题及解决

    目录 iview和elementUI组件样式覆盖无效 新建一个不含scoped的style标签覆盖组件样式 /deep/ 预处理器less下使用 Element-ui与IView中的样式覆盖问题 在Element-UI中覆盖样式 在IView中覆盖样式 iview和elementUI组件样式覆盖无效 iview和elementUI是我们在用vue开发项目时比较常用到的ui组件,在我们使用第三方UI组件库开发时有时需要对这些组件进行一些样式修改. 为了vue页面样式模块化,不对全局样式造成污染,我

  • Vue模板内引入的组件样式覆盖失效原因及解决

    目录 模板内引入组件样式覆盖失效 问题原因 解决方案 vue样式被覆盖问题 模板内引入组件样式覆盖失效 作为一名刚接触Vue的菜鸟, 开发过程中遇到一些小坑又很难搜索的到, 还是记录下来. 分享给有遇到过类似问题的人. Vue项目中假设用到Vant.js这个UI库, 具体引入组件啥的我就不详细说了, 直接看代码: <template>   <div class="login">     <my-btn type="default">

  • 关于element-ui resetFields重置方法无效问题及解决

    目录 element-ui resetFields重置方法无效 情况1.el-form-item没有加上prop属性 情况2.在mounted之前给表单赋值(mounted DOM未挂载完成) 解决办法 element-ui表单重置函数resetFields();使用注意事项 element-ui resetFields重置方法无效 目前发现resetFields(),有以下两种情况可能会导致失效: 情况1.el-form-item没有加上prop属性 需要重置的表单项el-form-item必

  • vue element-ui 绑定@keyup事件无效的解决方法

    解决办法: <el-input v-model="searchParmas.gameName" placeholder="游戏名称" class="w120" @keyup.native="getGameList(searchParmas.gameName)"></el-input> 加上.native覆盖原有封装的keyup事件即可. 以上这篇vue element-ui 绑定@keyup事件无效的解

  • Vant中List组件immediate-check=false无效的解决

    目录 Vant中List组件immediate-check=false无效 问题场景 解决方法 Vant list组件使用的坑 总结 Vant中List组件immediate-check=false无效 使用vant中的List组件时,会有这样的场景 初始化时想自己触发列表查询,而不想触发 List 组件自带的 load 方法,这时可以设置 immediate-check=false,如下代码,但是这种方式会在下面的场景中出现问题 <van-list ref="vanlist"

  • vue对插件(iview,elementui,treeselect)样式的局部修改方式

    目录 (iview,elementui,treeselect)样式的局部修改 学习描述 具体方法 vue+iview 样式穿透-修改第三方插件样式 修改第三方插件样式 (iview,elementui,treeselect)样式的局部修改 学习描述 在vue的使用过程中,我们知道插件的使用可以大大的提高我们的开发效率,这写插件都是经过很多人的验证和修改的,要比我们自己写方便的很多. 但是在开发的过程中,有些插件一些在特定的页面我们可能不要原来的样式,需要进行修改.然而我们在使用vue的过程中都会

  • vue中element-ui组件默认css样式修改的四种方式

    目录 前言 1.使用全局统一覆盖 2.在.vue文件中修改 3.修改组件的style样式 4. 参考element-ui官方文档的api 疑问 总结 前言 修改element-ui组件的默认样式一直是一个老生长谈的话题,在做完公司的一整个项目后,我总结了以下4种修改element-ui默认样式的方法. 1.使用全局统一覆盖 针对一些通用的.样式固定的组件,可以全局处理,其方法是新建一个css或者scss文件,覆盖element原有的class 你可以在src/styles目录下新建一个eleme

  • 使用ElementUI修改el-tabs标签页组件样式

    目录 ElementUI修改el-tabs标签页组件样式 效果图 ElementUI的el-tabs标签页样式冲突问题 修改样式即可 ElementUI修改el-tabs标签页组件样式 官方示例:https://element.eleme.cn/#/zh-CN/component/tabs 效果图 <el-tabs v-model="activeName" @tab-click="handleClick" :stretch="false"

  • 基于element-ui组件手动实现单选和上传功能

    前言 在用户使用过程中提出一键导入的功能,需求如下:点击导入按钮显示提示框,然后是单选框以及上传按钮.pc端常使用element-ui组件,但是这个项目是vue1的老项目,并且没有element-ui组件.所以需要自己动手实现单选功能和上传功能. radio 属性及方法 name: 用于定义同一类型的 radio 同一 name 的 radio 只能选中一个(单选实现) id: 用于和 label 标签关联起来 实现点击 label 标签内的元素也能选中 radio value:单选按钮的值,选

随机推荐