Vue 系列之 样式相关

Class 与 Style 绑定#

动态修改元素样式#

<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Page Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="./vue.js"></script>
    <style type="text/css">
        .normal {
            color: palegreen
        }

        .error {
            color: red
        }
    </style>
</head>

<body>
    <div id="root">
        <div class="normal" v-bind:class="{error: changed}" @click="handleClick">{{message}}</div>
    </div>

    <script>
        new Vue({
            el: "#root",
            data: {
                changed: false,
                message: "hello world"
            },
            methods: {
                handleClick: function () {
                    this.changed = !this.changed
                }
            }
        })
    </script>
</body>

上述代码定义了两种样式:normalerror,通过判断 changed 值是否为 true 来决定是否使用 error 样式

为一个元素绑定多种样式#

<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Page Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="./vue.js"></script>
    <style type="text/css">
        .normal {
            color: palegreen
        }
        .fs{
            font-size: 24px
        }
    </style>
</head>

<body>
    <div id="root">
        <div v-bind:class="styles">{{message}}</div>
    </div>

    <script>
        new Vue({
            el: "#root",
            data: {
                changed: false,
                message: "hello world",
                styles:["normal","fs"]
            }
        })
    </script>
</body>

v-bind:class 支持对多种样式进行增加或异常,可参考动态修改样式来解决这个问题。

应用在组件上#

<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Page Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="./vue.js"></script>
    <style type="text/css">
        .normal {
            color: palegreen
        }
        .fs {
            font-size: 24px
        }
    </style>
</head>

<body>
    <div id="root">
        <my-component v-bind:class="styles" :msg="message"></my-component>
    </div>

    <script>

        Vue.component("my-component", {
            props: ["msg"],
            template: "<p>{{msg}}</p>"
        })

        new Vue({
            el: "#root",
            data: {
                message: "hello world",
                styles: ["normal", "fs"]
            }
        })
    </script>
</body>

绑定内联样式#

v-bind:style 的对象语法十分直观——看着非常像 CSS,但其实是一个 JavaScript 对象。CSS 属性名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,记得用单引号括起来) 来命名:

<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Page Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="./vue.js"></script>
    <style type="text/css">
        .normal {
            color: palegreen
        }

        .error {
            color: red
        }

        .fs {
            font-size: 24px
        }
    </style>
</head>

<body>
    <div id="root">
        <div v-bind:style="styleObject">{{message}}</div>
    </div>

    <script>
        new Vue({
            el: "#root",
            data: {
                message:'hello world',
                styleObject: {
                    color: 'blue',
                    fontSize: '13px'
                }
            }
        })
    </script>
</body>

v-bind:style 的数组语法支持将多个样式对象应用到同一个元素上:

<div v-bind:style="[baseStyles, overridingStyles]"></div>

当 v-bind:style 使用需要添加浏览器引擎前缀的 CSS 属性时,如 transform,Vue.js 会自动侦测并添加相应的前缀。

从 2.3.0 起你可以为 style 绑定中的属性提供一个包含多个值的数组,常用于提供多个带前缀的值,例如:

<div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>

作者:hippiezhou

出处:https://www.cnblogs.com/hippieZhou/p/9490902.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

Find Anyway

posted @   hippieZhou  阅读(277)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu