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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

474閲覧

Vue.jsにてセレクトボックスで初期表示文字のみ色を変えたいです。

TMTN

総合スコア53

Vue.js

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/04/18 23:58

編集2021/04/19 00:40

セレクトボックスで初期表示文字のみ色を変えたいです。

現在、下記写真のように選択されていない状態では、「ジャンルを選択」と初期表示させ、
その配下にoptionタグで選択肢を設けています。

写真

理想としてはplaceholderのように、初期表示文字のみを薄い色で表示させて
選択されたら通常の黒色で表示されるようにしたいです。

selectのクラスに色を指定してしまうと、全ての文字が薄く変化してしまいますし、
optionにはstyle要素は使えないので困っています。

もし改善策があればお力添えをいただきたいです。
よろしくお願いいたします。

実際のコード

html

1<select v-model="genre" class="post-select" > 2 <option class="post-item" :value="genre" hidden>ジャンルを選択</option> 3 <option v-for="genre in genres" :value="genre.name" 4 :key="genre.id"class="post-item"> 5 {{ genre.name }} 6 </option> 7</select>

js

1export default { 2 data() { 3 return { 4 genre: "", 5 genres: [ 6 { id: 1, name: "アクション" }, 7 { id: 2, name: "ドラマ" }, 8 { id: 3, name: "恋愛" }, 9 { id: 4, name: "ホラー" }, 10 { id: 5, name: "戦争" }, 11 ], 12 }; 13 },

css

1 2::placeholder { 3 color: rgb(195, 195, 195); 4 font-size: 1rem; 5 padding-left: 0.25rem; 6} 7 8textarea { 9 resize: vertical; 10 width: 17rem; 11 outline: none; 12 border: none; 13 height: 2rem; 14 border-bottom: 1px solid #ddd; 15 color: #444; 16 font-size: 1rem; 17} 18 19textarea::placeholder { 20 color: rgb(195, 195, 195); 21 font-size: 1rem; 22 padding-left: 0.25rem; 23} 24 25.post-select { 26 width: 17rem; 27 outline: none; 28 border: none; 29 font-size: 0.9rem; 30 color: #444; 31 height: 3rem; 32 border-bottom: 1px solid #ddd; 33 } 34 .post-item { 35 width: 17rem; 36 outline: none; 37 border: none; 38 height: 3rem; 39 border-bottom: 1px solid #ddd; 40 color: #444; 41 font-size: 1rem; 42 } 43

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

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

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

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

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

FKM

2021/04/19 00:16

テンプレートだけじゃなくて、制御部分も提示してください。
TMTN

2021/04/19 00:41

申し訳ございません、追加するのを忘れてました。 ただいま追加しました。
guest

回答1

0

ベストアンサー

optionってstyle効くよね?selectとoption両方触ればできるはず

html

1 <select v-model="genre" class="post-select" :style="{ color : genre == '' ? 'gray' : 'black' }"> 2 <option class="post-item" value="" hidden>ジャンルを選択</option> 3 <option v-for="genre in genres" :value="genre.name" :key="genre.id" class="post-item" style="color: black;"> 4 {{ genre.name }} 5 </option> 6 </select>

投稿2021/04/19 07:28

sousuke

総合スコア3828

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

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

TMTN

2021/04/19 09:50 編集

ご回答ありがとうございます。 optionはstyle効かないという記事があったので勘違いしておりました。 記載頂いた記述方法で試してみましたが上手くstyleが効かなかったです。。
TMTN

2021/04/21 05:19

遅くなり申し訳ございません。 確認でき、実現できました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問