位置: 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盒子边框圆角)

  • 进项税额转出要交企业所得税吗
  • 什么情况下需要补牙
  • 金税盘当月不抵扣如何做分录
  • 报完税的发票还能作废吗
  • 销项税现金流量指定
  • 即征即退项目的进项税额不参与加计抵减
  • 进项税额转出怎么算
  • 股东放弃公司债权
  • 企业所有职工都要交税吗
  • 个人独资企业变更投资人要交税吗
  • 资产处置收益结转损益
  • 未分配利润转增股本需要交税吗
  • 国税开增值税专票怎么开
  • 正在注销的公司微信收的款怎么追回
  • 信用证和银行承兑汇票的区别如何做分录
  • 土地闲置费能否扣除
  • 出口退税进项税额转出的计算
  • 初级考试备考计划
  • 净利润和毛利润的计算公式
  • 园林工程的范围包括哪些?
  • 小微企业行业划分标准 工信部
  • 应收账款计提坏账准备是根据什么会计信息质量要求
  • 银行收到退款怎么回复
  • win7系统网络一直转圈,什么都打不开
  • 做胃镜多少钱了
  • 电商平台第三方服务
  • PHP:Memcached::isPristine()的用法_Memcached类
  • 职工薪酬可能计入什么科目
  • 明细分类帐户
  • 网速慢是什么情况
  • 强制划缴税款
  • el-table-column formatter
  • 布鲁克顿的一只狗叫什么
  • 应收账款占用资金的应计利息变动额
  • vue路由使用方法
  • 老税号的发票还能认证吗
  • dhclient卡住
  • insg命令
  • 外埠存款通过哪个会计账户核算?
  • 增值税是在年末怎么处理
  • 记账复核是谁
  • 应交税费未交增值税
  • 电梯销售公司利润
  • vue生命周期钩子函数
  • 个体工商户税收起征点是多少?
  • 生产成本中制造费用中包括哪些?
  • 段云简介
  • 法人向公司账户打款
  • 成立业主委员会申请书
  • 代缴车险
  • 冲销管理费用如何做分录
  • 坐车时的保险费怎么算
  • 给职工发放的米面油记入什么
  • 收到保险公司的赔款计入什么科目
  • 简易征收租赁税率3还是5
  • 企业的固定资产由于技术进步等原因
  • 固定资产标准提高是政策变更吗
  • 明细账要如何做账
  • fedora安装apt
  • 卸载win+r
  • centos5.10安装
  • rpm格式如何安装
  • xp系统不能正常启动怎么修复
  • 电脑系统脚本错误
  • dos打开usb端口
  • python加密模块
  • ug语法错误
  • 鼠标焦点离开触发查询
  • js深度拷贝的方法
  • js中的onchange
  • jQuery Mobile和HTML5开发App推广注册页
  • python编写下载器
  • 关于使用RequestWindowFeature为啥一定要在setContentView之前调用
  • javascript面向对象编程
  • android sdk location should not contain
  • 广东国税局发票查询平台
  • 征求意见稿 讨论稿 送审稿
  • 进口柴油消费税是多少
  • 选矿比怎么算
  • 国税申报时间2023年10月
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设