首页 > 其他分享 >Vue2入门之超详细教程十-绑定class、style样式

Vue2入门之超详细教程十-绑定class、style样式

时间:2023-05-14 19:22:50浏览次数:52  
标签:style Vue 之超 样式 绑定 yellow solid Vue2 border

1、简介

  绑定样式:

    1. class样式

      写法:class=”xxx” xxx可以是字符串、对象、数组

      字符串写法适用于:类名不确定,要动态获取

      对象写法适用于:要绑定多个样式,个数不确定,名字也不确定

      数组写法适用于:要绑定多个样式,个数确定,名字也确定,但不确定用不用

    2. Style样式

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

      :style=”[a,b]”其中a、b是样式对象

    学习Vue之前最后会一些HTML和CSS的基础知识,HTML基础知识 传送门,CSS基础知识 传送门

2、Class绑定

1. 字符串绑定class

  在vscode中创一个新目录,叫“09_绑定样式”,在下面创建一个“1字符串-绑定样式.html”文件,在里面输入以下代码:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <script type="text/javascript" src="../js/development/vue.js"></script>

    <style>

        .basic{

            width:400px;

            height:100px;

            border:1px solid black;

        }

        .happy{

            border: 4px solid red;

           

            background: linear-gradient(30deg,yellow,pink,orange,yellow);

 

        }

        .sad{

           

            border:1px solid green;

        }

        .normal{

           

        }

        .atguigu1{

           

        }

        .atguigu2{

            font-size:30px;

            /* box-shadow: 0 0 20px black; */

            text-shadow: 0 0 20px yellow;

        }

        .atguigu3{

            border-radius: 20px;

        }

    </style>

</head>

<body>

    <div id="root">

        <!-- 绑定class样式--字符串写法,适用于:样式的类名不确定,需要动态指定 -->

        <div class="basic" :class="mood" @click="changeMood">{{name}}</div>

    </div>

    <script type="text/javascript">

        Vue.config.productionTip = false

        new Vue({

            el:'#root',

            data:{

                name:'Mr Li',

                mood:'normal'

            },

            methods:{

                changeMood(){

                    this.mood = 'happy'

                }

            },

        })

    </script>

</body>

</html>

  该代码和以前代码类似,知识多了CSS样式部分,这里不对CSS样式内容做过多解释,如果实在看不懂记住简单内容即可.是class类型绑定,用来绑定HTML代码中class样式,给出了不同的样式

  如果要使用Vue绑定class可以利用学过的v-bind方法,当用户点击后改变class的变量内容,以上代码是字符串写法,适用于:样式类名不确定,需要动态指定的场景

  现在以上面案例做改变,需要当用户点击时,随机应用happy、sad、normal样式,代码如下:

    

<script type="text/javascript">

        Vue.config.productionTip = false

        new Vue({

            el:'#root',

            data:{

                name:'Mr Li',

                mood:'normal'

            },

            methods:{

                changeMood(){

                    const arr = ['happy','sad','normal']

                    const index = Math.floor(Math.random()*3)

                    this.mood = arr[index]

                }

            },

        })

    </script>

  其他地方不用改变,唯一变的是changeMood方法内的内容,以前是直接赋值为happy,现在是使用Math方法成功一个随机数const arr = ['happy','sad','normal']这是一个数组,里面有三个值,Math.random()方法可以得到一个0到1的随机数,该数不可能是1,Math.floor()方法可以取整,里面它们两个的组合就能获得一个0到2的整数,作为数组的下标,这样就实现了一个随机应用样式的案例。

2. 数组绑定class

  创建一个“2数组-绑定样式.html”文件,在里面输入以下代码:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <script type="text/javascript" src="../js/development/vue.js"></script>

    <style>

        .basic{

            width:400px;

            height:100px;

            border:1px solid black;

        }

        .happy{

            border: 4px solid red;

           

            background: linear-gradient(30deg,yellow,pink,orange,yellow);

 

        }

        .sad{

           

            border:1px solid green;

        }

        .normal{

           

        }

        .atguigu1{

           

        }

        .atguigu2{

            font-size:30px;

            /* box-shadow: 0 0 20px black; */

            text-shadow: 0 0 20px yellow;

        }

        .atguigu3{

            border-radius: 20px;

        }

    </style>

</head>

<body>

    <div id="root">

        <!-- 绑定class样式--数组写法,适用于:要绑定的样式个数不确定、名字也不确定 -->

        <div class="basic" :class="classArr" >{{name}}</div>

    </div>

    <script type="text/javascript">

        Vue.config.productionTip = false

        const vm = new Vue({

            el:'#root',

            data:{

                name:'Mr Li',

                mood:'normal',

                classArr:['atguigu1','atguigu2','atguigu3']

            },

        })

    </script>

</body>

</html>

  使用数组绑定class的方法即在data中定义一个数组,里面放置要绑定的样式,用法还是用v-bind来绑定。

3. 对象绑定class

  现在需求升级,需要绑定的样式数组不确定,如atguigu1和atguigu2两个样式,组合绑定,组合类型如下:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <script type="text/javascript" src="../js/development/vue.js"></script>

    <style>

        .basic{

            width:400px;

            height:100px;

            border:1px solid black;

        }

        .happy{

            border: 4px solid red;

           

            background: linear-gradient(30deg,yellow,pink,orange,yellow);

 

        }

        .sad{

           

            border:1px solid green;

        }

        .normal{

           

        }

        .atguigu1{

           

        }

        .atguigu2{

            font-size:30px;

            /* box-shadow: 0 0 20px black; */

            text-shadow: 0 0 20px yellow;

        }

        .atguigu3{

            border-radius: 20px;

        }

    </style>

</head>

<body>

    <div id="root">

        <!-- 绑定class样式--对象写法,适用于:要绑定的样式个数确定、名字也确定,但要动态决定用不用 -->

        <div class="basic" :class="classObj" >{{name}}<br>

        </div>

    </div>

    <script type="text/javascript">

        Vue.config.productionTip = false

        const vm = new Vue({

            el:'#root',

            data:{

                name:'Mr Li',

                mood:'normal',

                classObj:{

                    atguigu1:false,

                    atguigu2:false,

                }

            },

        })

    </script>

</body>

</html>

  我们可以利用一个对象classObj为false表示不生效,后面可以自己操作是否生效。

4. 对象绑定style

  样式可以直接卸载style中的,那怎么使用Vue直接绑定style呢?

  正常写style样式如下:

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

  如果想使用Vue可以如下:

<div class="basic" :style="{fontSize: fsize+'px'}" >{{name}}<br>

  fsize是提前在Vue中定义的变量,完整代码如下

  这种写法有点不美观,我们可以把表达式放到Vue中去,style中只写一个对象名,如下:

<div class="basic" :style="styleObj" >{{name}}<br>

  完整代码如下:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <script type="text/javascript" src="../js/development/vue.js"></script>

    <style>

        .basic{

            width:400px;

            height:100px;

            border:1px solid black;

        }

        .happy{

            border: 4px solid red;

           

            background: linear-gradient(30deg,yellow,pink,orange,yellow);

 

        }

        .sad{

           

            border:1px solid green;

        }

        .normal{

           

        }

        .atguigu1{

           

        }

        .atguigu2{

            font-size:30px;

            /* box-shadow: 0 0 20px black; */

            text-shadow: 0 0 20px yellow;

        }

        .atguigu3{

            border-radius: 20px;

        }

    </style>

</head>

<body>

    <div id="root">

        <!-- 绑定style样式---->

        <div class="basic" :style="styleObj" >{{name}}<br>

        </div>

    </div>

    <script type="text/javascript">

        Vue.config.productionTip = false

        const vm = new Vue({

            el:'#root',

            data:{

                name:'Mr Li',

                mood:'normal',

                fsize:40,

                styleObj:{

                    fontSize: '40px',

                    backgroundColor: 'red'

                }

            },

        })

    </script>

</body>

</html>

5. 数组绑定style

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <script type="text/javascript" src="../js/development/vue.js"></script>

    <style>

        .basic{

            width:400px;

            height:100px;

            border:1px solid black;

        }

        .happy{

            border: 4px solid red;

           

            background: linear-gradient(30deg,yellow,pink,orange,yellow);

 

        }

        .sad{

           

            border:1px solid green;

        }

        .normal{

           

        }

        .atguigu1{

           

        }

        .atguigu2{

            font-size:30px;

            /* box-shadow: 0 0 20px black; */

            text-shadow: 0 0 20px yellow;

        }

        .atguigu3{

            border-radius: 20px;

        }

    </style>

</head>

<body>

    <div id="root">

        <!-- 绑定style样式---->

        <div class="basic" :style="styleArr" >{{name}}<br>

        </div>

    </div>

    <script type="text/javascript">

        Vue.config.productionTip = false

        const vm = new Vue({

            el:'#root',

            data:{

                name:'Mr Li',

                mood:'normal',

                fsize:40,

                styleArr:[

                    {

                        fontSize: '40px',

                    },

                    {

                        backgroundColor: 'gray'

                    }

                ]

            },

        })

    </script>

</body>

</html>

  这种方式不常用

3、小结

  Style写法如果两个单词拼接比如font-size需要写成fontSize形式

 

标签:style,Vue,之超,样式,绑定,yellow,solid,Vue2,border
From: https://www.cnblogs.com/lirongyang/p/17399927.html

相关文章

  • 结合vue2+highchartsjs技术,实现信号分析中的频谱瀑布图、星座图、眼图和声音波形图
    先看效果:总的来说,web端比传统桌面端资源更多一些,是未来学习的趋势。相关的资料在网上都能找到,这里就不提供源码了。......
  • vue2中数组和对象更改后视图不刷新解决办法
    vue2中,改变集合或数据某值时有时候并不会自动更新到视图上去,解决办法  1、官方推荐例如:projectList数组,show值点击一次改变一次方向<tdv-on:click="alertSub(index)"><ahref="javascript:;">{{item.}}</a></td>alertSub(index){this.projectLi......
  • 理解vue2.x版本中productionTip=false设置无效的原因
    首先,我们看到vue官网中关于productionTip的API使用:但是,我在本地中使用却无效,代码如下:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname=&q......
  • Vue2电商实战项目(三)
    排序的操作要求的数据格式-数据格式说明-'1'表示'综合排序'-'2'表示'价格排序'-'asc'表示'升序'-'desc'表示降序-项目的数据格式的样子 -1:asc -1:desc -2:asc -2:desc###Search.index.vue......&quo......
  • delphi StyleControl中DB控件的使用说明
    这两天听大佬说"可视化绑定"的效率很低,再加对下拉菜单,单选,复选框等控件绑定操作的未知,于是我决定把普通组件,改为DB组件. 正常来讲,基本上所有DB组件只要设置好了数据源和字段绑定,就能显示数据来, 但是我这边就出现了一点意外,源于对sqlite数据库认知度不够的原因......
  • vue2+van2 实现带搜索的级联选择组件
    级联选择组件新建组件-子项CasadeSelect/CasadeSelectItem.vue<template><divclass="container-list-item"><divclass="icon"><divclass="checkbox"><svg-iconv-if="curChecked"ic......
  • 使用vue2+element-ui+vuex实现后台管理系统的头部背景色动态点击修改
    **以下内容仅供自己学习使用话不多说,直接上代码1.首先去vuex里面importVuefrom'vue';importVuexfrom'vuex';Vue.use(Vuex);conststore=newVuex.Store({state:{headerColor:'default-header',//定义一个默认的颜色},mutations:{ //setHe......
  • vue2 对vxe-table组件二次封装并全局引入
    要求新组件的写法要和旧组件保持一致,那么保留原本的插槽,属性,方法写法如下,以vxe-table为例组件封装<template><vxe-gridref="vxeGrid"v-bind="$attrs"v-on="$listeners"@filter-change="filterChange"><templatev-for="slotinslots......
  • Vue2没有`public`文件夹,该怎么建资源文件,编译后不被压缩
    在Vue2项目中,如果没有`public`文件夹,可以在项目根目录下创建一个`static`文件夹来存放静态资源文件,如JS、CSS、图片等。 如果你想在打包后不压缩JS文件,并且这个JS文件是在HTML中通过`script`标签引用的,可以按照以下步骤进行操作: 1.在`static`文件夹下创建一个`js`文件夹,并......
  • Vue2项目中,在编译打包后通过读取配置文件,任意修改接口地址
    可以按照以下步骤进行操作: 1.在项目根目录下创建一个名为`config`的文件夹,并在该文件夹下创建一个名为`index.js`的文件,用来存放配置文件,如: ```javascriptmodule.exports={  apiRoot:'http://api.example.com'}``` 这里定义了一个`apiRoot`属性,用来存放接口地......