Heim  >  Artikel  >  Web-Frontend  >  So verwenden Sie CSS-Module in Vue

So verwenden Sie CSS-Module in Vue

不言
不言Original
2018-06-29 16:42:341471Durchsuche

In diesem Artikel wird hauptsächlich die elegante Methode zur Verwendung von CSS-Modulen in Vue vorgestellt. Der Text dieses Artikels wird mit dem Beispielcode kombiniert, um ihn ausführlich vorzustellen.

CSS Module: Lokaler Geltungsbereich und modular

CSS-Module geben jeder lokalen Klasse einen global eindeutigen Klassennamen, sodass sich Komponentenstile nicht gegenseitig beeinflussen. Zum Beispiel:

/* button.css */
.button {
 font-size: 16px;
}
.mini {
 font-size: 12px;
}

Es wird in etwa so umgewandelt:

/* button.css */
.button__button--d8fj3 {
 font-size: 16px;
}
.button__mini--f90jc {
 font-size: 12px;
}

Beim Importieren einer CSS-Moduldatei erhalten wir das Zuordnungsobjekt des lokalen Klassennamens zum globalen Klassennamen. So:

import styles from './button.css'
// styles = {
// button: 'button__button--d8fj3',
// mini: 'button__mini--f90jc'
// }
element.innerHTML = '<button class="&#39; + styles.button + &#39; &#39; + styles.mini + &#39;" />'

vue-css-modules: Vereinfachte Klassennamenzuordnung

Hier ist eine Schaltflächenkomponente, die CSS-Module verwendet:

<template>
 <button :class="{
 &#39;global-button-class-name&#39;: true,
 [styles.button]: true,
 [styles.mini]: mini
 }">点我</button>
</template>
<script>
 import styles from './button.css'
 export default {
 props: { mini: Boolean },
 data: () => ({ styles })
 }
</script>

Tatsächlich sind CSS-Module eine gute Wahl für Vue-Komponenten. Es gibt aber auch folgende Mängel:

  • Sie müssen Stile in Daten übergeben

  • Sie müssen Styles.localClassName verwenden, um die globale Klasse zu importieren Name

  • Wenn es andere globale Klassennamen gibt, müssen Sie diese zusammenfügen

  • Wenn Sie an den Eigenschaftswert der Komponente binden möchten , auch wenn es lokal ist Der Klassenname ist derselbe wie der Attributname und muss auch explizit angegeben werden

Für die Schaltflächenkomponente oben nach Verwendung von vue-css-modules:

<template>
 <button
 class="global-button-class-name"
 styleName="button :mini">
 点我
 </button>
</template>
<script>
 import CSSModules from 'vue-css-modules'
 import styles from './button.css'
 export default {
 mixins: [CSSModules(styles)],
 props: { mini: Boolean }
 }
</script>

Jetzt:

  • Sie müssen keine Stile in Daten übergeben, sondern Stile in mixins:full_moon_with_face:

  • Sie können sich von style.localClassName verabschieden

  • Fügen Sie den lokalen Klassennamen in das styleName-Attribut und den globalen Klassennamen in das Klassenattribut ein, das viele

    regelt
  • Lokale Klassennamen binden Komponenten mit demselben Namensattribut, fügen Sie einfach davor hinzu: Modifikator

Modifikator

@button

<button styleName="@button">按钮</button>

Dies entspricht:

<button styleName="button" data-component-button="true">按钮</button>

Damit können Sie den Stil einer Komponente extern zurücksetzen:

.form [data-component-button] {
 font-size: 20px;
}

$ Typ

<button styleName="$type">按钮</button>

Dies ist äquivalent zu:

<button :styleName="type">按钮</button>

:mini

<button styleName=":mini">按钮</button>

Dies ist äquivalent zu:

<button :styleName="mini ? &#39;mini&#39; : &#39;&#39;">按钮</button>
disabled=isDisabled
<button styleName="disabled=isDisabled">按钮</button>

Dies ist äquivalent zu:

<button :styleName="isDisabled ? &#39;disabled&#39; : &#39;&#39;">按钮</button>

Verwendung

Verwendung

in der Vue-Vorlage, um das CSS-Modul außerhalb der Vorlage einzuführen

<template>
 <button
 class="global-button-class-name"
 styleName="button :mini">
 点我
 </button>
</template>
<script>
 import CSSModules from 'vue-css-modules'
 import styles from './button.css'
 export default {
 mixins: [CSSModules(styles)],
 props: { mini: Boolean }
 }
</script>

Verwenden Sie das CSS-Modul innerhalb der Vorlage

<template>
 <button
 class="global-button-class-name"
 styleName="button :mini">
 点我
 </button>
</template>
<script>
 import CSSModules from 'vue-css-modules'
 export default {
 mixins: [CSSModules()],
 props: { mini: Boolean }
 }
</script>
<style module>
 .button {
 font-size: 16px;
 }
 .mini {
 font-size: 12px;
 }
</style>

Verwenden Sie

import CSSModules from 'vue-css-modules'
import styles from './button.css'
export default {
 mixins: [CSSModules(styles)],
 props: { mini: Boolean },
 render() {
 return (
  <button styleName="@button :mini">点我</button>
 )
 }
}
in Vue JSX

Verwenden Sie

import CSSModules from 'vue-css-modules'
import styles from './button.css'
export default {
 mixins: [CSSModules(styles)],
 props: { mini: Boolean },
 render(h) {
 return h('button', {
  styleName: '@button :mini'
 }, '点我')
 }
}

in der Vue-Rendering-Funktion Ich hoffe, es wird für das Lernen aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website!

Verwandte Empfehlungen:

Vue.js rekursive Komponente zur Implementierung des Baummenüs

So lösen Sie das Problem, dass der Stift nicht verwendet werden kann vue-cli

Das obige ist der detaillierte Inhalt vonSo verwenden Sie CSS-Module in Vue. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn