Vue教程(五):样式绑定——class和style

1、样式代码准备

样式提前准备

stylus 复制代码
<style>
        .basic{
            width: 400px;
            height: 100px;
            border: 1px solid black;
        }

        .happy{
            border: 4px solid red;
            background-color: rgba(255, 255, 0, 0.644);
            background: linear-gradient(30deg, yellow, pink, orange, yellow);
        }

        .sad{
            border: 4px dashed rgb(1, 197, 2);
            background-color: gray;
        }

        .normal{
            background-color: skyblue;
        }

        .nobug1{
            background-color: yellowgreen;
        }

        .nobug2{
            font-size: 30px;
            text-shadow: 2px 2px 10px red;
        }

        .nobug3{
            border-radius: 5px;
        }
    </style>

2、绑定class样式

绑定class样式------字符串写法

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

html:

html 复制代码
<!--    绑定class样式------字符串写法,适用于:样式的类名不确定,需要动态指定-->
    <div class="basic" :class="mood" @click="changeMood">
        {{label}}
    </div>

js:

js 复制代码
mood: 'normal',
methods:{
            changeMood(){
                const arr = ['normal', 'happy', 'sad'];
                // Math.random()产生的数值介于 0,1之间,可以等于0,但是不会等于1;
                let index = Math.floor(Math.random() * 3);
                this.mood = arr[index];
            }
        }

效果:

绑定class样式------数组写法

适用于:要绑定的样式个数不确定,名字也不确定

html:

html 复制代码
<div class="basic" :class="classArr">
        {{label}}
    </div>

js

js 复制代码
classArr: ['nobug1', 'nobug2', 'nobug3'],

效果:

绑定class样式------对象写法

适用于:要绑定的样式个数确定,名字也确定,但需要动态决定用不用

html

html 复制代码
<div class="basic" :class="classObj">
        {{label}}
    </div>

js

js 复制代码
classObj: {
                nobug1: false,
                nobug2: true,
            },

效果:

3、绑定style样式

绑定style样式------对象写法

html

html 复制代码
<!--    绑定style样式------对象写法-->
    <div class="basic" :style="styleObj">
        {{label}}
    </div>

js

js 复制代码
styleObj:{
                fontSize: '40px',
            },

效果:

绑定style样式------数组写法

html

html 复制代码
<!--    绑定style样式------数组写法-->
    <div class="basic" :style="styleArr">
        {{label}}
    </div>

js

js 复制代码
styleArr: [
                {
                    fontSize: '40px',
                },
                {
                    color: 'red'
                }
            ]

效果:

完整代码

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="../js/vue.js"></script>
    <style>
        .basic{
            width: 400px;
            height: 100px;
            border: 1px solid black;
        }

        .happy{
            border: 4px solid red;
            background-color: rgba(255, 255, 0, 0.644);
            background: linear-gradient(30deg, yellow, pink, orange, yellow);
        }

        .sad{
            border: 4px dashed rgb(1, 197, 2);
            background-color: gray;
        }

        .normal{
            background-color: skyblue;
        }

        .nobug1{
            background-color: yellowgreen;
        }

        .nobug2{
            font-size: 30px;
            text-shadow: 2px 2px 10px red;
        }

        .nobug3{
            border-radius: 5px;
        }
    </style>
</head>
<body>
<div id="root">
    <!--    绑定class样式------字符串写法,适用于:样式的类名不确定,需要动态指定-->
    <div class="basic" :class="mood" @click="changeMood">
        {{label}}
    </div>
    <br/>
    <br/>
    <!--    绑定class样式------数组写法,适用于:要绑定的样式个数不确定,名字也不确定-->
    <div class="basic" :class="classArr">
        {{label}}
    </div>
    <br/>
    <br/>
    <!--    绑定class样式------对象写法,适用于:要绑定的样式个数确定,名字也确定,但需要动态决定用不用-->
    <div class="basic" :class="classObj">
        {{label}}
    </div>
    <br/>
    <br/>
    <!--    绑定style样式------对象写法-->
    <div class="basic" :style="styleObj">
        {{label}}
    </div>
    <br/>
    <br/>
    <!--    绑定style样式------数组写法-->
    <div class="basic" :style="styleArr">
        {{label}}
    </div>
    <br/>
    <br/>
</div>
<script>
    // 设置为 false 以阻止 vue 在启动时生成生产提示。
    Vue.config.productionTip = false;

    // 创建Vue实例
    new Vue({
        // el用于指定当前Vue实例为哪个容器服务,值通常为css选择器字符串
        el: '#root',
        data:{
            label: '不写八个',
            mood: 'normal',
            classArr: ['nobug1', 'nobug2', 'nobug3'],
            classObj: {
                nobug1: false,
                nobug2: true,
            },
            styleObj:{
                fontSize: '40px',
            },
            styleArr: [
                {
                    fontSize: '40px',
                },
                {
                    color: 'red'
                }
            ]
        },
        methods:{
            changeMood(){
                const arr = ['normal', 'happy', 'sad'];
                // Math.random()产生的数值介于 0,1之间,可以等于0,但是不会等于1;
                let index = Math.floor(Math.random() * 3);
                this.mood = arr[index];
            }
        }
    })
</script>
</body>
</html>

完整实现效果

相关推荐
王莎莎-MinerU4 小时前
MinerU 深度技术解析:从架构原理到生产部署的全面指南
css·人工智能·自然语言处理·架构·ocr·个人开发
之歆4 小时前
Day19_LESS 完全指南——从入门到工程实践
前端·css·less
zhangyao9403306 小时前
开发pc端时,表格的高度怎么设置才能铺满页面
前端·javascript·elementui
XinZong6 小时前
实测OpenClaw虾淘:全民工具AI时代,冷门非工具类的Skill还能出圈吗?
javascript
烛衔溟6 小时前
TypeScript 类的类型 —— 作为类型使用
javascript·ubuntu·typescript
之歆6 小时前
Day16_JavaScript 轮播图与事件工程实战(下篇)
服务器·开发语言·前端·javascript·网络·性能优化
kyriewen7 小时前
我关掉了Copilot:因为我写的代码出现在了别人的建议里
前端·javascript·ai编程
SmartRadio8 小时前
STM32WLE5 LoRa Smart TDMA 完整协议栈实现(工程级可直接编译)-【1】
javascript·stm32·单片机·嵌入式硬件·lora·自组网·smart tdma
竹林8188 小时前
用 wagmi v2 踩坑两天,我终于搞懂了多链钱包切换
前端·javascript
吃乔巴的糖8 小时前
Vue 3 打印模板设计器 (print-canvas-designer)
前端·vue.js