微信小程序实现简单跑马灯效果


Posted in Javascript onMay 26, 2020

跑马灯效果比较常见,一般做电商类的小程序,都会用到,所以代码君今天特地写一篇文章,来教一下大家,如何去实现跑马灯效果,下面是代码君实现的效果,可以先看一下!

微信小程序实现简单跑马灯效果

跑马灯效果的制作

制作方式很简单,先方上代码,后面会对代码详细讲解

一、wxml界面的实现

<!-- 跑马灯效果 -->
 <view class="example">
 <view class="marquee_box">
 <view class="marquee_text" style="{{orientation}}:{{marqueeDistance}}px;font-size: {{size}}px;">
  <image src="{{adUrl}}" class='ad-image' />{{text}}
 </view>
 </view>
 </view>

界面布局很简单,一个底部背景容器,加入一个广播图片和对应的跑马灯文字

二、wxss样式

.example {
 display: block;
 width: 100%;
 height: 70rpx;
 background-color: #f2f2f2;
 line-height: 70rpx;
}

.marquee_box {
 width: 100%;
 position: relative;
}

.marquee_text {
 white-space: nowrap;
 position: absolute;
 top: 0;
 display: flex;
 flex-direction: row;
}

.ad-image {
 width: 40rpx;
 height: 40rpx;
 margin-right: 10rpx;
 margin-top: 15rpx;
}

样式就这些,这里代码君要带着大家回顾一下以前教程里讲解的内容

1.文字居中css样式要如何设置?
只需要将属性height与line-height设置成一样高度即可

2.display属性

none:此元素不会被显示
block:两个元素自动换行
inline:两个元素靠在一起
inherit:继承父类
flex:多栏多列

三、xxx.js

Page({
 data: {
 text: '51淘甄?,一个可以省钱的购物平台',
 marqueePace: 1,//滚动速度
 marqueeDistance: 0,//初始滚动距离
 size: 14,
 orientation: 'left',//滚动方向
 interval: 20, // 时间间隔
 adUrl: '../../images/ic_home_msg.png',
 },
 onShow: function () {
 // 页面显示
 var that = this;
 var length = that.data.text.length * that.data.size;//文字长度
 var windowWidth = wx.getSystemInfoSync().windowWidth;// 屏幕宽度
 that.setData({
 length: length,
 windowWidth: windowWidth,
 });
 that.runMarquee();// 水平一行字滚动完了再按照原来的方向滚动
 },
 runMarquee: function () {
 var that = this;
 var interval = setInterval(function () {
 //文字一直移动到末端
 if (-that.data.marqueeDistance < that.data.length) {
 that.setData({
  marqueeDistance: that.data.marqueeDistance - that.data.marqueePace,
 });
 } else {
 clearInterval(interval);
 that.setData({
  marqueeDistance: that.data.windowWidth
 });
 that.runMarquee();
 }
 }, that.data.interval);
 }
})

js里面需要讲解的比较多

1.setInterval 计时器如何使用?

setInterval(function(){
console.log("interval")
},1000)

这个方法是微信小程序的api,直接使用即可,和正常的定时器一样,setInterval需要传入两个参数,一个是回调的方法,另一个是每隔多久执行一次,在此项目中,我们用的是字段参数interval,值设置为20

2.settimeout和setinterval()这两个都是腾讯提供的API,他们有什么区别吗?

  • settimeout隔一段时间执行函数且执行一次,场景是我们可能希望一个任务隔一段时间后再执行
  • etinterval()函数是每隔一段时间便执行,就是会一直循环执行,如果想停止的话可以使用clearinterval

3.跑马灯实现原理

  • 第一步:计算跑马灯文字长度
  • 第二步:每隔一段时间,移动一点距离,产生移动
  • 第三步:当移出屏幕,重置跑马灯的距离为屏幕宽度,然后就可以继续循环第一步操作了
  • 根据代码君说的这几步,读者可以去一一对照代码,方法函数runMarquee里面的代码逻辑就是执行以上三步,在此代码君就不过多解释了

总结

以上就是跑马灯效果的整个流程,原理也不是很难,一个计时器,轻松就可以实现。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 判断Flash是否加载完成的代码
Apr 12 Javascript
javascript数字格式化通用类 accounting.js使用
Aug 24 Javascript
JS分页控件 可用于无刷新分页
Jul 23 Javascript
js弹出确认是否删除对话框
Mar 27 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
Apr 30 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
Nov 04 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
Mar 13 Javascript
vue.js学习之递归组件
Dec 13 Javascript
JS中使用 after 伪类清除浮动实例
Mar 01 Javascript
vue系列之动态路由详解【原创】
Sep 10 Javascript
微信小程序实现日历功能
Nov 27 Javascript
浅谈JavaScript节流和防抖函数
Aug 25 Javascript
详解如何快速配置webpack多入口脚手架
Dec 28 #Javascript
详解puppeteer使用代理
Dec 27 #Javascript
Angular(5.2-&gt;6.1)升级小结
Dec 27 #Javascript
详解angular2 控制视图的封装模式
Dec 27 #Javascript
JavaScript原型对象原理与应用分析
Dec 27 #Javascript
angular6 填坑之sdk的方法
Dec 27 #Javascript
react+ant design实现Table的增、删、改的示例代码
Dec 27 #Javascript
You might like
php输出表格的实现代码(修正版)
2010/12/29 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
php在linux下检测mysql同步状态的方法
2015/01/15 PHP
XP折叠菜单&amp;仿QQ2006菜单
2006/12/16 Javascript
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
Firefox下提示illegal character并出现乱码的原因
2010/03/25 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
深入解析Javascript闭包的功能及实现方法
2016/07/10 Javascript
打造自己的jQuery插件入门教程
2016/09/23 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
2018/11/08 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
Python中的descriptor描述器简明使用指南
2016/06/02 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
python实现反转部分单向链表
2018/09/27 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
超简单的Python HTTP服务
2019/07/22 Python
Python 绘制可视化折线图
2020/07/22 Python
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
.NET是怎么支持多种语言的
2015/02/24 面试题
教师评优的个人自我评价分享
2013/09/19 职场文书
市场营销专科应届生求职信
2013/11/24 职场文书
《乡下孩子》教学反思
2014/04/17 职场文书
旅游与环境专业求职信
2014/06/05 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
Golang日志包的使用
2022/04/20 Golang
python计算列表元素与乘积详情
2022/08/05 Python