suchen
HeimWeb-Frontendjs-TutorialSo implementieren Sie eine einfache Skin-Change-Funktion mit Vue + Less

Im Folgenden werde ich Ihnen ein Beispiel für die Verwendung von Vue + Less zur Implementierung einer einfachen Skin-Änderungsfunktion vorstellen. Es hat einen guten Referenzwert und ich hoffe, dass es für alle hilfreich ist. Der von

durchgeführte Skin-Änderungseffekt ist relativ einfach, indem einfach die Hintergrundfarbe der oberen Navigation geändert wird. Das Folgende ist das Rendering.

Lassen Sie mich zunächst über meine ersten Gedanken sprechen.

Meine ursprüngliche Idee bestand darin, weniger zum Definieren von Variablen zu verwenden, die Variablen dann über js zu wechseln und den hautverändernden Effekt durch die geschalteten Variablen zu erzielen.

Ich habe zunächst eine neue theme.less-Datei mit folgendem Code erstellt:

 @theme:@themea;
 @themea:pink;
 @themeb:blue;
 @themec:gray;

Wie ich ursprünglich dachte, sollte die Variable @theme durch das Click-Event geändert werden. Wert.

Ich habe das Element-UI-Framework verwendet, daher ist der Code für mein Dropdown-Menü nicht kompliziert:

<el-dropdown class="colorBtn " trigger="click" @command="changeColor">
 <span class="el-dropdown-link " >换肤</span>
 <el-dropdown-menu slot="dropdown">
 <el-dropdown-item command="a" @click="change_type(a)">梦幻粉</el-dropdown-item>
 <el-dropdown-item command="b" @click="change_type(b)">天空蓝</el-dropdown-item>
 <el-dropdown-item command="c" @click="change_type(c)">雾霾灰</el-dropdown-item>
 </el-dropdown-menu>
</el-dropdown>

Das Rückrufereignis des Klickereignisses ist gebunden an Für das Befehlsereignis habe ich eine changeColor-Methode

  changeColor(command){
  console.log(command);//能获取到当前点击的元素的command
 }

definiert. Es stellt sich also die Frage: Wie ändere ich den Wert von @theme durch ein Klickereignis? Ich verfiel in tiefe Gedanken (Denken) ...

Endlich fand ich einen Umweg, um das Problem zu lösen. Eigentlich war die Idee am Anfang in Ordnung, aber sie musste neu verpackt werden. Wie verpacke ich es? Obwohl wir den Variablenwert vorerst nicht steuern können, können wir den Klassennamen des Elements steuern.

Wir können den Skinning-Teil extrahieren und die Funktion less verwenden, um ihn darzustellen, und den theme.less-Code in den folgenden Code ändern

wobei @backcolor die Hintergrundfarbe und @ ist fcolor ist die Schriftart Color

.theme(@backcolor:#EEA2AD,@fcolor:#fff) {
 .header {
 color: @fcolor;
 background: @backcolor;
 width: 100%;
 height: 2rem;
 position: relative;

 h4 {
  width: 100%;
  text-align: center;
  line-height: 2rem;
  font-size: 1rem;
 }
 .go-back {
  width: 2rem;
  height: 2rem;
  text-align: center;
  color: #fff;
  font-size: 0.8rem;
  float: left;
  line-height: 2rem;
  margin-left: 1rem;
  position: absolute;
  left: 0;
  top: 0;
 }
 .header-cont {
  width: 100%;
  text-align: center;
  line-height: 2rem;
  font-size: 1rem;
  color: #fff;
 }
 .colorBtn {
  width: 2rem;
  height: 2rem;
  text-align: center;
  color: #fff;
  font-size: 0.8rem;
  line-height: 2rem;
  margin-right: 1rem;
  position: absolute;
  top: 0;
  right: 0;
 }
 }
}

Erstellen Sie eine neue Farbe.less und legen Sie verschiedene Skin-Stile fest. Die verschiedenen Skin-Stile werden hier durch themea, themeb, themec ... dargestellt, die dem Befehlswert in der Komponente entsprechen. Wenn ich auf die rosa Farbe klicke, wird die entsprechende Funktion aufgerufen, um dem Element den entsprechenden Klassennamen hinzuzufügen. Vergessen Sie nicht, theme.less zu zitieren

 @import url(&#39;./theme.less&#39;);
  .themea{
   .theme();//默认的样式
  }
  .themeb{
   .theme(blue,#fff);
  }
  .themec{
   .theme(#111,#999);
  }

Wenn Sie auf das Dropdown-Menü mit der Skin klicken, muss die aufgerufene Methode „changeColor“ dem Element einen anderen Klassennamen hinzufügen. Denken Sie natürlich daran, die Farbe in Anführungszeichen zu setzen. weniger Datei.

 changeColor(command){
  console.log(command);
  document.getElementById(&#39;app&#39;).className =&#39;theme&#39;+command ;
 }

Bei der Arbeit an diesem Stück bin ich am Anfang auch auf ein Problem gestoßen, das heißt, ich habe den Stil dieser Seite am Anfang nur separat extrahiert, sodass sich die Kopfstile anderer Komponenten nicht geändert haben. Mein erster Gedanke war, Cookies zu verwenden. Dann dachte ich, dass es für mich in Ordnung ist, den Stil an ein Element der obersten Ebene zu binden, da es sich um eine einzelne Seite handelt.

Das Ergebnis kann sich sehen lassen! ! !

Wenn ich mich an die letzte Skin-Änderung erinnern möchte, verwende ich localStorage, um das Thema jeder Skin-Änderung aufzuzeichnen und dann festzustellen, ob es ein solches Thema gibt, bevor ich die Seite rendere. Der Effekt ist wie folgt

Das Obige habe ich für alle zusammengestellt und hoffe, dass es in Zukunft für alle hilfreich sein wird.

Verwandte Artikel:

Über das Problem des Extrahierens projektbezogener Konfigurationsdateien beim Packen von vue-cli (ausführliches Tutorial)

Probleme bei der Routing-Berechtigungsverwaltung mit Vue (ausführliches Tutorial)

Über die Methode zum Einfügen variabler Parameter in vue.js-Tag-Attribute (ausführliches Tutorial)

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine einfache Skin-Change-Funktion mit Vue + Less. 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
Vue常见面试题汇总(附答案解析)Vue常见面试题汇总(附答案解析)Apr 08, 2021 pm 07:54 PM

本篇文章给大家分享一些Vue面试题(附答案解析)。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

5 款适合国内使用的 Vue 移动端 UI 组件库5 款适合国内使用的 Vue 移动端 UI 组件库May 05, 2022 pm 09:11 PM

本篇文章给大家分享5 款适合国内使用的 Vue 移动端 UI 组件库,希望对大家有所帮助!

vue中props可以传递函数吗vue中props可以传递函数吗Jun 16, 2022 am 10:39 AM

vue中props可以传递函数;vue中可以将字符串、数组、数字和对象作为props传递,props主要用于组件的传值,目的为了接收外面传过来的数据,语法为“export default {methods: {myFunction() {// ...}}};”。

手把手带你利用vue3.x绘制流程图手把手带你利用vue3.x绘制流程图Jun 08, 2022 am 11:57 AM

利用vue3.x怎么绘制流程图?下面本篇文章给大家分享基于 vue3.x 的流程图绘制方法,希望对大家有所帮助!

聊聊vue指令中的修饰符,常用事件修饰符总结聊聊vue指令中的修饰符,常用事件修饰符总结May 09, 2022 am 11:07 AM

本篇文章带大家聊聊vue指令中的修饰符,对比一下vue中的指令修饰符和dom事件中的event对象,介绍一下常用的事件修饰符,希望对大家有所帮助!

如何覆盖组件库样式?React和Vue项目的解决方法浅析如何覆盖组件库样式?React和Vue项目的解决方法浅析May 16, 2022 am 11:15 AM

如何覆盖组件库样式?下面本篇文章给大家介绍一下React和Vue项目中优雅地覆盖组件库样式的方法,希望对大家有所帮助!

通过9个Vue3 组件库,看看聊前端的流行趋势!通过9个Vue3 组件库,看看聊前端的流行趋势!May 07, 2022 am 11:31 AM

本篇文章给大家分享9个开源的 Vue3 组件库,通过它们聊聊发现的前端的流行趋势,希望对大家有所帮助!

react与vue的虚拟dom有什么区别react与vue的虚拟dom有什么区别Apr 22, 2022 am 11:11 AM

react与vue的虚拟dom没有区别;react和vue的虚拟dom都是用js对象来模拟真实DOM,用虚拟DOM的diff来最小化更新真实DOM,可以减小不必要的性能损耗,按颗粒度分为不同的类型比较同层级dom节点,进行增、删、移的操作。

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools