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

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

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

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

2677閲覧

vue.js スタイルバインド まとめ方

退会済みユーザー

退会済みユーザー

総合スコア0

Vue.js

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2018/07/27 03:25

編集2018/07/27 03:36

typescript

1<template> 2 <div id="colorPicker" class="colorPicker"> 3 4 <chrome-picker v-model="defaultProps"/> 5 6 <div class="box" v-bind:style="{ background : defaultProps.hex , opacity : defaultProps.a}"></div> 7 8 </div> 9</template> 10 11<script lang="ts"> 12import { Component, Prop, Vue } from "vue-property-decorator"; 13 14import { Chrome } from 'vue-color' 15 16@Component({ 17 components: { 18 'chrome-picker' : Chrome 19 } 20}) 21export default class ColorPicker extends Vue { 22 23 private defaultProps = { 24 hex: '#ffffff', 25 hsl: { 26 h: 0, 27 s: 0, 28 l: 0, 29 a: 1 30 }, 31 hsv: { 32 h: 0, 33 s: 0, 34 v: 0, 35 a: 1 36 }, 37 rgba: { 38 r: 0, 39 g: 0, 40 b: 0, 41 a: 1 42 }, 43 a: 1 44 } 45 46 47 48 49 50} 51</script> 52 53<style lang="scss"> 54.colorPicker { 55 .box{ 56 margin: 32px; 57 width : 100px; 58 height : 100px; 59 border: solid 1px #4a4a4a 60 } 61 62} 63</style>

https://www.npmjs.com/package/vue-color

こちらのvue-colorを使って上記コードを書いてみました。

v-bind:style="{ background : defaultProps.hex , opacity : defaultProps.a}"

の部分をまとめられないかと思い、

typescript

1<template> 2 <div id="colorPicker" class="colorPicker"> 3 4 <chrome-picker v-model="defaultProps"/> 5 6 <div class="box" v-bind:style="style"></div> 7 8 </div> 9</template> 10 11<script lang="ts"> 12import { Component, Prop, Vue } from "vue-property-decorator"; 13 14import { Chrome } from 'vue-color' 15 16@Component({ 17 components: { 18 'chrome-picker' : Chrome 19 } 20}) 21export default class ColorPicker extends Vue { 22 23 private defaultProps = { 24 hex: '#ffffff', 25 hsl: { 26 h: 0, 27 s: 0, 28 l: 0, 29 a: 1 30 }, 31 hsv: { 32 h: 0, 33 s: 0, 34 v: 0, 35 a: 1 36 }, 37 rgba: { 38 r: 0, 39 g: 0, 40 b: 0, 41 a: 1 42 }, 43 a: 1 44 } 45 46 47 //↓追加 48 private style = { 49 background : this.defaultProps.hex, 50 opacity : this.defaultProps.a 51 } 52 53 54 55} 56</script> 57 58<style lang="scss"> 59.colorPicker { 60 .box{ 61 margin: 32px; 62 width : 100px; 63 height : 100px; 64 border: solid 1px #4a4a4a 65 } 66 67} 68</style>

このようにしてみたのですが、動きませんでした。
スタイルバインドをまとめる方法はるあるのでしょうか。

https://v1-jp.vuejs.org/guide/class-and-style.html
公式のドキュメントをみる限り、二個目の方法でできるはずなんですが...
環境のせいでしょうか
vue-cli3.0でやってます...

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

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

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

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

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

guest

回答1

0

ベストアンサー

typescript

1<template> 2 <div id="colorPicker" class="colorPicker"> 3 4 <chrome-picker v-model="defaultProps"/> 5 6 <div class="box" v-bind:style="getStyle"></div> 7 8 </div> 9</template> 10 11<script lang="ts"> 12import { Component, Prop, Vue } from "vue-property-decorator"; 13 14import { Chrome } from 'vue-color' 15 16 17@Component({ 18 components: { 19 'chrome-picker' : Chrome 20 } 21}) 22export default class ColorPicker extends Vue { 23 24 private defaultProps = { 25 hex: '#ffffff', 26 hsl: { 27 h: 0, 28 s: 0, 29 l: 0, 30 a: 1 31 }, 32 hsv: { 33 h: 0, 34 s: 0, 35 v: 0, 36 a: 1 37 }, 38 rgba: { 39 r: 0, 40 g: 0, 41 b: 0, 42 a: 1 43 }, 44 a: 1 45 } 46 47 private style = { 48 background : this.defaultProps.hex, 49 opacity : this.defaultProps.a 50 } 51 52 get getStyle(){ 53 return { 54 background : this.defaultProps.hex, 55 opacity : this.defaultProps.a 56 } 57 } 58 59 60 61 62 63} 64</script> 65 66<style lang="scss"> 67.colorPicker { 68 .box{ 69 margin: 32px; 70 width : 100px; 71 height : 100px; 72 border: solid 1px #4a4a4a 73 } 74 75 76} 77</style>

このような書き方だとできました。
あと、

get getStyle(){
return this.style
}

この書き方だとできませんでした。
何が起こってるかわかる方いらっしゃいましたら、よかったら教えて欲しいです...。

投稿2018/07/27 03:41

編集2018/07/27 11:25
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問