09 在Vue中使用样式

传统方式样式的添加

在不使用Vue时,我们为一个Dom元素添加样式有两种方式:

  • Dom元素添加伪类class
  • 使用style属性

如下代码:

<html>

<head>
    <meta charset="utf-8">
    </meta>
    <title>vue样式使用</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
        /* 红色 */
        .red {
            color: red;
        }

        /* 斜体 */
        .italic {
            font-style: italic;
        }

        .active {
            /* 字符间距 */
            letter-spacing: 0.5em;
        }
    </style>
</head>

<body>
    <div id="app">
        <!-- 添加伪类class -->
        <h1 class="red italic">伪类class</h1>
        <!-- style属性 -->
        <h2 style="color: blue;">添加style属性</h2>
    </div>
</body>

</html>

接下来学习在Vue中添加样式。

首先在Vue中添加样式需要使用v-bind指令,需要注意的是,应为伪类class添加引号,否则vue会将其当作变量,这时就会报错,下面对vue中添加样式作进一步的讨论。

一 使用伪类添加样式

<h1 :class="'italic'">添加单个伪类</h1>
<h1 :class="['italic','red']">添加多个伪类</h1>
<script>
        var vm = new Vue({
            el: "#app",
            data: {
            },
            methods: {
            }
        });
</script>

三元表达式

<h1 :class="['italic',flag?'active':'']">三元表达式</h1>
<script>
        var vm = new Vue({
            el: "#app",
            data: {
                flag: true
            },
            methods: {
            }
        });
</script>

JSON数据格式

使用三元表达式代码量较大,我们还可以采用JSON数据格式进行编写,即:

<h1 :class="['italic',{'active':flag}]">使用对象</h1>

这样写可读性很好。

也可以全部使用JSON数据格式,即:

<h1 :class="{italic:true,active:true}">全部使用对象</h1>

这样写可读性也很好。

进一步讨论,其实我们还可以把{italic:true,active:true}这个字符串当作一个变量看待,然后在Dom元素中引用这个变量就好了,具体操作为:

 <h1 :class="classObj">全部使用对象</h1>
 <script>
        var vm = new Vue({
            el: "#app",
            data: {
                flag: true,
                classObj: {italic:true,active:true}
            },
            methods: {

            }
        });
</script>

这样写代码看起来就会十分的简洁了。

二 使用style属性添加样式

 <h1 :style="{color:'red'}">使用style添加样式</h1>

当然了,也可以将字符串{color:'red'}定义为data中的一个变量,然后引用即可。

全部代码如下:

<html>

<head>
    <meta charset="utf-8">
    </meta>
    <title>vue样式使用</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
        /* 红色 */
        .red {
            color: red;
        }

        /* 斜体 */
        .italic {
            font-style: italic;
        }

        .active {
            /* 英文字符间距 */
            letter-spacing: 0.5em;
        }
    </style>
</head>

<body>
    <div id="app">
        <!-- 添加伪类class -->
        <h1 class="red italic">伪类class</h1>
        <!-- style属性 -->
        <h2 style="color: blue;">添加style属性</h2>

        <!-----------------在Vue中使用伪类添加样式------------>
        <h1 :class="'italic'">Vue添加单个伪类</h1>
        <h1 :class="['italic','active']">Vue添加多个伪类</h1>
        <h1 :class="['italic',flag?'active':'']">使用三元表达式</h1>
        <h1 :class="classObj">使用对象</h1>
        <h1 :class="{italic:true,active:flag}">全部使用对象</h1>
        <!-- 在Vue中使用style添加样式-->
        <h1 :style="{'color':'red'}">使用style添加样式</h1>
        <h1 :style='[styleObj,styleObj2]'>使用style添加多个变量样式</h1>
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                flag: true,
                classObj: [' italic', { 'active': true }],
                styleObj: { 'color': 'red' },
                styleObj2: { 'letter-spacing': '0.5em' }
            }, methods: {}
        }); </script>
</body>

</html>

总结

观察这两种方式,我们可以总结出一些规律:

  • v-bind属性值中未加引号的都被解析为变量
  • 但上一点在使用JSON数据格式时并不严格遵守,事实上,经过测试,应用JSON数据格式时,加不加引号都不会解析为变量,即{italic:true,active:flag}{'italic':'true','active':flag}两种写法都是可以的
  • 根据以上两点,不如严格遵守:对于变量不加引号,否则加上引号
  • 新增: 应十分注意的是,data中一个变量无法引用另一个变量的值,即classObj: [' italic', { 'active': this.flag }]这种写法是不正确的,事实上,this.flag会是undefined,因为这时候并未初始化
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue清除网页自带样式可以采取以下几个步骤: 1. 引入CSS reset或normalize.css:这些CSS文件是常用的用于清除浏览器默认样式的工具,可以在项目使用。可以通过在入口文件(通常是main.js或App.vue引入外部CSS文件,例如: ```javascript import 'reset-css'; // 引入CSS reset 或 import 'normalize.css'; // 引入normalize.css ``` 这样可以清除浏览器自带的一些默认样式,使得你在编写Vue组件时有更多的自由度。 2. 使用CSS样式覆盖:如果只有某一部分样式需要清除,可以在Vue组件直接编写对应的样式并覆盖默认样式。例如,在组件的`<style>`标签使用选择器来设定对应元素的样式: ```html <template> <div class="my-component"> <!-- 组件内容 --> </div> </template> <style scoped> .my-component { margin: 0; padding: 0; /* 更多样式 */ } </style> ``` 这样可以清除和修改默认样式,以实现自己的布局需求。 3. 使用scoped属性:Vue组件的`<style>`标签可以添加scoped属性,这样样式只会应用于当前组件,而不会影响全局的默认样式。通过scoped属性,可以避免全局样式的污染,只修改当前组件的样式,如: ```html <template> <div class="my-component"> <!-- 组件内容 --> </div> </template> <style scoped> .my-component { margin: 0; padding: 0; /* 更多样式 */ } </style> ``` 上述方法可以在Vue清除网页自带的样式,让你能够更好地控制和定制组件的外观。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值