修改elementUI样式未生效问题(挂载到了body标签上)

news2024/11/19 17:29:04

修改挂载到body标签上elementUI样式问题

目录

  • 修改挂载到body标签上elementUI样式问题
  • 前言
  • 一、适用范围
  • 二、示例
    • 1.目标
    • 2.实现思路
      • 修改自带样式方法
      • 最后看效果
  • 总结


前言

在使用element-ui库的时候,有时会需要修改它自带的css样式,组件模块化化编程时一般会用到/deep/方法进行样式穿透修改,但有些情况/deep/方法也会失效,针对这些情况,下面就以修改elementUi中的DateTimePicker时间选择器组件样式来讲一下自己的心得。


提示:以下是本篇文章正文内容

一、适用范围

1、修改elementUI自带样式
2、/deep/深穿透样式修改方法失效
3、不污染全局样式

二、示例

1.目标

假设业务需要一个只带年、月、日、时的时间选择器(如下图
在这里插入图片描述

2.实现思路

首先在element-ui库中进行匹配寻找,发现没有与之完全一致的模型,为了省时,可以选择一个比较接近的模型进行ui改造,这里我选择的是 el-date-picker时间选择器

首先看下它本身的样式
在这里插入图片描述

代码如下:

  <div>
    <el-date-picker
      v-model="value1"
      type="datetime"
      placeholder="选择日期时间">
    </el-date-picker>
  </div>

修改自带样式方法

  • 找到编译后element-ui给本时间选择器定义的div盒子类名(见下图)

  • 因为不需要图中分和秒这两列,所以我们可以在本组件的单独的样式文件中标签中修改为自己需要的样式

在这里插入图片描述

先来个错误示范

  • 利用 /deep/ 方法进行样式穿透修改本时间选择器样式
    代码如下(示例):
<style scoped lang="less">
/deep/.el-picker-panel {
  .el-time-spinner{
    .el-time-spinner__wrapper {
      width: 100% !important;
    }
  }
}
</style>

这样做后发现我们所修改的样式并未生效,原因是因为DateTimePicker 下拉框 最终是直接挂载到body标签上,也就是说它与我们的子组件都是并列关系,所以我们在定义它的子组件中修改它的样式会失败。

接下来展示正确做法
可以在element-ui 中看到DateTimePicker的Attributes中存在一个popper-class属性,官方介绍中可以利用它可以给DateTimePicker 下拉框的设置类名

<template>
  <div class="home">
    <el-date-picker
      v-model="value1"
      format="yyyy-MM-dd H"
      value-format="yyyy-MM-dd H"
      type="datetime"
      placeholder="选择日期时间"
      popper-class='myDatePicker'>
    </el-date-picker>
  </div>
</template>

<script>
export default {
  name: "Home",
  data() {
    return {
      value1:''
    }
  },
};
</script>

<style scoped lang="less">
// 此处写本组件样式
</style>

<style lang="less">
/* 注意此处没有添加scoped属性,所以全局生效,但是有类名限制,不会与其他类样式冲突 */
.myDatePicker {
    .el-time-spinner__wrapper{
      width: 100% !important;
    }
}
</style>

最后看效果

在这里插入图片描述

样式生效,完结撒花。

总结

1、修改element-ui库中直接挂载到body上的组件样式时,需在全局样式中进行修改,不能在受scoped作用域限制的子组件样式中修改
2、如果此组件会用到多次,且每次都需不同的样式,那么务必给它设置一个独立的类名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/409153.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Vue3中的响应式原理】

Vue3响应式原理 在Vue2的响应式中&#xff0c;存在着新增属性&#xff0c;删除属性以及直接通过下标修改数组&#xff0c;但页面不会自动更新的问题。但是在Vue3中&#xff0c;这些问题都得以解决。 Vue2中的响应式原理 首先我们先看一下Vue2中的响应式原理&#xff0c;其次…

vantUI van-picker中的column使用,picker选择器展示对象数组里面的属性,自定义展示数据

项目场景&#xff1a; 需要VantUI实现的功能 问题描述 vant中的picker选择器&#xff0c;只能用这种数组&#xff0c;来展示数据 columns: [‘杭州’, ‘宁波’, ‘温州’, ‘绍兴’, ‘湖州’, ‘嘉兴’, ‘金华’, ‘衢州’], 往往我们的请求数据&#xff0c;都是这样的。对…

::before和::after是什么?

本文从最简单的开始&#xff0c;解释如何理解和使用::before和::after。然后再在实际使用场景中去应用它。 ::before和::after可以添加到选择器以创建伪元素的关键字。伪元素被插入到与选择器匹配的元素内容之前或之后。 content属性 1&#xff09;::before和::after下特有的c…

图文详解vue.js devtools插件使用方法

Vue.js devtools 背景简介 我们chrome插件网之前介绍过Vue.js devtools&#xff0c;是基于google chrome浏览器的一款调试vue.js应用的开发者浏览器扩展&#xff0c;可以在浏览器开发者工具下调试代码。做前端开发的IT工程师应该比较熟悉这款工具&#xff0c;可以边侧边栏窗格…

【前端写java接口】前端用java写一个简单的后端接口并和前端交互数据【以前端角度解释,详细注释,谁都看得懂】

先声明&#xff1a; 我不是做后端的&#xff0c;我是前端的&#xff0c;然后想要做一个后端的接口平常用来测试测试前端的页面&#xff0c;所以百度加上看看视频学了几天&#xff0c;简单的做一个&#xff0c;可能很多不专业的地方&#xff0c;后端小哥们别太严格哈&#xff0…

【react】什么是fiber?fiber解决了什么问题?从源码角度深入了解fiber运行机制与diff执行

壹 ❀ 引 我在[react] 什么是虚拟dom&#xff1f;虚拟dom比操作原生dom要快吗&#xff1f;虚拟dom是如何转变成真实dom并渲染到页面的?一文中&#xff0c;介绍了虚拟dom的概念&#xff0c;以及react中虚拟dom的使用场景。那么按照之前的约定&#xff0c;本文来聊聊react中另一…

Vue中实现清空数组和清空el-table

场景 要实现的效果是 那么就要用到怎样将这个el-table清空&#xff0c;即在vue中怎样将数组清空。 注&#xff1a; 博客&#xff1a;霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 …

JavaScript 教程 (详细 全面)

文章目录JavaScript 是什么&#xff1f;JavaScript 简介1. JavaScript 的历史2. JavaScript 与 ECMAScript 的关系3. 如何运行 JavaScript4. JavaScript 具有以下特点Node.js 是什么&#xff1f;Node.js 简介1. 运行时是什么&#xff1f;2. Node.js 的诞生3. Node.js 的组成4. …

uniapp实现上拉加载更多

目录 一、添加全部 1.在主页面中添加一列 2.改云函数 3.插件市场导入 加载中组件 二、实现上拉加载 1.云函数中可以接收参数 2.获取下拉事件 3.写触发这个下拉干嘛 在 显示加载中的组件里面 一、添加全部 1.在主页面中添加一列 data.unshift({name:全部}) //添加一列 …

尚品汇项目笔记(持续更新中)

项目网络教学视频链接&#xff1a;尚硅谷VUE项目实战&#xff0c;前端项目-尚品汇(大型\重磅)_哔哩哔哩_bilibili 目录 一、 使用vue-cli脚手架去初始化项目 二、项目的其他配置 三、项目路由分析 四、创建Header和Footer非路由组件 五、完成路由组件的搭建 六、利用【路…

uniapp使用iconfonts图标不显示以及颜色问题

在uniapp中使用阿里的iconfont图标遇到了图标无法显示出来的问题&#xff0c; 以及图标显示了但是为一个小正方形的问题&#xff0c; 同时包括图标颜色不显示的问题。 以下方式解决了这三个问题&#xff08;适用class方式引入&#xff09; 1&#xff0c;iconfont图标的引入…

C++实现爬虫,深入理解爬虫原理(最详细,最简单的教程)

前言: 我目前主要学习方向是c,看到网上基本上都是用python写的爬虫,我也试过,确实非常方便,几行代码就能解决,但却就是因为python封装的太好,过于简单,使得很多人包括我最开始的时候,都很难理解爬虫原理.所以就想着能不能用c实现一个简单的爬虫. 最后我成功实现C版爬虫从某图…

vue执行配置选项npm run serve的本质

vue执行配置选项npm run serve运行开发服务器的本质 目录 vue执行配置选项npm run serve运行开发服务器的本质 一、启动开发服务器、调用“工具链”、编译、并运行当前工程 二、npm run serve内部原理分析 三、vue编译运行过程 喜欢的&#xff0c;就收藏并点个赞&#xff…

前端解决跨域问题(9个方法)

什么是跨域&#xff1f; 跨域&#xff0c;是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的&#xff0c;是浏览器对JavaScript实施的安全限制。 这里说明一下&#xff0c;无法跨域是浏览器对于用户安全的考虑&#xff0c;如果自己写个没有同源策略的浏览器&a…

微信小程序篇_01 微信小程序与Java后端接口交互

微信小程序与Java后端接口交互准备创建后端项目创建小程序项目本文主要介绍小程序前后端数据的交互&#xff0c;实践演示。 准备 创建后端项目 我这里就创建一个SpringBoot项目作为演示。 在创建项目中选择Spring Initializr 要勾选SpringWeb框架&#xff0c;当然你也可以…

在html页面以导入的方式使用axios进行异步请求

一、下载axios GitHub地址&#xff1a;https://github.com/axios/axios 注&#xff1a;该页面下面有官方的帮助文档内容。 下载zip包到本地后解压 在axios-1.x\dist\esm下找到axios.min.js文件 这个文件就是后面需要导入的文件 二、导入文件 首先在IDEA中的webapp文件夹下…

使用 Vue3 开发了四个月,回顾 emit 的用法

前言&#xff1a;不知不觉已经从 React 转 Vue3 开发四个多月了&#xff0c;但其实自从刚接触 vue 开始&#xff0c;就对 emit 这个指令似懂非懂。所以在项目中其实我还是很害怕去使用这个指令的&#xff0c;但是在有些场景又不得不使用&#xff0c;就只能看着同事的代码比葫芦…

Vue的环境配置

vue环境配置安装地址&#xff1a;安装 — Vue.js 一、Node官网地址&#xff1a;下载 | Node.js 中文网 查看node版本∶打开命令工具&#xff0c;执行"node -v"命令查看版本号。 二、git-bash命令行工具 git-bash命令行工具官网地址&#xff1a;Git 查看git版本&#…

【Vue】跳转外部链接并携带参数并触发

需求&#xff1a; 当平台运行多个系统时&#xff08;"系统一"&#xff0c;"系统二" 都是不同时间段开发的&#xff09; 可以从"系统一"点击按钮跳转到"系统二"&#xff0c;并且完成 "系统二" 登录操作&#xff0c;直接显示&…

【小程序项目开发 --- 京东商城】 启航篇之uni-app项目搭建

&#x1f935;‍♂️ 个人主页: 计算机魔术师 &#x1f468;‍&#x1f4bb; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f310; 推荐一款找工作神器网站: 点击跳转牛客网 |笔试题库|面试经验|实习招聘内推| 还没有账户的小伙伴 速速点击链接…