質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

2802閲覧

【vue, javascript】v-forで要素を繰り返し表示するための配列にHTMLタグを格納してスタイルを調整したい

aa316316

総合スコア39

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2019/06/05 10:31

編集2019/06/06 01:03

前提・実現したいこと

現在Vue, Nuxtのプロジェクト内でv-forを使用し、配列内の要素を繰り返し表示させようとしています。

ここから今困っている点なのですが、配列内にHTMLタグを格納してv-forで表示させるということは可能でしょうか。
v-forで出力させたテキストの一部分のスタイルを調整する必要があり、そのためには配列にHTMLタグをそのまま格納する必要があると考えています。

サンプルコードは以下の「該当のソースコード」に記述させていただきます。
下記コード内の以下の部分のスタイルを修正するためになにか方法はありますでしょうか。

listContents.push( "ここの文字の一部を小さくしたいです" // 例えば「一部」という部分のfont-sizeを小さくしたいです。 );

配列内にタグを入れる方法以外にも、良い方法がありましたら教えていただけますと幸いです。
どうぞよろしくお願いします。

該当のソースコード

vue

1<template> 2 <section> 3 <ul class="list-wrapper"> 4 <li v-for="(list, index) in lists" :key="index">{{ list }}</li> 5 </ul> 6 </section> 7</template> 8 9<script> 10export default { 11 data() { 12 id: null, 13 showText: null 14 }, 15 computed: { 16 lists() { 17 const listContents = []; 18 switch (this.id) { 19 case 1: 20 listContents.push("サンプル1"); 21 if (this.showText) { 22       // ***** 該当箇所 ***** 23 listContents.push( 24 "ここの文字の一部を小さくしたいです" // 例えば「一部」という部分のfont-sizeを小さくしたいです。 25 ); 26 } 27 return listContents; 28 case 2: 29 listContents.push( 30 "サンプル2" 31 ); 32 return listContents; 33 default: 34 return []; 35 } 36 }, 37 }, 38 mounted() { 39 // mounted内でresponseを受け取りdataに格納 40 // 詳細省略 41  this.id = response.data.id; //例 42 } 43} 44</script>

補足情報(FW/ツールのバージョンなど)

"nuxt": "^2.4.2"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

インラインスタイルのバインディングを使用すれば
HTMLタグをそのまま格納する必要はないです。
https://jp.vuejs.org/v2/guide/class-and-style.html

そのためには配列にHTMLタグをそのまま格納する必要があると考えています。

投稿2019/06/05 11:10

yasutomi

総合スコア2937

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aa316316

2019/06/05 14:38

こんにちは!回答いただきありがとうございます! サンプルとして乗せたコードのcomputed内のテキストの出し分けをしている条件分岐ですが、 実際にはもう少し分岐が多くそれに伴ってテキストの数も増えるため上記のような出し分けにしています。 コメントいただいた方法でやるとすると、HTML内にベタでテキストを書き、v-ifでのだし分けやクラスのバインディングを行うということでしょうか?
yasutomi

2019/06/05 15:11

最初はそう思ったのですが コードの可読性が低下するのでv-htmlで良いかと。
aa316316

2019/06/06 01:09

なるほど、やはりHTMLタグのまま出力しようとするとv-htmlなどでバインディングし、条件分岐はv-ifで行うことになりそうですよね。 助かりました、ご回答いただきありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問