Vue2.0学习笔记5:绑定样式

目录

一、绑定class样式

1.字符串写法

2.数组写法

3.对象写法

二、style样式

1.对象写法

2.数组写法


一、绑定class样式

:class="xxx"                 //xxx可以是字符串、对象、数组

1.字符串写法

适用情况:样式的类名不确定,需要动态指定

使用方法:将class样式通过v-bind与data对象绑定,其形式是字符串。将来需要改变时,可以将Vue所管理的data对象中的对应class字符串改变,从而实现动态绑定class样式

使用示例

下面的示例实现了点击按钮使得div所绑定的样式在数组中随机选择一个改变

<head>
    <meta charset="UTF-8">
    <title>xxx</title>
    <style>
        .basic{
            width: 400px;
            height: 100px;
            border: 1px solid black;
            text-align: center;
        }
        .happy{
            border: 4px solid red;
            background: rgba(255,255,0,644);
            background: linear-gradient(30deg,yellow,pink,orange,yellow);
        }
        .sad{
            border: 4px solid green;
            background: rgba(28, 28, 22, 0.31);
        }
        .normal{
            background: rgba(0, 196, 255, 0.62);
        }
        .st1{
           background: #34da4a;
        }
        .st2{
            text-shadow: 2px 2px darkgray;
            font-size: 20px;
        }
        .st3{
            border-radius: 20px;
        }
    </style>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>

<div id="root">
<!--    绑定class样式--字符串写法,适用于:样式的类名不确定,需要动态指定-->
    <div class="basic" :class="a" @click="changeMood">{{name}}</div>
</div>
<script type="text/javascript">
    Vue.config.productionTip = false

    new Vue({
        el:'#root',
        data:{
            name:'4399游戏',
            a:'normal'
        },
        methods:{
            changeMood(){
                const arr = ['happy','sad','normal']
                const index = Math.floor(Math.random()*3)
                this.a=arr[index]
            }
        }
    })

</script>
</body>

2.数组写法

适用情况:需要绑定的样式个数不确定,名字不确定

使用方法:将class样式“保存”在一个数组中,并将数组与data对象绑定。将来需要增加或者移除class样式时,可以使用Arr.shift(移除数组中第一个元素)或者Arr.push('xxx')(增加一个元素),来达到想要的效果

使用示例

下面的示例中,完善代码,可以通过向数组中移除或增添元素来使得绑定的class样式发生变化

<head>
    <meta charset="UTF-8">
    <title>xxx</title>
    <style>
        .basic{
            width: 400px;
            height: 100px;
            border: 1px solid black;
            text-align: center;
        }
        .happy{
            border: 4px solid red;
            background: rgba(255,255,0,644);
            background: linear-gradient(30deg,yellow,pink,orange,yellow);
        }
        .sad{
            border: 4px solid green;
            background: rgba(28, 28, 22, 0.31);
        }
        .normal{
            background: rgba(0, 196, 255, 0.62);
        }
        .st1{
           background: #34da4a;
        }
        .st2{
            text-shadow: 2px 2px darkgray;
            font-size: 20px;
        }
        .st3{
            border-radius: 20px;
        }
    </style>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>

<div id="root">
    <!--    绑定class样式--数组写法,适用于:要绑定的样式个数不确定,名字不确定-->
    <div class="basic" :class="classArr">{{name}}</div>
</div>
<script type="text/javascript">
    Vue.config.productionTip = false

    new Vue({
        el:'#root',
        data:{
            name:'4399游戏',
            classArr:['st1','st2','st3']
        }
    })

</script>
</body>

3.对象写法

适用情况:要绑定的样式个数确定,名字确定,但需要动态决定是否要用

使用方法:通过将class样式“保存”在一个对象中,可以使它们变为true或者false状态来决定它们是否应用

使用示例

在下面的例子中,修改st1、st2的true/false状态可以决定它们是否应用

<head>
    <meta charset="UTF-8">
    <title>xxx</title>
    <style>
        .basic{
            width: 400px;
            height: 100px;
            border: 1px solid black;
            text-align: center;
        }
        .happy{
            border: 4px solid red;
            background: rgba(255,255,0,644);
            background: linear-gradient(30deg,yellow,pink,orange,yellow);
        }
        .sad{
            border: 4px solid green;
            background: rgba(28, 28, 22, 0.31);
        }
        .normal{
            background: rgba(0, 196, 255, 0.62);
        }
        .st1{
           background: #34da4a;
        }
        .st2{
            text-shadow: 2px 2px darkgray;
            font-size: 20px;
        }
        .st3{
            border-radius: 20px;
        }
    </style>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>

<div id="root">
    <!--    绑定class样式--对象写法,适用于:要绑定的样式个数确定,名字确定,但需要动态决定是否要用-->
    <div class="basic" :class="classObj">{{name}}</div>
</div>
<script type="text/javascript">
    Vue.config.productionTip = false

    new Vue({
        el:'#root',
        data:{
            name:'4399游戏',
            classObj:{
                st1:true,
                st2:true
            }
        }
    })

</script>
</body>


二、style样式

1.对象写法

style写法比较少用,一般使用class

使用方法:将style中的值封装成一个对象,保存在data中,在这个对象中设置style的具体参数。

:style="{fontSize:xxx}"     //其中xxx是动态值

在设置参数时,可以将style中的属性值看成对象的key,而属性的值则是value。例如:

<div class="basic" style="font-size:50px">{{name}}</div>

上面例子中,font-size可以看成key,50px可以看成value。

注意事项:在对象中设置style具体参数时,key的值不一定能写成和原来一样。需要注意key的值也不能随意编写。实际编写形式是,将原本形式中的“-”去掉,它前面的单词全部小写,后面的单词首字母大写,最后将它们连起来。如果没有“-”则不用修改。上面的font-size按照规则写则是fontSize。background则仍然是background。

使用示例

<head>
    <meta charset="UTF-8">
    <title>xxx</title>
    <style>
        .basic{
            width: 400px;
            height: 100px;
            border: 1px solid black;
            text-align: center;
        }
        .happy{
            border: 4px solid red;
            background: rgba(255,255,0,644);
            background: linear-gradient(30deg,yellow,pink,orange,yellow);
        }
        .sad{
            border: 4px solid green;
            background: rgba(28, 28, 22, 0.31);
        }
        .normal{
            background: rgba(0, 196, 255, 0.62);
        }
        .st1{
           background: #34da4a;
        }
        .st2{
            text-shadow: 2px 2px darkgray;
            font-size: 20px;
        }
        .st3{
            border-radius: 20px;
        }
    </style>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<div id="root">
    <!--    绑定style样式--对象写法-->
    <div class="basic" :style="styleObj">{{name}}</div>
</div>
<script type="text/javascript">
    Vue.config.productionTip = false

    new Vue({
        el:'#root',
        data:{
            name:'4399游戏'
            styleObj:{
                fontSize:'40px'
            }
        }
    })

</script>
</body>

2.数组写法

数组写法极其少用,建议当可以使用其他方法时不用这个。

使用方法:将动态对象保存子数组中使用

:style="[a,b]"                 //其中a,b是样式对象

它的注意事项和对象写法相同

使用示例

<head>
    <meta charset="UTF-8">
    <title>xxx</title>
    <style>
        .basic{
            width: 400px;
            height: 100px;
            border: 1px solid black;
            text-align: center;
        }
        .happy{
            border: 4px solid red;
            background: rgba(255,255,0,644);
            background: linear-gradient(30deg,yellow,pink,orange,yellow);
        }
        .sad{
            border: 4px solid green;
            background: rgba(28, 28, 22, 0.31);
        }
        .normal{
            background: rgba(0, 196, 255, 0.62);
        }
        .st1{
           background: #34da4a;
        }
        .st2{
            text-shadow: 2px 2px darkgray;
            font-size: 20px;
        }
        .st3{
            border-radius: 20px;
        }
    </style>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<div id="root">
    <!--    绑定style样式--数组写法-->
    <div class="basic" :style="styleArr">{{name}}</div>
</div>
<script type="text/javascript">
    Vue.config.productionTip = false

    new Vue({
        el:'#root',
        data:{
            name:'4399游戏'
            styleArr:[
                {
                    background:'orange'
                }
            ]
        }
    })

</script>
</body>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值