Par exemple, si j'ai quelque chose comme ça dans mon composant:
@import 'path/to/orange.css'
J'obtiens une erreur qui dit
".orange-blue" n'a pas réussi à @extend ".bg-orange".
Le sélecteur ".bg-orange" est introuvable.
J'ai lu que je pouvais ajouter
<style lang="scss" scoped> .color-blue { color: blue; } .orange-blue { @extend .color-blue; // This works! @extend .bg-orange; // .bg-orange is defined in another css file somewhere. This doens't work } </style>
à mon bloc de style, mais cela ne semble pas faire l'affaire ici. De plus, cela n'entraînerait-il pas la répétition du CSS pour chaque composant qui l'importe?
3 Réponses :
Importez le fichier avec d'autres styles comme celui-ci
@import '../../../styles/mixins';
ou utilisez le chemin habituel
<style lang="scss" scoped> @import '~styles/mixins'; ... </style>
Vous pouvez le faire de la manière suivante:
Créez le fichier contenant la classe que vous souhaitez étendre:
... <style lang="scss" scoped> .my_extended_class { @extend .my_class_to_extend; }
Dans votre fichier vue.config.js que vous ajoutez ce qui suit pointant vers votre fichier:
module.exports = { css: { loaderOptions: { sass: { data: `@import "@/styles/style.scss";` } } } }
Après cela, vous pouvez étendre votre composant vue sans problème:
src/styles/style.scss .my_class_to_extend { backgroud-color: aqua; }
Remarque que pour l'utiliser, vous avez toujours besoin de fichiers scss, pas de css.
En bref, vous ne pouvez pas étendre la classe css dans le fichier * .scss
en important un fichier * .css
brut. Le compilateur SCSS lancera une erreur SassError: Le sélecteur de cible n'a pas été trouvé
.
Le moyen le plus simple est de renommer le fichier * .css référencé en * .scss. Ainsi, le résultat serait comme @import 'path / to / orange.scss'