Maison > interface Web > js tutoriel > le corps du texte

Comment résoudre le problème selon lequel le composant parent ne peut pas modifier le style du composant enfant après l'ajout de scoped dans le développement de Vue

零到壹度
Libérer: 2018-04-04 15:38:04
original
3488 Les gens l'ont consulté

Dans le développement de vue, nous devons référencer des sous-composants, y compris les composants ui (element, iview). Mais après avoir ajouté scoped dans le composant parent, l'écriture du style du composant enfant dans le composant parent n'a aucun effet. Après avoir supprimé la portée, les styles peuvent être remplacés. Mais cela polluera le style global. Afin de résoudre ce problème, vue-loader ajoute une nouvelle méthode d'écriture.

#demo

Composant parent :

<style lang="css" scoped>

 header /deep/ .header{     
   box-shadow:0px 1px 0px 0px $white;
  }
Copier après la connexion
header >>> .header{   
   box-shadow:0px 1px 0px 0px $white;
}
Copier après la connexion
</style>
Copier après la connexion

Composant enfant :

<template>  
 <header>    
    <p class="header">       
    </p>   
  </header>
</template>
Copier après la connexion

Cette façon d'écrire et de modifier le style du sous-composant ne polluera pas le style global !

Document officiel : Scoped CSS · vue-loader

Conseils : Cette méthode est prise en charge à partir de vue-loader 11.2.0

Dans le développement utilisant vue, nous faisons parfois référence à des composants externes, y compris des composants d'interface utilisateur (ElementUI, iview).

Lorsque la balise <style> a l'attribut scoped, son CSS ne s'applique qu'aux éléments du composant actuel.
Mais après avoir ajouté scoped dans le composant parent, le style du composant parent ne pénétrera pas dans le composant enfant, donc écrire le style du composant enfant dans le composant parent n'a aucun effet.

一、去掉 scoped

在父组件的 <style> 中去掉 scoped 后,父组件中可以书写子组件的样式,但是你会担心这样会污染全局样式。 
【因为我们知道正确使用全局样式的姿势是使用一个全局的 app.css】

二、混用本地和全局样式

你可以在一个组件中同时使用有作用域和无作用域的样式:

<style>
/* 全局样式 */
</style>