動的なクラス名をコンポーネントに追加できることは、非常に強力な機能です。これにより、カスタム テーマを作成したり、コンポーネントの状態に基づいてクラスを追加したり、スタイルに依存するコンポーネントのさまざまなバリエーションを作成したりすることが容易になります。
動的クラス名の追加は、prop :class="classname"
をコンポーネントに追加するのと同じくらい簡単です。 classname
が何に評価されるかは、コンポーネントに追加されるクラス名になります。
もちろん、Vue の動的クラスを使用してできることはさらにたくさんあります。この記事では、次のことについて詳しく説明します。
- Vue での静的クラスと動的クラスの使用
- 正規の JS 式を使用してクラスを評価する方法
- 配列構文動的クラス名の場合
- オブジェクト構文
- クラス名をすばやく生成する
- カスタム コンポーネントで動的クラス名を使用する方法
静的クラスと動的クラス
Vue では、静的クラスと動的クラスをコンポーネントに追加できます。
静的クラスは決して変更されない退屈なクラスであり、コンポーネント内に常に存在します。一方、アプリケーションに動的クラスを追加したり削除したりすることもできます。
静的クラスの追加は、通常の HTML での追加とまったく同じです
<template> <span class="description"> This is how you add static classes in Vue. </span> </template>
動的クラスは非常に似ていますが、Vue の特別な属性構文 v-bind## を使用する必要があります#、JS 式をクラスにバインドするには:
<template> <span v-bind:class="'description'"> This is how you add static classes in Vue. </span> </template>ここで、動的クラス名の前後に追加の引用符を追加する必要があることがわかります。 これは、
v-bind 構文が JS 値として渡すものをすべて受け入れるためです。引用符を追加すると、Vue がそれを文字列として扱うようになります。
v-bind:
<template> <span :class="'description'"> This is how you add static classes in Vue. </span> </template>の短縮構文もあります。本当に素晴らしいのは、同じコンポーネント上に静的クラスと動的クラスの両方を含めることもできることです。静的クラスは、位置やレイアウトなど、変更されないとわかっているコンテンツに使用され、動的クラスはテーマなどに使用されます。
<template> <span class="description" :class="theme" > This is how you add static classes in Vue. </span> </template> export default { data() { return { theme: 'blue-theme', }; } }; ---------------------------------------- .blue-theme { color: navy; background: white; }この場合、
theme がコンテンツです。クラス名の変数を適用します。
v-bind は任意の JS 式を受け入れることができるため、これを使用して非常に優れた処理を行うことができます。私のお気に入りは、テンプレートで三項式を使用することです。これは非常にクリーンで読みやすい傾向があります。
<template> <span class="description" :class="darkMode ? 'dark-theme' : 'light-theme'" > This is how you add dynamic classes in Vue. </span> </template>
darkMode が
true の場合、
dark-theme がクラス名として使用されます。それ以外の場合は、
ライトテーマを選択します。
<template> <span class="description" :class="[ fontTheme, darkMode ? 'dark-theme' : 'light-theme', ]" > This is how you add dynamic classes in Vue. </span> </template>配列を使用して、この要素名に 2 つの動的クラスを設定します。
fontTheme の値は、フォントの外観を変更するクラス名です。前の例では、
darkMode 変数を使用して、
dark-theme と
light-theme を切り替えることができます。
<template> <span class="description" :class="{ 'dark-theme': darkMode, 'light-theme': !darkMode, ]" > This is how you add dynamic classes in Vue. </span> </template>オブジェクトには、
dark-theme と
light-theme という 2 つのキーが含まれています。以前に実装したロジックと同様に、
darkMode の値に基づいてこれらのテーマを切り替えたいと考えています。
darkMode が
true の場合、
dark-theme が動的クラス名として要素に適用されます。ただし、
!darkMode 値が
false であるため、
light-them は適用されません。
<template> <MovieList :movies="movies" :genre="genre" /> </template>テーマ管理を変更するクラスを動的に追加したい場合はどうすればよいですか?実はとても簡単です。 前と同じように
:class 属性を追加するだけです。
<template> <MovieList :movies="movies" :genre="genre" :class="darkMode ? 'dark-theme' : 'light-theme'" /> </template>これが機能する理由は、Vue が
MovieList## のルート要素に直接配置されているためです。 # クラスをセットアップします。 コンポーネントに
を設定すると、Vue はこれらのプロパティを、コンポーネントの props
セクションで指定されたプロパティと比較します。一致するものがあれば、通常の小道具として渡されます。それ以外の場合、Vue はそれをルート DOM 要素に追加します。 ここで、
は class
属性を指定していないため、Vue はルート要素に設定する必要があることを認識しています。 ただし、動的クラス名を使用すると、さらに高度な処理を行うことができます。
クラス名をすばやく生成する
クラス名を動的に追加または削除するさまざまな方法を取り上げてきました。しかし、動的に生成されたクラス名自体はどうなるのでしょうか?
さまざまな種類のボタンすべてに 20 の異なる CSS スタイルを提供する
Button コンポーネントがあるとします。 <p>你可能不想花一整天的时间把每一项都写出来,也不想把开关的逻辑都写出来。相反,我们将动态生成要应用的类的名称。</p><pre class='brush:php;toolbar:false;'><template>
<span
class="description"
:class="theme"
>
This is how you add static classes in Vue.
</span>
</template>
export default {
data() {
return {
theme: &#39;blue-theme&#39;,
};
}
};
.blue-theme {
color: navy;
background: white;
}</pre><p>我们可以设置一个变量来包含我们想要的任何类名的字符串。如果我们想对<code>Button
组件执行此操作,则可以执行以下简单操作:
<template> <button @click="$emit('click')" class="button" :class="theme" > {{ text }} </button> </template> export default { props: { theme: { type: String, default: 'default', } } }; .default {} .primary {} .danger {}
现在,使用Button
组件的任何人都可以将theme
属性设置为他们想要使用的任何主题。
如果没有设置任何类,它将添加.default
类。如果将其设置为primary
,则会添加.primary
类。
使用计算属性来简化类
最终,模板中的表达式将变得过于复杂,并将开始变得非常混乱和难以理解。幸运的是,我们有一个简单的解决方案,就是使用计算民属性:
<template> <MovieList :movies="movies" :genre="genre" :class="class" /> </template> export default { computed: { class() { return darkMode ? 'dark-theme' : 'light-theme'; } } };
这不仅易于阅读,而且还可以轻松添加新功能并在将来进行重构。
英文原文地址:https://forum.vuejs.org/t/add-a-dynamically-generated-class-name-to-components-class-attribute-from-mixin/27626
为了保证的可读性,本文采用意译而非直译。
相关推荐:
更多编程相关知识,请访问:编程教学!!
以上がVueでクラス名を動的に追加する方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

NetflixはReactを使用してユーザーエクスペリエンスを強化します。 1)Reactのコンポーネント機能は、Netflixが複雑なUIを管理可能なモジュールに分割するのに役立ちます。 2)Virtual DomはUIの更新を最適化し、パフォーマンスを向上させます。 3)ReduxとGraphQLを組み合わせて、Netflixはアプリケーションのステータスとデータフローを効率的に管理します。

Vue.jsはフロントエンドフレームワークであり、バックエンドフレームワークはサーバー側のロジックを処理するために使用されます。 1)VUE.JSは、ユーザーインターフェイスの構築に焦点を当て、コンポーネントおよびレスポンシブデータバインディングを介して開発を簡素化します。 2)ExpressやDjangoなどのバックエンドフレームワークは、HTTPリクエスト、データベース操作、ビジネスロジックを処理し、サーバーで実行します。

VUE.JSは、開発効率とユーザーエクスペリエンスを向上させるために、フロントエンドテクノロジースタックと密接に統合されています。 1)建設ツール:Webpackおよびロールアップと統合して、モジュール開発を実現します。 2)国家管理:VUEXと統合して、複雑なアプリケーションステータスを管理します。 3)ルーティング:Vuerouterと統合して、単一ページのアプリケーションルーティングを実現します。 4)CSSプリプロセッサ:SASSをサポートし、スタイル開発効率を改善するために少なくなります。

Netflixは、Reactのコンポーネント設計と仮想DOMメカニズムが複雑なインターフェイスと頻繁な更新を効率的に処理できるため、ユーザーインターフェイスを構築するためにReactを選択しました。 1)コンポーネントベースの設計により、Netflixはインターフェイスを管理可能なウィジェットに分解し、開発効率とコード保守性を向上させることができます。 2)仮想DOMメカニズムは、DOM操作を最小化することにより、Netflixユーザーインターフェイスの滑らかさと高性能を保証します。

Vue.jsは、使いやすく強力なため、開発者に愛されています。 1)そのレスポンシブデータバインディングシステムは、ビューを自動的に更新します。 2)コンポーネントシステムは、コードの再利用性と保守性を向上させます。 3)コンピューティングプロパティとリスナーは、コードの読みやすさとパフォーマンスを向上させます。 4)Vuedevtoolsの使用とコンソールエラーのチェックは、一般的なデバッグ手法です。 5)パフォーマンスの最適化には、主要な属性、計算された属性、およびキープアライブコンポーネントの使用が含まれます。 6)ベストプラクティスには、クリアコンポーネントの命名、単一ファイルコンポーネントの使用、ライフサイクルフックの合理的な使用が含まれます。

Vue.jsは、効率的で保守可能なフロントエンドアプリケーションを構築するのに適した進歩的なJavaScriptフレームワークです。その主な機能には、1。レスポンシブデータバインディング、2。コンポーネント開発、3。仮想DOM。これらの機能を通じて、VUE.JSは開発プロセスを簡素化し、アプリケーションのパフォーマンスと保守性を向上させ、最新のWeb開発で非常に人気を博しています。

Vue.jsとReactにはそれぞれ独自の利点と欠点があり、選択はプロジェクトの要件とチームの条件に依存します。 1)Vue.jsは、シンプルで使いやすいため、小さなプロジェクトや初心者に適しています。 2)Reactは、その豊富な生態系とコンポーネント設計のため、大規模なプロジェクトと複雑なUIに適しています。

Vue.jsは複数の機能を介してユーザーエクスペリエンスを改善します。1。レスポンシブシステムは、リアルタイムデータフィードバックを実現します。 2。コンポーネント開発により、コードの再利用性が向上します。 3. Vuerouterはスムーズなナビゲーションを提供します。 4.動的データの結合および遷移アニメーションは、相互作用効果を強化します。 5.エラー処理メカニズムにより、ユーザーのフィードバックが保証されます。 6.パフォーマンスの最適化とベストプラクティスは、アプリケーションのパフォーマンスを改善します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Dreamweaver Mac版
ビジュアル Web 開発ツール

ホットトピック









