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


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 相关文章推荐
cssQuery()的下载与使用方法
Jan 12 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
Mar 15 Javascript
jQuery中extend函数详解
Feb 13 Javascript
jQuery检测返回值的数据类型
Jul 13 Javascript
jQuery插件实现静态HTML验证码校验
Nov 06 Javascript
详解Javascript中的原型OOP
Oct 12 Javascript
js禁止Backspace键使浏览器后退的实现方法
Sep 01 Javascript
Vue.js 2.x之组件的定义和注册图文详解
Jun 19 Javascript
原生JS实现的简单小钟表功能示例
Aug 30 Javascript
openlayers4实现点动态扩散
Aug 17 Javascript
详解Node.js如何处理ES6模块
May 15 Javascript
vue生命周期钩子函数以及触发时机
Apr 26 Vue.js
详解如何快速配置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
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
php 数学运算验证码实现代码
2009/10/11 PHP
PHP sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
Yii基于数组和对象的Model查询技巧实例详解
2015/12/28 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
JQuery开发的数独游戏代码
2010/10/29 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
js替换字符串中所有指定的字符(实现代码)
2016/08/17 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
python发送arp欺骗攻击代码分析
2014/01/16 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
美国工业用品采购网站:Zoro.com
2020/10/27 全球购物
会计岗位职责
2013/11/08 职场文书
小学生演讲稿
2014/01/12 职场文书
物流创业计划书
2014/02/01 职场文书
联谊会主持词
2014/03/26 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
2014年手术室工作总结
2014/11/26 职场文书
鼋头渚导游词
2015/02/05 职场文书
2015年小学二年级班主任工作总结
2015/05/21 职场文书
利用Nginx代理如何解决前端跨域问题详析
2021/04/02 Servers
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript
React配置子路由的实现
2021/06/03 Javascript