Vue入门案例Day 01

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div id="app">

    <span>
        {{title}}
    </span>
    <input type="text" v-model="title"/>

</div>

</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    new Vue({
       // 绑定到div id='app'
       el:'#app',
        data:{
           title:'hello vue'
        }
    });
</script>
</html>

一个基础的Vue案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="app">
        <!--在html被vue绑定的元素中 通过插值表达式来获取vue对象中的数据和方法-->
        欢迎 年龄是{{age}}的{{name}}
    </div>

    <div id="app2">
        <!--没绑定 不能用插值表达式-->
        欢迎 年龄是{{age}}的{{name}}
    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    new Vue({
    //    大括号 js的model对象 json格式的对象 使用大括号包裹 里面放键值对 在js中键可以没有引号 多个键值对之间使用','分割
        el:'#app',//element id选择器 该vue对象绑定在哪个div上
        //数据哪里来
        data:{//以后数据就是通过发送ajax请求来获得的 前后端 提供数据的 里面存放键值对
            name:'牛子',
            age: 18
        }
    });
</script>
</html>

Vue对象的两个属性和认识插值表达式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>插值表达式</title>
</head>
<body>
    <div id="app">
        <!--在html被vue绑定的元素中 通过插值表达式来获取vue对象中的属性和方法-->
        我是个{{major}}<br/>
        {{[22,33,44,55,66] [1]}}<br/>
        {{{name:'牛子', age:20}.name}}
        <!--调用的是方法 需要有括号-->
        {{sayHi()}}
    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    new Vue({
        el:'#app',
        //data提供属性
        data:{
            major:'ass'
        },
        methods:{//vue定义方法
            //键方法名 值具体的方法
            sayHi:function () {
                alert("HELLO ASS!")
            }
        }
    })
</script>
</html>

插值表达式的用法和Vue定义方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-model</title>
</head>
<body>
    <div id="app">
        <!--vue中的关键字
        这些关键字都是作为html页面的标签中的属性
        1. v-model 是将标签的value值与vue实例中的data属性值进行绑定
        -->

        请输入您的专业: <input type="text" v-model="major"/>



        ======================<br/>
        <!--在html被vue绑定的元素中 通过插值表达式来获取vue对象中的属性和方法-->
        我是{{major}}专业<br/>
        {{[22,33,44,55,66] [1]}}<br/>
        {{{name:'牛子', age:20}.name}}
        <!--调用的是方法 需要有括号-->
        <!--{{sayHi()}}-->
    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    new Vue({
        el:'#app',
        //data提供属性
        data:{
            major:'ass'
        },
        methods:{//vue定义方法
            //键方法名 值具体的方法
            sayHi:function () {
                alert("HELLO ASS!")
            }
        }
    })
</script>
</html>

初识v-model

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>插值表达式</title>
</head>
<body>
    <div id="app">
        <!--vue中的关键字
        这些关键字都是作为html页面的标签中的属性
        1. v-model 是将标签的value值与vue实例中的data属性值进行绑定
        -->

        <!--v-on通过配合具体的事件名 来绑定vue中定义的函数
        不带括号不能传参数 带括号可以传参数-->
        请输入您的专业: <input type="text" @input="changeMajor"/>



        ======================<br/>
        <!--在html被vue绑定的元素中 通过插值表达式来获取vue对象中的属性和方法-->
        我是个{{major}}<br/>
        {{[22,33,44,55,66] [1]}}<br/>
        {{{name:'牛子', age:20}.name}}
        <!--调用的是方法 需要有括号-->
        <!--{{sayHi()}}-->
    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    new Vue({
        el:'#app',
        //data提供属性
        data:{
            major:'ass',
            // changeMajor:'hello'不能重名
        },
        methods:{//vue定义方法
            //键方法名 值具体的方法
            sayHi:function () {
                alert("HELLO ASS!")
            },
            changeMajor:function (event) {
                //事件对象的value值
                //在响应函数里 可以指明使用event内置的参数对象 该对象表示当前事件
                //可以通过event.target.value来获得当前事件对象的value的值
                // console.log(event.target.value)
                this.major = event.target.value;
            //    this的用法
            //    this表示当前vue对象 new Vue() 可以通过"this."来调用当前vue对象的属性和方法

            //    v-on可以简写
            //     v-on:input="" == @input=""
            }
        }
    })
</script>
</html>

初识v-on

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>v-bind</title>
</head>
<body>
    <div id="app">
        <!--插值表达式语法格式{{vue的内容}} 注意 插值表达式不能写在html的标签中 不能作为属性的值的部分-->
        {{link}}

        <a v-bind:href="link">百度</a>
        <!--<a href="{{link}}">百度</a>-->
        <!--我们知道差值表达式是不能写在html的标签的属性内的 如果一定要用vue中的属性作为html标签的属性的内容 就可以通过v-bind进行属性绑定-->

        <!--
        v-bind:href="" == :href=""
        -->
    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    new Vue({
        el:'#app',
        data:{
            link:'http://www.baidu.com'
        }
    })
</script>
</html>

初识v-bind

 

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>v-once</title>
</head>
<body>
    <div id="app">

        <!--只拿一次数据 此时该标签中的插值表达式 只获取一次数据 之后数据的变化不影响此插值表达式的值-->
        <p v-once>
            {{link}}
        </p>

        <input type="text" v-model="link"/>

    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    new Vue({
        el:'#app',
        data:{
            link:'http://www.baidu.com'
        }
    })
</script>
</html>

初识v-once

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>v-html/v-text</title>
</head>
<body>
    <div id="app">

        <!--只拿一次数据 此时该标签中的插值表达式 只获取一次数据 之后数据的变化不影响此插值表达式的值-->
        <p v-once>
            {{link}}
        </p>

        <input type="text" v-model="link"/>

        <br/>
        <!--
        v-html会将vue中的属性的值作为html的元素来使用
        v-text会将vue中的属性的值只作为纯文本来使用
        -->
        <span v-html="mylink"></span>
        <span v-text="mylink"></span>

    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    new Vue({
        el:'#app',
        data:{
            link:'http://www.baidu.com',
            mylink:'<a href="http://www.baidu.com">百度</a>'
        }
    })
</script>
</html>
v-html/v-text
<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>vue 事件</title>
</head>
<body>

        <!--事件的参数传递
            分成三个部分
            设参:
            传参:
            接参:
        -->

    <div id="app">
        {{count > 10 ? '大于10' : '不大于10'}}
        {{count}}
        <button type="button" @click="addbtn(1)">增加</button>
        <button type="button" @click="deletebtn(1)">减少</button>

        <input type="text" v-model="mystep">

        <p v-on:mousemove="mymouse">
            666我的宝贝
            {{x}} <br>
            {{y}}

            <!--<span @mousemove="mystopmouse">停止鼠标移动的事件</span>-->
            <span @mousemove.stop>停止鼠标移动的事件</span>
        </p>
    </div>

</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    new Vue({
        el:"#app",
        data:{
            count:0,
            mystep:1,
            x:0,
            y:0
        },
        methods:{
            addbtn:function (step) {
                this.count += this.mystep - 0;
                // this.count += step;
            },
            deletebtn:function (step) {
                this.count -= this.mystep - 0;
                // this.count -= step;
            },
            mymouse:function (event) {
                this.x = event.clientX;
                this.y = event.clientY;
                console.log(event);
            },
            mystopmouse:function (event) {
                event.stopPropagation()
            }
        }
    })
</script>
</html>

vue 事件

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>vue 事件修饰符</title>
</head>
<body>

        <!--
        vue的事件修饰符
        @click.stop 阻止点击事件
        @mousemove.stop 阻止鼠标移动
        @keyup.enter enter键弹起时
        ......文档
        -->

    <div id="app">
        <input type="text" @keyup.enter="mykeyupfn">
    </div>

</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    new Vue({
        el:"#app",
        data: {

        },
        methods:{
            mykeyupfn:function () {
                console.log("hello ass")
            }
        }
    })
</script>
</html>

vue 事件修饰符

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>vue 怎么改变内容</title>
</head>
<body>

    <div id="app">

        {{count}}

        {{result}}
        <button type="button" @click="addbtnfn(2)">增加</button>
    </div>

</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    new Vue({
        el:"#app",
        data: {
            count:0,
            result:''
        },
        methods:{
            addbtnfn:function (step) {
                this.count += step;
                this.result = this.count > 10 ? '大于10' : '不大于10'
                // this.count += step;
            }
        }
    })
</script>
</html>

vue 怎么改变内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>计算属性</title>
</head>
<body>

    <div id="app">

        {{getCurrentTime()}}
        <br/>
        {{getCurrentTime1}}
        <!--{{getCurrentTime1()}} 报错-->

        <!--
        计算属性的重点突出在 属性 两个字上 属性是名词
        首先它是个 属性 其次这个属性有 计算 的能力 计算是动词
        这里的 计算 就是个函数 简单来说 它就是一个能够将计算结果缓存起来的属性(将行为转换成了静态的属性)
        仅此而已  (类似缓存函数 提高效率-->

        <!--一些常用的函数 可以缓存起来 在调用时直接使用缓存中的过程(结果)以此来提高效率-->

        <!--computed 里虽然存放的是函数 但是调用时 computed里的东西是一个属性 所以我们在调用时不能使用() 因为()是在调用函数 而不是在调用属性-->
    </div>

</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var v1 = new Vue({
        el:'#app',
        methods:{
            getCurrentTime:function () {
                return new Date();
            }
        },
        computed:{
            getCurrentTime1:function () {
                return new Date();
            }
        }
    })
</script>
</html>

计算属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>watch用法 监控</title>
</head>
<body>

    <div id="app">

        {{title}}
        <input type="text" v-model="title">

        <!--
            watch 监控属性
            通过watch里给属性绑定函数
            当属性的值发生变化时 该函数就会自动被调用
            调用时可以接受两个参数 第一个参数是属性改变后的值 第二个参数是属性改变前的值
            -->
    </div>

</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var v1 = new Vue({
        el:'#app',
        data:{
            title:"hello vue"
        },
        watch:{
            title:function (newValue, oldValue) {
                console.log(newValue + ":" + oldValue)
            }
        }
    })
</script>
</html>

watch用法 监控

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Vue改变样式</title>
    <style>
        .mydiv{
            width: 400px;
            height: 220px;
            background-color: gray;
        }

        .red{
            background-color: red;
        }

        .yellow{
            background-color: yellow;
        }

        .green{
            background-color: green;
        }
    </style>
</head>
<body>

    <!--通过给html元素的class属性绑定vue中的属性值 得到样式的动态绑定-->
    <div id="app">
        <div v-bind:class="{red:temp}" class="mydiv"></div>
        <div class="mydiv"></div>
        <div class="mydiv"></div>

        <button type="button" @click="temp = !temp"></button>
    </div>

</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>

    new Vue({
        el:'#app',
        data:{
            temp:false
        }
    })

</script>
</html>

Vue改变样式

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Vue改变样式</title>
    <style>
        .mydiv{
            width: 400px;
            height: 220px;
            background-color: gray;
        }

        .red{
            background-color: red;
        }

        .yellow{
            background-color: yellow;
        }
        .mywidth{
            width: 450px;
        }
        .green{
            background-color: green;
        }
    </style>
</head>
<body>

    <!--通过给html元素的class属性绑定vue中的属性值 得到样式的动态绑定-->
    <div id="app">
        <div v-bind:class="{red:temp}" class="mydiv"></div>
        <hr/>
        <div :class="myClassStyle" class="mydiv"></div>
        <hr/>
        <div class="mydiv"></div>

        <button type="button" @click="temp = !temp"></button>
    </div>

</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>

    new Vue({
        el:'#app',
        data:{
            temp:false
        },
        computed:{
            myClassStyle:function () {
                return{
                    red:this.temp,
                    mywidth:this.temp
                }
            }
        }
    })

</script>
</html>

Vue改变样式

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Vue改变样式</title>
    <style>
        .mydiv{
            width: 400px;
            height: 220px;
            background-color: gray;
        }

        .red{
            background-color: red;
        }

        .yellow{
            background-color: yellow;
        }
        .mywidth{
            width: 450px;
        }
        .green{
            background-color: green;
        }
    </style>
</head>
<body>

    <!--通过给html元素的class属性绑定vue中的属性值 得到样式的动态绑定-->
    <div id="app">
        <div v-bind:class="{red:temp}" class="mydiv"></div>
        <hr/>
        <div :class="myClassStyle" class="mydiv"></div>
        <hr/>
        <div :class="mycolor" class="mydiv"></div>

        <button type="button" @click="temp = !temp"></button>
        <input type="text" v-model="mycolor">
    </div>

</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>

    new Vue({
        el:'#app',
        data:{
            temp:false,
            mycolor:'green'
        },
        computed:{
            myClassStyle:function () {
                return{
                    red:this.temp,
                    mywidth:this.temp
                }
            }
        }
    })

</script>
</html>

Vue改变样式

posted @ 2020-12-13 20:35  加利亚的赤色恶魔  阅读(85)  评论(0)    收藏  举报