传智黑马39期WEB前端教程-Vue基础-Vue指令-跑马灯效果制作
跑马灯效果制作
1.进入目录 demo,修改文件 2.html,简化 v-on:click 为 @:click
2.进入目录 demo,添加文件 3.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<!-- 1.导入Vue包 -->
<script src="lib/vue-2.4.0.js"></script>
</head>
<body>
<!-- 2.创建一个要控制的区域 -->
<div id="app">
<input type="button" value="浪起来" />
<input type="button" value="低调">
<h4>{{ msg }}</h4>
</div>
<script>
var vm = new Vue({
el:'#app',
data: {
msg:'猥琐发育,别浪~~!',
}
})
</script>
</body>
</html>
3.浏览器查看效果

4.进入目录 demo,修改文件 3.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<!-- 1.导入Vue包 -->
<script src="lib/vue-2.4.0.js"></script>
</head>
<body>
<!-- 2.创建一个要控制的区域 -->
<div id="app">
<input type="button" value="浪起来" @click="lang"/>
<input type="button" value="低调">
<h4>{{ msg }}</h4>
</div>
<script>
//注意:在VM实例中,如果想要获取 data 上的数据,或者想要调用 methods 中的方法
//必须通过this.数据属性名或this.方法名来进行访问,这里的this就表示我们new出来的VM实例对象
var vm = new Vue({
el:'#app',
data: {
msg:'猥琐发育,别浪~~!',
},
methods: {
lang() {
console.log(this.msg)
//获取到头的第一个字母
var start = this.msg.substring(0, 1)
//获取到后面的所有字符
var end = this.msg.substring(1)
//重新拼接得到新的字符串,并赋值给this.msg
this.msg = end + start
}
//注意:VM实例,会监听自己身上 data 中所有数据的改变,只要数据一发生变化
//就会自动把最新的数据从data上同步到页面上去,[好处:程序员只需要关心数据,不需要考虑如何重新渲染DOM页面]
}
})
//分析:
//1.给 [浪起来] 按钮,绑定一个点击时间 v-on
//2.在按钮的事件处理函数中,写相关的业务逻辑代码,拿到 msg 字符串,然后调用字符串的substring来进行字符串的截取操作,把第一个字符截取出来,放到最后的一个位置即可
//3.为了实现点击一下按钮,自动截取的功能,需要把 2 步骤中的代码,放到一个定时器中去
</script>
</body>
</html>
5.浏览器测试,点击按钮浪起来,每点一下字符串滚动一个字



6.进入目录 demo,修改文件 3.html,添加一个计时器,让文字自动滚动
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<!-- 1.导入Vue包 -->
<script src="lib/vue-2.4.0.js"></script>
</head>
<body>
<!-- 2.创建一个要控制的区域 -->
<div id="app">
<input type="button" value="浪起来" @click="lang"/>
<input type="button" value="低调">
<h4>{{ msg }}</h4>
</div>
<script>
//注意:在VM实例中,如果想要获取 data 上的数据,或者想要调用 methods 中的方法
//必须通过this.数据属性名或this.方法名来进行访问,这里的this就表示我们new出来的VM实例对象
var vm = new Vue({
el:'#app',
data: {
msg:'猥琐发育,别浪~~!',
},
methods: {
lang() {
//console.log(this.msg)
setInterval(() => {
//获取到头的第一个字母
var start = this.msg.substring(0, 1)
//获取到后面的所有字符
var end = this.msg.substring(1)
//重新拼接得到新的字符串,并赋值给this.msg
this.msg = end + start
}, 400)
}
//注意:VM实例,会监听自己身上 data 中所有数据的改变,只要数据一发生变化
//就会自动把最新的数据从data上同步到页面上去,[好处:程序员只需要关心数据,不需要考虑如何重新渲染DOM页面]
}
})
//分析:
//1.给 [浪起来] 按钮,绑定一个点击时间 v-on
//2.在按钮的事件处理函数中,写相关的业务逻辑代码,拿到 msg 字符串,然后调用字符串的substring来进行字符串的截取操作,把第一个字符截取出来,放到最后的一个位置即可
//3.为了实现点击一下按钮,自动截取的功能,需要把 2 步骤中的代码,放到一个定时器中去
</script>
</body>
</html>
7.浏览器测试
8.进入目录 demo,修改文件 3.html,点击按钮低调可以停止滚动
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<!-- 1.导入Vue包 -->
<script src="lib/vue-2.4.0.js"></script>
</head>
<body>
<!-- 2.创建一个要控制的区域 -->
<div id="app">
<input type="button" value="浪起来" @click="lang"/>
<input type="button" value="低调" @click="stop" />
<h4>{{ msg }}</h4>
</div>
<script>
//注意:在VM实例中,如果想要获取 data 上的数据,或者想要调用 methods 中的方法
//必须通过this.数据属性名或this.方法名来进行访问,这里的this就表示我们new出来的VM实例对象
var vm = new Vue({
el:'#app',
data: {
msg:'猥琐发育,别浪~~!',
intervalId:null //在data上定义定时器id
},
methods: {
lang() {
//console.log(this.msg)
this.intervalId = setInterval(() => {
//获取到头的第一个字母
var start = this.msg.substring(0, 1)
//获取到后面的所有字符
var end = this.msg.substring(1)
//重新拼接得到新的字符串,并赋值给this.msg
this.msg = end + start
}, 400)
},
stop() {
clearInterval(this.intervalId);
}
//注意:VM实例,会监听自己身上 data 中所有数据的改变,只要数据一发生变化
//就会自动把最新的数据从data上同步到页面上去,[好处:程序员只需要关心数据,不需要考虑如何重新渲染DOM页面]
}
})
//分析:
//1.给 [浪起来] 按钮,绑定一个点击时间 v-on
//2.在按钮的事件处理函数中,写相关的业务逻辑代码,拿到 msg 字符串,然后调用字符串的substring来进行字符串的截取操作,把第一个字符截取出来,放到最后的一个位置即可
//3.为了实现点击一下按钮,自动截取的功能,需要把 2 步骤中的代码,放到一个定时器中去
</script>
</body>
</html>
9.浏览器测试
10.进入目录 demo,修改文件 3.html,定时器中判断一下如果intervalId不为null不用执行下面的代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<!-- 1.导入Vue包 -->
<script src="lib/vue-2.4.0.js"></script>
</head>
<body>
<!-- 2.创建一个要控制的区域 -->
<div id="app">
<input type="button" value="浪起来" @click="lang"/>
<input type="button" value="低调" @click="stop" />
<h4>{{ msg }}</h4>
</div>
<script>
//注意:在VM实例中,如果想要获取 data 上的数据,或者想要调用 methods 中的方法
//必须通过this.数据属性名或this.方法名来进行访问,这里的this就表示我们new出来的VM实例对象
var vm = new Vue({
el:'#app',
data: {
msg:'猥琐发育,别浪~~!',
intervalId:null //在data上定义定时器id
},
methods: {
lang() {
//console.log(this.msg)
if (this.intervalId != null) return;
this.intervalId = setInterval(() => {
//获取到头的第一个字母
var start = this.msg.substring(0, 1)
//获取到后面的所有字符
var end = this.msg.substring(1)
//重新拼接得到新的字符串,并赋值给this.msg
this.msg = end + start
}, 400)
},
stop() {
clearInterval(this.intervalId);
}
//注意:VM实例,会监听自己身上 data 中所有数据的改变,只要数据一发生变化
//就会自动把最新的数据从data上同步到页面上去,[好处:程序员只需要关心数据,不需要考虑如何重新渲染DOM页面]
}
})
//分析:
//1.给 [浪起来] 按钮,绑定一个点击时间 v-on
//2.在按钮的事件处理函数中,写相关的业务逻辑代码,拿到 msg 字符串,然后调用字符串的substring来进行字符串的截取操作,把第一个字符截取出来,放到最后的一个位置即可
//3.为了实现点击一下按钮,自动截取的功能,需要把 2 步骤中的代码,放到一个定时器中去
</script>
</body>
</html>
11.浏览器测试,第一次可以,停止后无法开启文字滚动,原因是 this.intervalId 一直不等于 null
12.进入目录 demo,修改文件 3.html,在清除定时器后设置 intervalId 等于 null
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<!-- 1.导入Vue包 -->
<script src="lib/vue-2.4.0.js"></script>
</head>
<body>
<!-- 2.创建一个要控制的区域 -->
<div id="app">
<input type="button" value="浪起来" @click="lang"/>
<input type="button" value="低调" @click="stop" />
<h4>{{ msg }}</h4>
</div>
<script>
//注意:在VM实例中,如果想要获取 data 上的数据,或者想要调用 methods 中的方法
//必须通过this.数据属性名或this.方法名来进行访问,这里的this就表示我们new出来的VM实例对象
var vm = new Vue({
el:'#app',
data: {
msg:'猥琐发育,别浪~~!',
intervalId:null //在data上定义定时器id
},
methods: {
lang() {
//console.log(this.msg)
if (this.intervalId != null) return;
this.intervalId = setInterval(() => {
//获取到头的第一个字母
var start = this.msg.substring(0, 1)
//获取到后面的所有字符
var end = this.msg.substring(1)
//重新拼接得到新的字符串,并赋值给this.msg
this.msg = end + start
}, 400)
},
stop() {
clearInterval(this.intervalId);
//每当清除了定时器之后,需要重新把 intervalId 设置为 null
this.intervalId = null;
}
//注意:VM实例,会监听自己身上 data 中所有数据的改变,只要数据一发生变化
//就会自动把最新的数据从data上同步到页面上去,[好处:程序员只需要关心数据,不需要考虑如何重新渲染DOM页面]
}
})
//分析:
//1.给 [浪起来] 按钮,绑定一个点击时间 v-on
//2.在按钮的事件处理函数中,写相关的业务逻辑代码,拿到 msg 字符串,然后调用字符串的substring来进行字符串的截取操作,把第一个字符截取出来,放到最后的一个位置即可
//3.为了实现点击一下按钮,自动截取的功能,需要把 2 步骤中的代码,放到一个定时器中去
</script>
</body>
</html>
13.浏览器测试
posted on 2019-11-01 14:59 herisson_pan 阅读(7) 评论(0) 收藏 举报
浙公网安备 33010602011771号