如何使用Vue scoped和deep

众所周知,在组件中给style 标签添加属性 scoped 属性可以避免组件内样式对外界造成污染,scoped使得组件内的样式变成局域样式,只作用于当前组件。

原理如下——-

在编译组件的时候,如果当前组件内style标签上有scoped属性,那么会在当前所有标签上添加一个【data-v-hash】属性,而当前样式表内的所有末尾选择器后面也会加上该属性,那么就使得当前组件内的样式只会作用于当前组件内的元素。值得注意的是,当父组件,子组件同时使用scoped属性时,子组件最外层的标签既会被加上当前组件的hash值,又会加上父级组件的hash值,像这样

//子组件最外层标签
<div data-v-b45036b2 data-v-384b136e ></div>

但是有个问题——

在我们用scoped的时候回发现一个问题,就是我们在当前组件内使用的scoped,但是我想在当前组件内改变子组件的样式(非最外层标签),的时候会发现不好使。

<style scoped>
.father-div .child-div{color:red;}
</style>

因为到了浏览器上会解析成

<div data-v-384b136e ></div> 

不好使的原因是应为父组件内样式内解析的是父组件的hash值,而子组件内标签上添加的是子组件的hash值,对应不上当然没效果,那怎么解决呢?

使用deep——

当遇到这种困扰的时候我们可以另写一个style标签,然后不加scoped属性,来盖子组件的样式,当前这么写是可以的,但是不太优雅,这时我们可以用到/deep/属性,

.father-div /deep/ .child-div{color:red;}

当遇到"/deep/"的时候会将"/deep/"的位置替换成组件的hash值,解析成

.father-div[data-v-b45036b2] .child-div{color:red;}

这样只需要注意css的权重就可以覆盖子组件内的样式了,

注意:子组件内最外层的样式由于是带了父子组件的两个hash值,所以是会被两头控制的,不需要/deep/就可以在父组件内覆盖样式

原创文章,作者:OGMOD,如若转载,请注明出处:http://www.wangzhanshi.com/n/15172.html

(0)
OGMOD的头像OGMOD
上一篇 2025年1月2日 12:15:22
下一篇 2025年1月2日 12:16:01

相关推荐

  • 使用PHP函数进行网站性能监控和优化的代码示例

    引言 在构建一个高效、稳定的网站时,性能监控和优化是非常重要的一环。在 PHP 中,有许多内置函数和工具可以帮助我们实现网站的性能监控和优化。本文将介绍几种常用的 PHP 函数,并…

    php 2024年12月17日
  • php7的特性有哪些

    新特性预览 ZEND引擎升级到Zend Engine 3,也就是所谓的PHP NG 增加抽象语法树,使编译更加科学 64位的INT支持 统一的变量语法…

    2025年1月1日
  • PHP7新增了哪些运算符

    NULL 合并运算符其实是三元运算符的改造,减少的代码量 //原先的做法 //$lig = isset($_GET['lig'])?$_GET['li…

    2025年1月1日
  • PHP 8存在着哪些新特性

    PHP 8新特性 新的主要PHP版本PHP 8预计将于2020年底发布。它现在处于非常活跃的开发阶段,所以在接下来的几个月里,事情可能会发生很大的变化。 在这篇文章中,我将持续更新…

    php 2025年1月2日
  • 详解PHP做api开发时如何设计签名验证

    在PHP API开发中,签名验证是一种重要的安全机制,用于确保请求的来源合法性和数据的完整性。本文将介绍如何设计和实现PHP API中的签名验证功能,并注重代码的质量和可读性。 1…

    php 2024年12月17日
  • php5是什么意思

     2004年7月,PHP5正式版本的发布,标志着一个全新的PHP时代的到来。它的核心是第二代Zend引擎,并引入了对全新的PECL模块的支持。 尽管PHP4的发展是如此迅…

    php 2025年1月2日
  • PHP7.1新功能之Nullable Type怎么用

    具体如下: 在 PHP5 时代,PHP 的参数已经支持 type hint(除了基本类型),想必大家应该很熟悉;后来 PHP7 时代来临,PHP 也可以指定返回值的类型(以及基本类…

    php 2025年1月1日
  • PHP脚本设置无限执行时间的四种方法

    为 PHP 脚本设置无限执行时间是一个在特定场景下可能需要的操作,比如执行长时间运行的后台任务、数据迁移、大批量数据处理等。然而,值得注意的是,设置无限执行时间并不是一种推荐的做法…

    php 2024年12月17日
  • PHP7中如何使用数组延展操作符

    数组延展操作符 (PHP 7.4) 该特性可以实现以下功能: $abc = range('a', 'c'); …

    php 2025年1月1日
  • PHP5中怎么安装Apache

      PHP5在Apache下的两种模式怎么安装   一、CGI模式   1、解压php-5.0.0-Win32.zip到x:\php,重命名php.ini-dist为php.ini…

    php 2025年1月2日

发表回复

登录后才能评论