Condition in v-bind:Style - VueJS

后端 未结 8 2201
遥遥无期
遥遥无期 2020-12-23 19:28

I have an easy question for which I hope you could help:

相关标签:
8条回答
  • 2020-12-23 19:57

    Feed Git's answer is perfect, here's another example with multiple attributes. Just separate with commas:

    :style="[printing ? {'margin' : '0px 0px 20px 0px', 'min-height': '830px', 'box- shadow': 'none', 'border': 'none'} : {'margin': '0px 0px 20px 0px', 'min-height': '830px'}]
    

    The form follows (for someone like me who's new at this):

    :style="[boolVariable ? { true } : { false }]
    
    0 讨论(0)
  • 2020-12-23 20:03

    For Background Color you have to pay special attention you can't use

    :style="[ isDark ? {background-color: 'black'}: {background-color: 'white'}]"
    

    it won't work you can use the backgroundColor

    :style="[ isDark ? {backgroundColor: 'black'}: {backgroundColor: 'white'}]"
    
    0 讨论(0)
  • 2020-12-23 20:08

    The previous references were very good, but for me what really worked was this:

    <input type="text" 
    v-bind:style=" boolVariable ? 'border: 1px solid orange;' : 'border: none;' ">
    

    In the documentation: https://vuejs.org/v2/guide/syntax.html#Using-JavaScript-Expressions

    Regards!

    0 讨论(0)
  • 2020-12-23 20:11

    Use a computed property for this:

    <figure :style="'{ background: `${background}` }'">
    
    ...
    
    data () {
        return {
            item: {
               featured_photo: null
            }
         }
    },
    computed: {
        background () {
            return !item.featured_photo ? '#fff' : `url(${item.featured_photo}) center no-repeat`
        }
    },
    methods: {
        setPhoto(val) {
             this.item.featured_photo = val
        }
    }
    

    Edit:

    I'm making a bunch of assumptions here with your API and routes. This is a rough stab at generalizing it:

    <figure :style="'{ background: `${getBackground('main_featured')}` }'">
    <figure :style="'{ background: `${getBackground('featured_photo', 1)}` }'">
    <figure :style="'{ background: `${getBackground('featured_photo', 2)}` }'">
    
    
    ...
    
    methods: {
         async getBackground (type, index) {
              let r = await axios.get(`/images/${type}/${index}`).then(r => r.data.background)
              return r || '#fff'
         }
     }
    
    0 讨论(0)
  • 2020-12-23 20:12

    If you're iterating through an object, you can use a method. In such cases when the style is dependent on a property in the object, this is the only option I have found .... none of the options above work.

    <div v-for="thing in things">
       <div :style="'{ background: `${background(thing)}` }'"></div>
    </div>
    ...
    
    data () {
        return {
            item: {
               featured_photo: null
            }
         }
    },
    methods: {
        background (thing) {
            return thing ? 'red' : 'black'`
        }
    }
    
    0 讨论(0)
  • 2020-12-23 20:12

    In quasar framework

    V-bind:style=" $q.screen.lt.md ? 'height:600px' : ''"
    
    0 讨论(0)
提交回复
热议问题