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

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

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

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

HTML

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

CSS

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

Q&A

解決済

1回答

2503閲覧

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

TMTN

総合スコア53

Vue.js

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2021/04/21 05:13

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

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

写真

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

現在下記のようselectタグには下記を入れて、切り替えをするように記述していますが、
初期表示すらされません。

:style="{ color : genre == '' ? 'gray' : 'white' }"

⑴選択がされたら白色できちんと表示がされますが、初期表示がグレー色で表示されないです。

⑵selectタグ内に「v-model="genre"」と記載今はしているのですが、
この記述を消してあげるととりあえず「ジャンルを選択」と表示はされますが、グレー色で表示されます。
しかし、他の選択物も含め全てグレー色で表示されてしまう状況です。

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

実際のコード

html

1<select v-model="genre" class="post-select" 2 :style="{ color : genre == '' ? 'gray' : 'white' }"> 3 <option class="post-item" hidden>ジャンルを選択</option> 4 <option v-for="genre in genres" :value="genre.name" :key="genre.id" 5 class="post-item" style="color: white;">{{ genre.name }}</option> 6</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: gray; 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: $white-color; 16 font-size: 1rem; 17 background-color: $black-color; 18} 19 20textarea::placeholder { 21 color: gray; 22 font-size: 1rem; 23 padding-left: 0.25rem; 24} 25 26// -- post --// 27 28.modal-inner { 29 position: relative; 30 .modal-header { 31 flex-direction: column; 32 background-color: $black-color; 33 .post-tll { 34 padding-top: 3rem; 35 color: $white-color; 36 font-family: "Roboto", sans-serif; 37 } 38 } 39 .modal-body { 40 .post-items { 41 flex-direction: column; 42 background-color: $black-color; 43 color: $white-color; 44 padding-bottom: 4rem; 45 .post-img { 46 position: relative; 47 } 48 .post-contens { 49 position: relative; 50 margin: 0.8rem; 51 .post-select { 52 width: 17rem; 53 outline: none; 54 border: none; 55 font-size: 1rem; 56 color: $white-color; 57 height: 3rem; 58 border-bottom: 1px solid #ddd; 59 background-color: $black-color; 60 } 61 .btn-img { 62 position: absolute; 63 left: 0; 64 bottom: 8px; 65 width: 4.5rem; 66 color: white; 67 background-color: rgb(80, 80, 80); 68 padding: 0.3rem; 69 border-radius: 0.5rem; 70 text-decoration: none; 71 cursor: pointer; 72 border: none; 73 outline: none; 74 font-weight: bold; 75 } 76 .item-img { 77 width: 35px; 78 height: 35px; 79 margin-right: 0.8rem; 80 } 81 .post-item { 82 width: 17rem; 83 outline: none; 84 border: none; 85 height: 3rem; 86 border-bottom: 1px solid #ddd; 87 color: $white-color; 88 font-size: 1rem; 89 background-color: $black-color; 90 } 91 } 92 } 93 } 94} 95 96

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

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

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

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

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

guest

回答1

0

ベストアンサー

https://jsfiddle.net/3q164mnL/

前回も回答しましたが・・・。
そもそも「ジャンルを選択」が表示されてないから色を付ける対象がないだけですね

投稿2021/04/21 05:17

mikkame

総合スコア5036

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

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

TMTN

2021/04/21 05:18

同じ内容を投稿してしまいました。申し訳ございません。 ご回答ありがとうございます。
TMTN

2021/04/21 06:18

<select class="profile-select" v-model="genre" :style="{ color : genre == '' ? 'gray' : 'white' }" > <option class="profile-item" value hidden>好きなジャンル</option> <option v-for="genre in genres" :value="genre.name" :key="genre.id" class="profile-item" style="color: white;" >{{ genre.name }}</option> </select> export default { data() { return { genre: "", genres: [ { id: 0, name: "ジャンル" }, { id: 1, name: "アクション" }, { id: 2, name: "ドラマ" }, { id: 3, name: "恋愛" }, { id: 4, name: "ホラー" }, { id: 5, name: "戦争" }, ], 別のページで試しておりますが、こちらにつきましては、色が変化しません。 それぞれの選択に対して全てにグレー色が適用されます。。
mikkame

2021/04/21 06:24

ダミーのoptionですがvalueだけだとnullになると思うので、dataに合わせて空文字にするか、data側をnullにしてください
TMTN

2021/04/21 06:36

nullに変更してみましたが、全てが変更に伴って白色となってしまいました・・
TMTN

2021/04/21 06:36

同じことを違うページで行っているのですが、分からずでしてすいません・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問