位置: IT常识 - 正文

vue3项目使用样式穿透修改elementUI默认样式(vue3.0用法)

编辑:rootadmin
vue3项目使用样式穿透修改elementUI默认样式 一、样式模块化

推荐整理分享vue3项目使用样式穿透修改elementUI默认样式(vue3.0用法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue3项目实战,vue3项目实战,vue3.0用法,vue在项目中怎么用的,vue在项目中怎么用的,vue3使用教程,vue3.0项目,vue3.0使用,内容如对您有帮助,希望把文章链接给更多的朋友!

在css单文件中,我们在style标签中写组件的样式,可以看到,一般style标签都会带上一个scoped属性,这样可以实现及时不同组件选择器一样,但是样式互不干扰。 看一个例子,我们在两个组件中都定义一个hello-world-box类,在对应的scope标签中设置不同的样式。

可以看到,vue为我们在不同的组件中的标签上加上了一个独有的属性(PostCSS转译实现)。然后通过属性选择器,实现不同属性的标签样式互不干扰。

css属性选择器的作用是:为带有特定属性的 HTML 元素设置样式

.hello-world-box[data-v-e17ea971] { color: red;}

这也是style标签scoped属性实现样式模块化的原理。 当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,也就是说,该样式只能适用于当前组件元素。通过该属性,可以使得组件之间的样式不互相污染。如果一个项目中的所有style标签全部加上了scoped,相当于实现了样式的模块化。

二、样式穿透实现vue3项目使用样式穿透修改elementUI默认样式(vue3.0用法)

了解了vue中样式模块化的实现,进入正题,如何实现自定义elmentUI组件库中组件的样式呢? 这其实也是比较常见的需求,因为有的UI图并不是使用element组件库的组件画的,所以样式上肯定存在偏差。 我们来看看el-table 可以看到,element组件的样式都是通过外部样式文件实现的,所以对应的标签上并没有vue加上的属性。 那么我们直接在使用elment组件的组件中加上样式,是不会生效的,外部导入的样式文件优先级更高。

1、外部css文件

我们可以自己定义一个css文件,然后书写对应的要修改的样式。 例如:styles.css 在入口文件main.js中引入: 这里注意引入elment css文件和自定义css文件的引入顺序,因为css样式生效是后来者居上的。 生效了。 但是这样其实是存在问题的: 样式文件影响了所有组件,也就是我们在其他页面中调用这个组件,样式也被修改了。 解决办法之一就是在组件对应的类上在包上一层自定义的类名。

2、:deep()

:deep():改变css解析时私有属性的位置

.outer { .el-input__inner { // 此时css解析的为 .outer .el-input__inner[data-v-xxxx] 样式无效 background: pink; } :deep(.el-input__inner) { // 此时css解析的为 .outer[data-v-xxxx] .el-input__inner 样式生效 background: red; }}3、:slotted()

:slotted():在子组件定义样式插槽内容样式

默认情况下,作用域样式不会影响到 <slot/> 渲染出来的内容,因为它们被认为是父组件所持有并传递进来的。

<template> <div> <slot>插槽</slot> </div></template><style lang="less" scoped>:slotted(.red) { color: red;}</style>4、:global()

:global() :全局选择器,定义全局样式,不用单开一个没有scoped的style。

<style scoped>:global(.red-box) {color: red;}</style><!-- 等效于 --><style> .red-box{ color:red }</style>5、动态css(v-bind)

vue3单文件组件的 <style> 标签支持使用 v-bind CSS 函数将 CSS 的值链接到动态的组件状态,也就是我们可以在style标签中引入script标签中的响应式变量:

<template> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="date" label="Date" width="180" /> <el-table-column prop="name" label="Name" width="180" /> <el-table-column prop="address" label="Address" /> </el-table></template><script lang="ts" setup>import { ref } from 'vue';const tableData = [ { date: '2016-05-03', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', }, { date: '2016-05-02', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', }, { date: '2016-05-04', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', }, { date: '2016-05-01', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', },]const redColor = ref('red')</script><style scoped>.el-table { color: v-bind(redColor);}</style>

可以看到,即使在带scoped的style标签中,样式穿透也生效了。

实际的值会被编译成哈希化的 CSS 自定义属性,因此 CSS 本身仍然是静态的。自定义属性会通过内联样式的方式应用到组件的根元素上,并且在源值变更的时候响应式地更新。 参考vue官网:单文件组件 CSS 功能

本文链接地址:https://www.jiuchutong.com/zhishi/295283.html 转载请保留说明!

上一篇:基于Selenium+Python的web自动化测试框架(附框架源码+项目实战)(基于Selenium的自动化测试平台设计与实现)

下一篇:html--盒子的边框属性(border)(html盒子边框圆角)

  • 小米手机怎么查保修期(小米手机怎么查看激活日期)

    小米手机怎么查保修期(小米手机怎么查看激活日期)

  • 红米手表2可以下载微信吗(红米手表2可以回复微信吗)

    红米手表2可以下载微信吗(红米手表2可以回复微信吗)

  • 微信mac版本是什么(微信mac版和windows版有什么区别)

    微信mac版本是什么(微信mac版和windows版有什么区别)

  • 如何去除手机qq浏览器广告(如何去除手机前置摄像头水雾)

    如何去除手机qq浏览器广告(如何去除手机前置摄像头水雾)

  • 笔记本rtx2060相当于台式机什么显卡

    笔记本rtx2060相当于台式机什么显卡

  • 华为10lite是什么型号(华为honor10lite什么型号)

    华为10lite是什么型号(华为honor10lite什么型号)

  • 打印机只能复印不能打印怎么回事(打印机只能复印彩色不能复印黑白)

    打印机只能复印不能打印怎么回事(打印机只能复印彩色不能复印黑白)

  • 苹果已购买的项目隐藏了怎么找出来(苹果已购买的项目怎么退订)

    苹果已购买的项目隐藏了怎么找出来(苹果已购买的项目怎么退订)

  • 打印机深度睡眠打印不了怎么办(打印机深度睡眠什么意思)

    打印机深度睡眠打印不了怎么办(打印机深度睡眠什么意思)

  • 怎么在两个表格中找出相同的部分(怎么在两个表格之间打字)

    怎么在两个表格中找出相同的部分(怎么在两个表格之间打字)

  • 小米6可以直接换外屏吗(小米可以直接喂鱼吗)

    小米6可以直接换外屏吗(小米可以直接喂鱼吗)

  • ipad不贴膜会被刮花吗(ipad不贴膜会被pencil刮花吗)

    ipad不贴膜会被刮花吗(ipad不贴膜会被pencil刮花吗)

  • 京东红包会过期吗(京东红包会过期退回吗)

    京东红包会过期吗(京东红包会过期退回吗)

  • 苹果13系统怎么长截图(苹果13系统怎么解id)

    苹果13系统怎么长截图(苹果13系统怎么解id)

  • word行号怎么设置(word行号怎么设置成40行)

    word行号怎么设置(word行号怎么设置成40行)

  • 怎么关掉电动牙刷(怎么强制关掉电动牙刷,关了又向,怎么办?)

    怎么关掉电动牙刷(怎么强制关掉电动牙刷,关了又向,怎么办?)

  • 手机流量被限速了怎么恢复(手机流量被限速了怎样解除)

    手机流量被限速了怎么恢复(手机流量被限速了怎样解除)

  • 防蹭网手机里怎么设置(防蹭网手机怎么设置wifi隐藏)

    防蹭网手机里怎么设置(防蹭网手机怎么设置wifi隐藏)

  • 千牛保证金在哪里交(千牛保证金在哪里交电脑)

    千牛保证金在哪里交(千牛保证金在哪里交电脑)

  • word截图快捷键ctrl加什么(word截图快捷键ctrl加什么保存)

    word截图快捷键ctrl加什么(word截图快捷键ctrl加什么保存)

  • Win7纯净版怎么打开光盘映像文件?Win7纯净版打开光盘映像文件方法(win7纯净版怎么联网)

    Win7纯净版怎么打开光盘映像文件?Win7纯净版打开光盘映像文件方法(win7纯净版怎么联网)

  • vue3-setup语法糖之组件传参(defineProps、defineEmits、defineExpose)(vue3setup语法糖如何定义realtive数据)

    vue3-setup语法糖之组件传参(defineProps、defineEmits、defineExpose)(vue3setup语法糖如何定义realtive数据)

  • 房产税的税收优惠政策
  • 计提租赁费用
  • 乙方向甲方开具增值税专用发票
  • 未达起征点的税金如何做账
  • 委托开发的定义
  • 事业单位注销税务登记
  • 取得失控发票
  • 三栏式明细分类账的账页格式适用于
  • 暂估入库已结转怎么处理
  • 商业收入会计分录
  • 快递公司结算员工作量大不大
  • 公允价值变动税务处理
  • 超过五千
  • 售楼部购买空调计入哪个科目
  • 待认证发票后面需要做附件吗
  • 小企业会计准则科目
  • 所得税申报表中利润总额是怎样算出来的
  • 代为持股有没有法律效应
  • 宣传活动物资
  • 固废处理计入什么会计科
  • 红色手撕发票怎么看金额
  • 收到财政奖励扶持资金账务处理?
  • 如何防止程序被关闭
  • 应收账款期初余额是借还是贷
  • 关于临时工工资标准的规定
  • win10声音设置面板在哪
  • 现金日记账漏记去年的利息怎么算
  • 冲销上月计提费用
  • 酒店免费提供哪些服务
  • 支付工资属于费用吗
  • php stl
  • php和ajax
  • 企业解除人员什么意思
  • 专家评审费发放新规定2023
  • 水费里的代收费用是什么意思
  • ml神经网络
  • php输出空格语句
  • 汇算清缴有问题怎么办
  • 帝国cms栏目没有了
  • 增值税进项加计抵减账务处理
  • 非正常户是黑名单吗
  • 什么是国有划拔土地私房
  • 无偿提供建筑服务账务处理
  • sql查询语句怎么用
  • 小规模纳税人自行开具增值税专用发票税率
  • 公司购车购置税可以抵扣吗
  • 新政府会计制度下,属于资产类科目的是
  • 专利财政补贴
  • 支付货款退回如何处理
  • 高速公路通行费抵扣税率
  • 支付的员工餐费怎么记账
  • 汽车加油费属于交通费用吗
  • 所得税 补缴
  • 长期待摊费用摊销计算公式
  • 农民专业合作社属于什么经济类型
  • 建筑工程行业前景
  • 流动资产周转率计算公式
  • mysql缩印
  • sql基本教程
  • sqlserver 触发器 if 后边没执行
  • winxp如何打开控制面板
  • win7如何开启蓝牙功能
  • xp怎么改密码怎么设置
  • 苹果的mac怎么查
  • win8操作中心怎么关闭
  • win8开始界面如何设置成win7
  • 32位win7安装
  • win10系统笔记本怎么连接wifi
  • windows8c盘满了怎么清理
  • 2015-04-04---CCAction详解(欠了大家好几天了)
  • android base64传图片
  • linux文件压缩和备份实验
  • Unity3D游戏开发标准教程
  • unity笔记本
  • js当前时间格式化
  • python mem
  • 电子税务局改版
  • 小规模纳税人能开9个点的发票吗
  • 北京第三税务所咨询电话
  • 河南省国家税务局发票查询官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设